免責聲明: Eclipse 3.2 中的 org.eclipse.ui.menus
延伸點只有局部實作。
它目前不支援功能表或工具列定義或延伸規格(這些都應該使用現有的構成要素延伸規格)。
不過,它是可用來將「修剪」小組件提供給工作台的唯一機制。
這個區段示範如何將它用在這個用途上。
「修剪」小組件是一個定位於工作台視窗外層界限某位置(稱為「修剪區」)的控制項。 一般「狀態行」是最常見的範例,幾乎所有 GUI 都將它放在視窗底端。 org.eclipse.ui.menus 延伸點可讓外掛程式將視圖加到工作台中。 提供修剪的外掛程式必須將修剪登錄在它們的 plugin.xml 檔中,且必須提供修剪的配置資訊,例如,它的實作類別、它所在的修剪群組(修剪列),以及在修剪區內的版面期間,修剪是否想要使用可用的「額外」空間。
所提供之修剪的介面定義在 IWorkbenchWidget 中,但外掛程式可以(事實上是最好)選擇繼承 AbstractWorkbenchTrimWidget 類別,而不是從頭開始實作這個介面。
對於 Readme 工具範例,我們提供了非常初步的修剪小組件,它只會顯示一個字串,以及修剪目前駐留於哪一邊的指示。
我們看看用來提供這段修剪的延伸點定義:
延伸規格的第一個區段('group' 定義)只是定義群組的 ID,以及將群組的 'location' 定義成在 'status' 群組的開頭(也就是在底端修剪區的開頭)。 第二個區段('widget' 定義)指定小組件的實作 'class',以及將小組件的 'location' 定義成在先前所定義的群組內。
請注意,在這兩個情況中,列的 'type' 定義為 trim(目前只支援這個類型)。
安裝好實際的 readmetool
範例之後,請查看 ReadmeTrimWidget 的 fill
方法實作。
這不同於將小組件加到工具列或功能表時所用的其他 fill
方法,不同之處在於,
由於修剪可以在區域之間拖曳,它也會通過修剪要放在其中的「邊」,這可讓實作者根據小組件的位置,藉由變更定向等等,來裁剪小組件的顯示。
現行實作只會變更顯示的文字來反映現行位置。
另外,也請注意 'dispose'/'fill' 生命週期的處理方式;工作台變更會產生重複的 dispose
和 fill
呼叫(也就是變更視景,或將修剪拖曳到新的邊上)。
修剪版面管理者對於修剪所適當實作的小組件控制項 computeSize
方法的信任,未反映在這個範例程式碼中。
小組件必須能夠計算和傳回它「偏好的」大小,因為整個版面管理實作都以此來判斷例如特定修剪區域需要多少空間。
請參閱 SWT 文件,以取得如何正確實作 'computeSize
的注意事項。