从e4开始,eclipse rcp界面具备了深度自定义的能力。
但是在eclipse3.7.2上,几乎没有提供能够用于修改界面的外部接口。
这里介绍一种方式来自定义你自己的eclipse rcp。
先看如下对比图:
可以看到有如下不同:
1、整体风格扁平化了,没有沿用win7的玻璃外框
2、横向的Menu被去掉了,整合到了左上角的按钮
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
比如:
View Code
TrimLayout并不适合继承,所以我copy了一份出来,加入了"Bar"区域和"ICON"区域
以上 就完成了基本的改写。