說明:這個延伸點是用來將動作新增到其他外掛程式所登錄的檢視畫面的功能表和工具列中。 每個檢視畫面都有一個本端下拉功能表,通常按一下檢視畫面的右上角區域可以啟動它。 其他外掛程式可以提供子功能表和動作到這個功能表中。 外掛程式也提供動作到檢視畫面工具列中。 檢視擁有者最先有機會移入這些區域。 其他外掛程式的選用新增內容會附加在後面。
配置標記:
<!ELEMENT viewContribution (menu | action)*>
<!ATTLIST viewContribution
id
CDATA #REQUIRED
targetID CDATA #REQUIRED
>
<!ELEMENT menu (separator)+>id - 可用來參照這項構成要素的唯一識別碼。 targetID - 取得所構成要素之檢視畫面(如登錄所指定)的唯一識別碼。
<!ELEMENT action (selection)* (enablement)?>name - 之後可作為動作路徑中最後一個記號來參照的分隔字元名稱。因此,分隔字元可作為動作可新增其中的具名群組。
在第 2.0 版的 Eclipse 中,enablement 元素可用來定義是否要啟用動作。 如需如何使用 enablement 元素的詳細資訊,請參閱 actionExpressions.html。開始時,動作延伸項目的啟用準則是由 enablesFor、 selection 及 enablement 來定義的。不過,在建立好動作委派的實例之後,它會直接在其 selectionChanged 方法中控制動作啟用狀態。
動作和功能表標籤可能包含特定的字元編碼助記符號,助記符號是利用可翻譯文字中的助記字元前面加上 '&' 字元來指定的。 由於 XML 字串中不能使用&符號,請使用 & 字元實體。
如果透過單一延伸項目提供兩個或以上動作給功能表或工具列, 這些動作將按它們出現在 plugin.xml 檔的相反順序出現。這種行為是一般公認的非直覺行為。然而,在「Eclipse 平台 API」凍結後,已探索過它。現在變更行為將中斷每一個依賴現存之行為的外掛程式。
範例:
以下是檢視畫面動作延伸點的範例(請注意子元素和屬性的使用方式):
<extension point="org.eclipse.ui.viewActions">
<viewContribution
id="com.xyz.xyzViewC1"
targetID="org.eclipse.ui.views.ResourceNavigator">
<menu id="com.xyz.xyzMenu"
label="XYZ Menu"
path="additions">
<separator name="group1"/>
</menu>
<action id="com.xyz.runXYZ"
label="&Run XYZ Tool"
menubarPath="com.xyz.xyzMenu/group1"
toolbarPath="Normal/XYZ"
icon="icons/runXYZ.gif"
tooltip="Run XYZ Tool"
helpContextId="com.xyz.run_action_context"
class="com.xyz.actions.RunXYZ"
enablesFor="1"/>
<selection class="org.eclipse.core.resources.IFile" name="*.java">
</action>
</viewContribution>
</extension>
在上述範例中,只有單一選項能夠啟用指定的動作(enablesFor 屬性)。 另外,這個選項中的每個物件都必須實作指定的介面(IFile),且必須是 Java 檔。 您可以指定多個 selection 元素,表示 'one of'。
API 資訊:class 屬性值必須是實作 org.eclipse.ui.IViewActionDelegate 之 Java 類別的完整名稱。 這個介面的載入要儘可能晚,以避免在真正需要它之前載入整個外掛程式。 它延伸 org.eclipse.ui.IActionDelegate 並新增一個額外方法容許提供所至的檢視畫面實例來起始設定委派。
提供的實作:每個檢視畫面通常都會檢附下拉功能表和本端工具列中的標準項目數。 其他外掛程式所提供的新增內容會附加到標準補充之中。在公開介面內公佈檢視畫面的動作識別碼非常有用。 例如,工作台視窗的動作和主要群組都定義在 org.eclipse.ui.IWorkbenchActionConstants 中。