當外掛程式使用其中一個功能表延伸點來提供動作給工作台 UI 時, 它可以指定在功能表中啟用及/或看得到功能表項目的條件。除了提供簡單啟用條件之外,如選項計數和選項類別, 外掛程式還可以使用 Boolean 表示式來取得更多的彈性,以決定動作可見或啟用的時間。
Boolean 表示式可以包含和預先定義語法結合的 Boolean 運算子(NOT、AND、OR),以評估某些條件。 這些條件中有許多條件測試特定的物件。object in focus(要進行測試的物件)的身分識別視啟用表示式之特定環境定義而定。
除了順利成功下列轉換作業,否則在指定要針對任何這些表示式進行測試的值時,都會假設值是字串:
您可以在定義啟用元素之任何延伸的延伸點參考文件中,找到啟用 XML 語法的完整定義,例如 org.eclipse.ui.popupMenus。
在 R3.0 之前,無法使用這些一般性的 Boolean 表示式。而是使用下列預先定義的表示式,來評估某些條件,而不建置一般表示式。請注意,現在任何這些表示式都可以用更普通的語法來表示。您仍然可以如下所示,使用預先定義的表示式:
objectClass - True,如果每一個物件都在選項子類別中或實作這個類別。
objectState - True,如果具名屬性等於指定的值。IActionFilter 協助評估表示式。動作過濾器依據目標選項和具名屬性值動態地計算動作的啟用準則。
systemProperty - True,如果具名系統內容等於指定的值。
pluginState - 指出應該安裝或啟動特定的外掛程式(依 ID)
例如,下列片段代表動作集中假設動作所使用的啟用表示式:
<action id="org.eclipse.examples.actionEnablement.class" label="Red Element" menubarPath="additions" class="org.eclipse.examples.actionEnablement.ObjectTestAction"> <enablement> <and> <objectClass name="org.eclipse.examples.actionEnablement.TestElement"/> <objectState name="name" value="red"/> </and> </enablement> </action>
<action id="org.eclipse.examples.actionEnablement.property" label="Property" menubarPath="additions" class="org.eclipse.examples.actionEnablement.PropertyTestAction"> <enablement> <systemProperty name="MyTestProperty" value="puppy"/> </enablement> </action>
<action id="org.eclipse.examples.actionEnablement.pluginState" label="Installed" menubarPath="additions" class="org.eclipse.examples.actionEnablement.PluginTestAction"> <enablement> <pluginState id="x.y.z.anotherPlugin" value="installed"/> </enablement> </action>
請參閱延伸點的參考文件,以取得這些表示式精心製作的範例和 XML 的完整說明。
下列表格列出提供動作的延伸點並彙總如何使用 XML 標記屬性和 Boolean 表示式來影響啟用。
延伸點名稱 |
屬性影響啟用 |
Boolean 表示式 |
---|---|---|
enablesFor - 指出必須達到啟用動作的選項計數。 selection class - 所選物件必須是其子類別或實作,動作才能啟用的類別 selection name - 可套用到選項中之物件的萬用字元過濾器。 |
visibility - Boolean 表示式。控制是否能在功能表中看到功能表項目。 enablement - Boolean 表示式。控制是否在功能表中啟用功能表項目。 在套用啟用表示式之前,必須滿足 enablesFor 屬性以及 selection class 和 name。 |
|
(物件構成要素專屬。) objectClass - 指定選項中物件的類別必須為子類別或實作。 (適用於物件和檢視器構成要素兩者) enablesFor - 指出必須達到啟用動作的選項計數。 selection class - 已選取物件的類別必須為子類別,或實作以啟用動作。 selection name - 可套用到選項中之物件的萬用字元過濾器。
|
(適用於物件和檢視器構成要素兩者) visibility - Boolean 表示式。控制是否能在功能表中看到功能表項目。 enablement - Boolean 表示式。控制是否在功能表中啟用功能表項目。 在套用啟用表示式之前,必須滿足 enablesFor 屬性以及 selection class 和 name。 |
定義內容類型的功能(請參閱內容類型)可以結合 Boolean 表示式,根據資源的內容類型來定義非常特定的啟用或可見性條件。例如,下列片段只有在選取檔案的內容符合外掛程式的特殊化內容類型時,才會出現蹦現功能表項目。
<extension point="org.eclipse.ui.popupMenus"> <objectContribution id="com.example.objectContributions" objectClass="org.eclipse.core.resources.IFile" nameFilter="*.xml"> <visibility> <or> <objectState name="contentTypeId" value="com.example.employeeRecordContentType"/> <objectState name="contentTypeId" value="com.example.customerRecordContentType"/> </or> </visibility> <action id="com.example.action1" ...contentTypeId 屬性可以在 objectState 表示式中用來檢查選取之 xml 檔的內容類型。這可讓外掛程式在啟用或顯示特定檔案類型相關的功能表動作之前,套用非常特定的內容檢查。請參閱內容類型以取得關於內容類型延伸的詳細資料。