メニュー拡張ポイントのいずれかを使用してプラグインがワークベンチ UI にアクションを組み込むとき、 プラグインは、メニュー内でメニュー項目を可視および/または使用可能にする条件を指定できます。 選択カウントおよび選択クラスなど、簡単な使用可能化条件の提供に加え、 プラグインはブール式を使用してアクションを可視または使用可能にできます。
ブール式には、簡単なブール演算子 (NOT、AND、OR) および以下の条件を評価できる事前定義式を組み込むことができます。
objectClass - 選択内の各オブジェクトがクラスをサブクラス化、または実装している場合は真。
objectState - 名前付き属性が指定された値と等しい場合は真。 IActionFilter は式の評価を支援します。 アクション・フィルターは、ターゲット選択および名前付き属性の値に基づき、アクションの使用可能性基準を動的に計算します。
systemProperty - 名前付きシステム・プロパティーが指定された値と等しい場合は真。
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 マークアップ属性およびブール式を使用して使用可能性に影響を与える方法も要約されています。
拡張ポイント名 |
使用可能性に影響を与える属性 |
ブール式 |
---|---|---|
enablesFor - 使用可能になるアクションに適合する必要のある選択カウントを指定します。 selection class - アクションを使用可能にするため、選択オブジェクトがサブクラス化または実装する必要のあるクラス。 selection name - 選択内のオブジェクトに適用できるワイルドカード・フィルター。 |
visibility - ブール式。 メニュー項目をメニューに表示するかどうかを制御します。 enablement - ブール式。 メニュー項目をメニューで使用可能にするかどうかを制御します。 enablesFor 属性、selection class、および name は、Enablement 式を 適用する前に基準を満たしている必要があります。 |
|
(オブジェクト contribution の場合のみ) objectClass - 選択内のオブジェクトがサブクラス化または実装する必要のあるクラスを指定します。 (オブジェクト contribution とビューアー contribution の両方の場合) enablesFor - 使用可能になるアクションに適合する必要のある選択カウントを指定します。 selection class - アクションを使用可能にするため、選択オブジェクトがサブクラス化または実装する必要のあるクラス。 selection name - 選択内のオブジェクトに適用できるワイルドカード・フィルター。
|
(オブジェクト contribution とビューアー contribution の両方の場合) visibility - ブール式。 メニュー項目をメニューに表示するかどうかを制御します。 enablement - ブール式。 メニュー項目をメニューで使用可能にするかどうかを制御します。 enablesFor 属性、selection class、および name は、Enablement 式を 適用する前に基準を満たしている必要があります。 |
コンテンツ型 (『コンテンツ型』を参照) を定義する機能は、ブール式と組み合わせることによって、
リソースのコンテンツ型に基づく非常に特化した使用可能性条件または可視性条件を定義できます。
例えば、次の断片では、選択したファイルのコンテンツがプラグインの特殊なコンテンツ型と一致する場合に、
ポップアップ・メニュー項目が表示されます。
<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 ファイルのコンテンツ型を検査できます。
これによって、プラグインは、特定のファイルの型に関連するメニュー・アクションを使用可能にする、または表示する前に、
非常に特殊なコンテンツ検査を適用できます。
コンテンツ型の拡張について詳しくは、『コンテンツ型』を参照してください。