說明:這個延伸點係用來在其他外掛程式所登錄的檢視畫面的下拉功能表和工具列中加入動作。 每個檢視畫面都有一個本端下拉功能表,通常按一下右上角三角形按鈕就可以啟動它。 其他外掛程式可以提供子功能表和動作到這個功能表中。 外掛程式也提供動作到檢視畫面工具列中。 檢視擁有者最先有機會移入這些區域。 其他外掛程式的選用新增內容會附加在後面。
您可以分別使用 enablement 和 visibility 元素, 來定義動作的啟用狀態及/或可見性狀態。這兩個元素含有一個 boolean 表示式, 將被計算以決定啟用及/或可見性的狀態。
enablement 元素和 visibility 元素的語法是相同的。 這兩者僅含有一個 boolean 表示式子元素。在最簡單的情況中, 這將是 objectClass、objectState、pluginState 或 systemProperty 元素。 在其他較複雜的情況中,and、or 及 not 元素可以結合以構成 boolean 表示式。and 和 or 元素兩者必須含有 2 個子元素。not 元素必須僅含有 1 個子元素。
配置標記:
<!ELEMENT extension (viewContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA
#IMPLIED
name CDATA #IMPLIED
>
<!ELEMENT viewContribution (menu* , action*)>
這個元素係用來定義檢視畫面動作及/或功能表的群組。
<!ATTLIST viewContribution<!ELEMENT action (selection* | enablement?)>
這個元素定義使用者可在 UI 中呼叫的動作。
<!ATTLIST actionpush | - 作為一般功能表項目或工具項目。 | |
radio | - 作為圓鈕樣式功能表項目或工具項目。在同一功能表或工具列群組內具有圓鈕樣式的動作將當作圓鈕集來操作。起始值是由 state 屬性指定。 | |
toggle | - 作為已勾選的樣式功能表項目或作為切換工具項目。起始值是由 state 屬性指定。 |
! | - 選取 0 個項目 | |
? | - 選取 0 或 1 個項目 | |
+ | - 選取 1 或多個項目 | |
multiple, 2+ | - 選取 2 或更多個項目 | |
n | - 選取精確數目的項目。 例如:enablesFor=" 4" 僅在選取了 4 個項目時,才啟用動作 | |
* | - 選取任意數目的項目 |
<!ELEMENT menu (separator+ , groupMarker*)>
這個元素係用來定義新的功能表。
<!ATTLIST menu<!ELEMENT separator EMPTY>
這個元素係用來在新功能表中建立功能表分隔符號。
<!ATTLIST separator<!ELEMENT groupMarker EMPTY>
這個元素係用來在新功能表中建立具名群組。不同於 separator 元素, 它在新功能表中沒有任何視覺化表示法。
<!ATTLIST groupMarker<!ELEMENT selection EMPTY>
這個元素係用來協助根據現行選擇,來判定動作的啟用狀態。如果指定了 enablement 元素,將予以忽略。
<!ATTLIST selection<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
這個元素係用來定義動作的啟用狀態。
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
這個元素係用來定義動作的可見性狀態。
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
這個元素代表 boolean AND 運算,以算出它的兩個子元素表示式的結果。
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
這個元素代表 boolean OR 運算,以算出它的兩個子元素表示式的結果。
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
這個元素代表 boolean NOT 運算,以算出它的子元素表示式的結果。
<!ELEMENT objectClass EMPTY>
這個元素係用來計算現行選擇中每個物件的類別或介面。 如果選擇中的每個物件都實作指定的類別或介面,則表示式將計算為 true。
<!ATTLIST objectClass<!ELEMENT objectState EMPTY>
這個元素係用來計算現行選擇中每個物件的屬性狀態。 如果選擇中的每個物件都具有指定的屬性狀態,則表示式將計算為 true。 如果要計算這種類型的表示式,則選擇中的每個物件都必須實作或適合於 org.eclipse.ui.IActionFilter 介面。
<!ATTLIST objectState<!ELEMENT pluginState EMPTY>
這個元素係用來計算外掛程式的狀態。外掛程式的狀態可以是下列之一:installed 或 activated。
<!ATTLIST pluginState<!ELEMENT systemProperty EMPTY>
這個元素係用來計算某個系統內容的狀態。內容值擷取自 java.lang.System。
<!ATTLIST systemProperty
<extension point="org.eclipse.ui.viewActions"> <viewContribution id="com.xyz.xyzViewC1" targetID="org.eclipse.ui.views.navigator.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/additions" style="toggle" state="true" icon="icons/runXYZ.gif" tooltip="Run XYZ Tool" helpContextId="com.xyz.run_action_context" class="com.xyz.actions.RunXYZ"> <selection class="org.eclipse.core.resources.IFile" name="*.java"/> </action> </viewContribution> </extension>
在上述範例中,只有單一選項能夠啟用指定的動作(enablesFor 屬性)。 此外,選擇中的物件必須是 Java 檔案資源。
以下是檢視畫面動作延伸項目的其他範例:
<extension point="org.eclipse.ui.viewActions"> <viewContribution id="com.xyz.xyzViewC1" targetID="org.eclipse.ui.views.navigator.ResourceNavigator"> <menu id="com.xyz.xyzMenu" label="XYZ Menu" path="additions"> <separator name="group1"/> </menu> <action id="com.xyz.runXYZ2" label="&Run XYZ2 Tool" menubarPath="com.xyz.xyzMenu/group1" style="push" icon="icons/runXYZ2.gif" tooltip="Run XYZ2 Tool" helpContextId="com.xyz.run_action_context2" class="com.xyz.actions.RunXYZ2"> <enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <not> <objectState name="extension" value="java"/> </not> </and> </enablement> </action> </editorContribution> </extension>
在上述範例中,指定的動作將以功能表項目出現。當選擇沒有 Java 檔案資源時,就會啟用這個動作。
API 資訊:class 屬性值必須是實作 org.eclipse.ui.IViewActionDelegate 之 Java 類別的完整名稱。 這個類別的載入要儘可能晚,以避免在真正需要它之前載入整個外掛程式。
org.eclipse.ui.IViewActionDelegate 介面延伸 org.eclipse.ui.IActionDelegate, 並新增一個額外方法,容許提供至其中的檢視畫面實例來起始設定委派。
這個延伸點可用來提供動作到目標檢視畫面先前所建立的功能表中。如果略過 menu path 屬性, 則結果會在下拉功能表尾端加入新功能表或動作。
動作延伸項目的啟用準則起初是由 enablesFor, 而且也由 selection 或 enablement 定義。不過,在建立好動作委派的實例之後, 它可以在它的 selectionChanged 方法內直接控制動作啟用狀態。
動作和功能表標籤可含有利用下列規則來編碼助記鍵的特殊字元:
selection 和 enablement 元素互斥。 enablement 元素可以使用 objectClass 和 objectState 子元素, 來取代 selection 元素。例如,下列:
<selection class="org.eclipse.core.resources.IFile" name="*.java"> </selection>可以表示成:
<enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <objectState name="extension" value="java"/> </and> </enablement>
提供的實作:每個檢視畫面通常都會檢附下拉功能表和本端工具列中的標準項目數。 來自其他外掛程式的新增內容將附加至標準增補中。
Copyright (c) 2000, 2003 IBM Corporation and others.
All rights reserved.
這個程式和伴隨的素材可以根據伴隨這個分送,而且可在 http://www.eclipse.org/legal/cpl-v10.html 中取得的 Common Public License v1.0 的條款來使用