您的外掛程式可以利用 org.eclipse.ui.actionSets 延伸點來提供功能表、功能表項目及工具列項目到工作台功能表和工具列中。 如果要減少同時顯示每個外掛程式的功能表構成要素所造成的雜亂,您可以將這些構成要素分組到動作集中,而依使用者喜好設定來顯示它們。
您可以從工作台功能表中選取視景 ->自訂... 來了解已提供哪些動作集到您的工作台中。 這會顯示一個對話框來列出所有可用的動作集。 動作集勾號表示在工作台中可以見到功能表和工具列動作。 您可以選取動作集的名稱來查看右側的可用動作清單。 下圖顯示工作台中可用動作集的清單。(隨著已安裝的外掛程式及作用中的視景之不同,您的工作台可能會有不同的外觀。)
Readme 工具會利用一個動作集來將"開啟 Readme 瀏覽器"動作新增到工作台功能表中。(我們提供了類似的動作到資源導覽器的蹦現功能表中 標記如下:
<extension
point = "org.eclipse.ui.actionSets">
<actionSet id="org_eclipse_ui_examples_readmetool_actionSet"
label="ReadMe 動作"
visible="true">
<menu id="org_eclipse_ui_examples_readmetool"
label="Readme 和檔案編輯器"
path="window/additions">
<separator name="slot1"/>
<separator name="slot2"/>
<separator name="slot3"/>
</menu>
<action id="org_eclipse_ui_examples_readmetool_readmeAction"
menubarPath="window/org_eclipse_ui_examples_readmetool/slot1"
toolbarPath="readme"
label="&開啟 Readme 瀏覽器@Ctrl+R"
tooltip="開啟 Readme 瀏覽器"
helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
icon="icons/basic/ctool16/openbrwsr.gif"
class="org.eclipse.ui.examples.readmetool.WindowActionDelegate"
enablesFor="1">
<selection
class="org.eclipse.core.resources.IFile"
name="*.readme">
</selection>
</action>
</actionSet>
</extension>
這裡有好多東西!現在,我們要逐步處理它。
首先是宣告動作集及提供一個標籤給它。"ReadMe 動作"標籤用於在上述對話框中顯示動作集。 由於我們將 visible 設為 true,因此,工作台開始時會在動作集清單中勾選動作集,動作將是可見的。
動作集宣告的其餘部份是關於動作出現其中的功能表及動作本身的定義。
我們定義一個工作台功能表會顯示其標籤("Readme 和檔案編輯器")的功能表。 這個功能表的路徑告訴工作台將新功能表放到開啟視窗功能表的 additions 槽中。 (如果需要功能表路徑和槽的相關討論,請參閱功能表和工具列路徑。) 我們在新功能表中定義幾個槽,可用來將動作插入功能表的特定位置中。
這樣就足以讓功能表出現在工作台視窗功能表中。
之後,我們要自行定義動作。動作定義(id、label、icon、class)類似於我們在檢視畫面、編輯器和蹦現功能表中見到的其它動作。 在這裡,我們要將焦點集中在差異:動作放在哪裡?我們使用 menubarPath 和 toolbarPath 來指出位置。 首先,我們新增動作到剛定義的功能表其中的槽中。
之後,我們再定義新的 toolbarPath 來將我們的動作插入工作台工具列中。 由於它是新的工具路徑,因此,工作台會相對於其它外掛程式的工具列構成要素來決定它要放在哪裡。
請注意,這個動作也有啟用條件。只有在選取單一 (enablesFor="1") Readme 檔 (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme") 時,才會啟用我們的新功能表項目及工具列項目。
這些功能表和工具列項目完全根據 plugin.xml 檔中的標記來呈或啟用。 在使用者選取動作且工作台執行動作類別之前,不會執行任何外掛程式碼。
如果動作集顯示為工具列中的下拉功能表項目時,動作類別必須實作 IWorkbenchWindowActionDelegate 或 IWorkbenchWindowPulldownDelegate。 由於我們沒有建立工具列下拉功能表,我們提供 WindowActionDelegate。這個類別類似於 ObjectActionDelegate。 它會在使用者選取動作時,啟動 Readme 區段對話框。我們將在「應用程式」對話框中見到這些區段對話框。