天天看點

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"區域

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