天天看点

RCP:美化基于eclipse3.7.2的RCP界面

从e4开始,eclipse rcp界面具备了深度自定义的能力。

但是在eclipse3.7.2上,几乎没有提供能够用于修改界面的外部接口。

这里介绍一种方式来自定义你自己的eclipse rcp。

先看如下对比图:

可以看到有如下不同:

1、整体风格扁平化了,没有沿用win7的玻璃外框

2、横向的Menu被去掉了,整合到了左上角的按钮

RCP:美化基于eclipse3.7.2的RCP界面

3、视图的签页扁平化了

这只是一些示例,学习了以下方法,我们可以做更多的深度定制。

首先我们需要知道eclipse的工作台结构。

我们在创建一个eclipse rcp的时候,必然会用到Application,我们来看一下eclipse提供的IDEApplication这个类的start方法,注意123行

观察IDEWorkbenchAdvisor可知,Workbench的创建被该类所代理了。

这里我们需要了解以下几个类:

Workbench 工作台(模型)

WorkbenchAdvisor 管理工作台生命周期

WorkbenchWindowAdvisor 提供ui配置,管理ui生命周期

WorkbechWindowConfigurer 配置保存类

WorbenchWindow 工作台UI(视图),基于SWT的界面类,实际上的RCP界面容器

于是,我们可以知道,只要能重写自己的WorbenchWindow,就能够达成目标。方式如下:

1、提供一个AimWorkbenchAdvisor的子类,用于替换IDEApplication中的IDEWorkbenchAdvisor实例。

2、替换WorkbenchWindow,通过Tweaklets.setDefault这个静态方法调用来实现

3、(可选)提供一个新的AimWorkbenchWindowAdvisor,用于屏蔽menu、perspectiveBar等操作。代码如下:

完成了以上,我们就具备了自定义WorkbenchWindow的能力。

如果你不需要对RCP的外框、布局等进行修改,到了这一步其实就已经完成了。

如果希望深入定制,则需要更多知识。

首先需要学习TrimLayout,eclipse使用它作为基本布局,TrimLayout根据每个控件的ID,来针对性的排布。

主要分为四个部分,top,left,right,bottom

对TrimLayout进行改造,则可以重新布局。

重写WorkbenchWindow#createDefaultContents方法

在调用super.createDefaultContents之后,为shell重新设置一个你自己的TrimLayout

比如:

RCP:美化基于eclipse3.7.2的RCP界面
RCP:美化基于eclipse3.7.2的RCP界面

View Code

TrimLayout并不适合继承,所以我copy了一份出来,加入了"Bar"区域和"ICON"区域

以上 就完成了基本的改写。