Eclipse外观和感觉的定制化

5

我需要自定义我的 RCP 应用程序的外观和感觉。

我查看了 Eclipse Presentation API,我认为它可以允许定制工作台中的所有内容,除了控件。

那么,有没有任何解决方案可以定制控件呢?

我进行了一些研究,并使用控件画布绘制实现了一些临时 SWT 定制。也许有更好的解决方案吗?

在 Swing 中,您可以使用 Synth 主题。如果有一些用于 SWT 的“皮肤”框架,那将是非常棒的。

2个回答

6
一种自定义RCP应用程序的方法是使用plugin_customization.ini文件。如下所示:
  1. 在您的项目根目录中创建一个名为“plugin_customization.ini”的新文件。
  2. 如果尚未执行此操作,请创建产品配置并定义产品。
  3. 在插件的清单编辑器中,在“扩展”选项卡上,定位“org.eclipse.core.runtime.products”扩展,展开节点,在您的产品节点上右键单击,并从上下文菜单中选择“New > property”。
  4. 在“name”字段中输入“preferenceCustomization”,在“value”字段中输入“plugin_customization.ini”。
  5. 从主菜单中选择“File > Save”。
然后,您可以通过编辑plugin_customization.ini文件来简单地自定义许多内容。例如,添加以下行:
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false

将会给你的视图和编辑器提供圆形的选项卡(类似于Eclipse IDE的选项卡)而不是默认的选项卡。
您可以在IWorkbenchPreferenceConstants javadoc中找到其他可用的常量。

此外,如果您还没有,请查看Eclipse skins项目。

还有一种可能性是使用CSS来改变应用程序的外观和感觉,但这仍处于开发阶段,可能存在错误。

至于自定义SWT控件本身,除了进行小的自定义(例如更改控件的背景颜色等),唯一的方法就是通过扩展Canvas或Composite来创建自己的自定义控件,但您已经知道这一点。请记住,SWT的重点是使用本机控件,因此如果您希望完全自定义控件,则使用Swing可能是更好的选择。但是,如果您要使用Swing,则最好使用另一个RCP,即NetBeans RCP。我还没有尝试过它,但我知道,虽然Eclipse RCP使用SWT作为小部件工具包,但NetBeans RCP依赖于Swing,因此这可能会使您免受兼容性问题等方面的困扰。


非常感谢您提供如此全面的回复。我更喜欢Eclipse RCP而不是NetBeans RCP,但在当前解决方案中,我通过将Swing控件注入到SWT表单中来实现皮肤支持。这有点棘手,我想从应用程序中排除任何Swing依赖项。我将尝试使用Eclipse skins项目。我认为,也许使用一些矢量渲染来为SWT控件实现皮肤支持是一个好主意? - Viktor Stolbin
@Viktor Griffo - 很高兴能帮忙!正如我之前所说的 - SWT 控件是本地控件,它们由操作系统绘制,所以在应用层面上真的没有太多可以做的来改变它们的外观。你只能根据操作系统的允许进行自定义。例如,在 Windows 上,你不能为按钮设置背景图片,因为该操作系统不允许这样做。 - Sandman
是的,我明白了。我使用http://freshmeat.net/projects/rcptoolbox来自定义控件。我猜那些控件是基于可定制的复合控件和画布实现的? - Viktor Stolbin

2
新的Eclipse 4工作包含插件,允许使用CSS自定义L&F。这些插件可以在3.7 Eclipse环境中运行。有关此主题的演示,请参见Kai的博客:http://www.toedter.com/blog/?p=477 Eclipse 4样式教程中有一张幻灯片(第66页),介绍如何获取基于3.7的RCP示例。

1
我大约10个月前看了一下Eclipse 4,以决定它是否可以用于我的项目。它看起来有点有bug。CSS样式是一个不错的解决方案,但我需要实现完全重新设计的GUI,就像Swing Synth允许的那样。 - Viktor Stolbin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接