我正在开发一个Eclipse插件,它需要修改Eclipse核心包中的类。我想编写自己的org.eclipse.swt.StyledText(不通过源代码扩展副本并修改一些行为)并在org.eclipse.jface.text.TextViewer中实例化它而不是默认的StyledText。
似乎修改TextViewer的最佳方法是创建我自己的org.eclipse.jface插件版本并将其发布到一个功能项目中。
但是为swt包添加一个类似乎更难,首先是因为根据所使用的操作系统(org.eclipse.swt.cocoa,org.eclipse.swt.gtk ....)而存在不同的jar,也因为副本粘贴StyledText的代码并不容易,因为调用外部方法等待严格的StyledText。
有什么想法吗?
答案 0 :(得分:1)
我做了与org.eclipse.jface.preference.ColorSelector
类似的事情。我真的需要一个可以接受 null 值的颜色小部件。如果不重构小部件,这将是不可能。
由于覆盖相应的类是不够的,因为封装了很多功能,我也想直接修改整个类。
然后,正如格雷格和巴兹提到的,这是一个维持地狱。假设您想在RCP插件中包含您的这个小部件。那你做什么的? RCP平台提供自己的SWT包。
我的解决方案简单明了。您将整个类复制粘贴到您自己的新类中,只需在您的应用中使用该类即可。
但在您的情况下,您似乎正在访问多个班级(TextViewer
和StyledText
)。如果所需行为超出平台功能,我仍然会使用复制粘贴方法。