org.eclipse.ui.actionSets

您的外掛程式可以利用 org.eclipse.ui.actionSets 延伸點來提供功能表、功能表項目及工具列項目到工作台功能表和工具列中。 如果要減少同時顯示每個外掛程式的功能表構成要素所造成的雜亂,您可以將這些構成要素分組到動作集中,而依使用者喜好設定來顯示它們。

您可以從工作台功能表中選取視窗 ->自訂視景... 來瞭解已提供哪些動作集到您的工作台中。 這個選項將顯示以指令群組列出動作集的對話框。指令群組旁邊的勾號表示在工作台中可以看見這些功能表和工具列動作。您可以選取指令群組的名稱,在右邊查看可用的功能表和工具列動作清單。下圖顯示工作台中可用指令群組的清單。 (隨著已安裝的外掛程式及作用中的視景而不同,您的工作台可能會有不同的外觀。)

自訂視景對話框和動作集清單

Readme 工具會利用一個動作集來將一些不同的「開啟 Readme 瀏覽器」動作新增到工作台功能表中。(我們提供了類似的動作到資源導覽器的蹦現功能表中。) 標記如下:

<extension point = "org.eclipse.ui.actionSets">	   <actionSet id="org_eclipse_ui_examples_readmetool_actionSet"
		   label="%ActionSet.name"
		   visible="true">
		   <menu id="org_eclipse_ui_examples_readmetool"
			   label="%ActionSet.menu"
			   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="%ReadmeAction.label"
			   tooltip="%ReadmeAction.tooltip"
			   helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
			   icon="icons/ctool16/openbrwsr.png"
			   class="org.eclipse.ui.examples.readmetool.WindowActionDelegate"
			   enablesFor="1">
			   <selection class="org.eclipse.core.resources.IFile"
					name="*.readme">
			   </selection>
		   </action>
		   ...
	   </actionSet>
   </extension>

這裡有好多動作;步驟!現在,尋找第一個動作來逐步處理它。

首先是宣告動作集及提供一個標籤給它。「ReadMe 動作」(外掛程式內容檔中為 %ActionSet.name 鍵所定義的)標籤用於在上述對話框中顯示動作集。 由於我們將 visible 設為 true,因此,工作台開始時會在動作集清單中勾選動作集,動作將是可見的。

動作集宣告的其餘部分是關於動作出現其中的功能表及動作本身的定義。

我們定義一個工作台功能表會顯示其標籤的功能表。 這個功能表的路徑告訴工作台將新功能表放到開啟視窗功能表的其他槽中。(如果需要功能表路徑和槽的相關討論,請參閱功能表和工具列路徑。) 我們也在新功能表中定義幾個槽,可用來將插入動作至功能表的特定位置中。

單獨這個標記就足以讓功能表出現在工作台視窗功能表中。

工作台「視窗」功能表有「Readme 檔編輯器」項目

下一步,我們自行定義動作。

動作定義(idlabeliconclass)類似於我們在視圖、編輯器和蹦現功能表中見到的其他動作。 在這裡,我們要將焦點集中在差異:動作在哪裡?我們使用 menubarPathtoolbarPath 來指出位置。 首先,我們定義 menubarPath 以新增動作到剛定義的功能表其中的槽內 ( "window/org_eclipse_ui_examples_readmetool/slot1")。

「Readme 檔編輯器」功能表有功能表項目

之後,我們再定義新的 toolbarPath 來將我們的動作插入工作台工具列中。 由於它是新的工具路徑,"readme",因此,工作台會相對於其他外掛程式的工具列構成要素來決定它要放在哪裡。

工作台工具列有 Readme 動作

使用者選取動作時時,發生什麼事了? 由 class 屬性中所指定的類別來實作這個動作。 如果動作顯示為工具列中的下拉式工具項目時,動作類別必須實作 IWorkbenchWindowActionDelegateIWorkbenchWindowPulldownDelegate。 由於沒有建立下拉式工具項目,我們提供 WindowActionDelegate。這個類別類似於 ObjectActionDelegate。 它會在使用者選取動作時,啟動 Readme 區段對話框。(我們將在「應用程式」對話框中見到這些區段對話框。)

這個動作也支援啟用功能表項目和工具列項目的條件。功能表和工具列項目只有在已選取單一(enablesFor="1")Readme 檔 (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme")才會啟用。這些功能表和工具列項目完全根據 plugin.xml 檔中的標記來呈現或啟用。 在使用者選取動作且工作台執行動作類別之前,才會執行任何外掛程式碼。

我們稍後看一下重新建立目標動作環境定義中的其他兩個動作。