説明: ブール式は、多くのアクション拡張用に可視性および使用可能性をワークベンチ内に 定義するために使用されます。 たとえば、enablement エレメントを任意のアクション拡張内に定義できます。 このエレメントには、アクション用に使用可能性の基準を定義するブール式が含まれます。 visibility エレメントは、ポップアップ・メニュー・アクション拡張用に定義できます。 このエレメントには、アクション用に使用可能性の基準を定義するブール式が含まれます。

ブール式が見つかった場所にかかわらず、式の構文は同じ書式に従います。 使用可能性または可視性のためのルート・エレメントには、sub エレメントが 1 つ含まれていることが 必要です。 最も簡単なケースでは、これは objectClassobjectStatesystemProperty、または pluginState エレメントで構成されます。 より複雑なケースでは、andornot、エレメントが組み合わされ、ブール式が 形成されることがあります。 and または or エレメントには、1 つ以上の sub エレメントが含まれる可能性があります。 not エレメントには、1 つの sub エレメントしか含むことはできません。

objectClass エレメントは、選択内の各オブジェクトのクラスを評価するために使用されます。 objectClass の名前属性には、完全修飾クラス名が含まれます。 選択内の各オブジェクトがこのクラスをインプリメントする場合、拡張は真と評価されます。

objectState エレメントは、選択内の各オブジェクトの状態を評価するために使用されます。 多くの場合、アクションの使用可能性または可視性は、選択タイプによって決定されます。 そうでない場合、これでは十分ではなく、選択状態を使用して使用可能性または可視性を決定する必要が あります。 たとえば、読み取り専用の IFile 型のすべてのオブジェクトのために、アクションを付与できます。 この読み取り専用の基準は、objectState エレメントを指定することでのみ宣言できます。 書式は次のようになります。

<objectState name="readOnly" value="true"/>
オブジェクトの属性は型に特有のものであり、ワークベンチ自身のドメインの範囲外であるため、 ワークベンチでこの式の評価を行うのは非常に困難です。 このため、ワークベンチは選択内のオブジェクトと共同で式を評価します。 これは、objectState エレメントの評価戦略である IActionFilter を使用して行われます。 objectState エレメントが評価されるとき、ワークベンチは、選択内の各オブジェクトに IActionFilter を要求します。 ワークベンチは IActionFilter をインプリメントするかどうかをテストすることで、これを 行います。 これが失敗した場合、ワークベンチは、IAdaptable 機構を通じてフィルターを要求します。 フィルターが見つかった場合、ワークベンチは objectState 属性をフィルターに渡し、 選択済みオブジェクトの状態に一致するかどうかを判別します。 一致する場合、条件は真と評価されます。 アクション・フィルターがない、または一致しない場合は、その条件は偽と評価されます。

ビューおよびエディターは、その選択内の各オブジェクトについて、IActionFilter を 定義するよう促されます。 これにより、他のプラグイン・デベロッパーのビューやエディターを、新しい、十分に修飾された アクションを使用して拡張することが容易になります。

systemProperty エレメントは、いくつかのシステム・プロパティーの状態を評価するために 使用されます。 隠れていますが、システム・プロパティーの値は System.getProperty を起動することによって決定できます。

pluginState エレメントは、プラグインの状態を評価するために使用されます。 プラグインの状態は、インストール済み、または活動化済みのいずれかになります。

リリース 2.0 以降

構成マークアップ:

   <!ELEMENT visibility (and | or | not | objectClass | objectState | systemProperty
        | pluginState)>

   <!ELEMENT enablement (and | or | not | objectClass | objectState | systemProperty
        | pluginState)>

   <!ELEMENT and (and | or | not | objectClass | objectState | systemProperty | pluginState)*>

   <!ELEMENT or (and | or | not | objectClass | objectState | systemProperty | pluginState)*>

   <!ELEMENT not (and | or | not | objectClass | objectState | systemProperty | pluginState)>

   <!ELEMENT objectClass EMPTY>
   <!ATTLIST objectClass
      name       CDATA #REQUIRED
   >

   <!ELEMENT objectState EMPTY>
   <!ATTLIST objectState
      name       CDATA #REQUIRED
      value      CDATA #REQUIRED
   >    <!ELEMENT systemProperty EMPTY>
   <!ATTLIST systemProperty
      name       CDATA #REQUIRED
      value      CDATA #REQUIRED
   >    <!ELEMENT pluginState EMPTY>
   <!ATTLIST pluginState
      id         CDATA #REQUIRED
      value      (installed | activated)
   >
  • id- プラグインの ID。プラグイン・レジストリーに登録される場合とされない場合があります。
  • value - プラグインの必要な状態。現在、installed と activated の 2 つの状態が サポートされています。
  • 例:

    以下は、使用可能性エレメントを使用するアクション・セットの例です。  アクション・セットは、ラベル List Element でメニューを宣言し、それをアクションと共に取り込みます。 このアクションは、様々な状態の ListElements の選択によって使用可能になります。  ListElement には、name (ストリング) および flag (ブール値) の 2 つの属性があります。  この例では、ListElement が選択されているときはいつでも、All アクション (A タグ) を使用できます。  name = red の名前の ListElement が選択されているときは、Red アクション (B タグ) を使用できます。  さらに、name != red の ListElement が選択されているときは、Not Red アクション (C タグ) を使用できます。

    <extension point = "org.eclipse.ui.actionSets">
        <actionSet id="org.eclipse.ui.tests.internal.ListElementActions"
            label="List Element">
            <menu id="org.eclipse.ui.tests.internal.ListElementMenu"
                label="List Element"
                path="additions">
                <separator name="group1"/>
            </menu>
    A タグ     <action id="org.eclipse.ui.tests.internal.ac1"
                label="All"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate"
                enablesFor="1">
                <enablement>
                     <objectClass name="org.eclipse.ui.tests.api.ListElement"/>
                </enablement>
            </action>
    B タグ     <action id="org.eclipse.ui.tests.internal.ac2"
                label="Red"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate"
                enablesFor="1">
                <enablement>
                 <and>
                  <objectClass name="org.eclipse.ui.tests.api.ListElement"/>
                  <objectState name="name" value="red"/>
                 </and>
                </enablement>
            </action>
    C タグ     <action id="org.eclipse.ui.tests.internal.ac3"
                label="Not Red"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate"
                enablesFor="1">
                <enablement>
                 <and>
                  <objectClass name="org.eclipse.ui.tests.api.ListElement"/>
                   <not>
                   <objectState name="name" value="red"/>
                  </not>
              </and>
                </enablement>
            </action>
        </actionSet>
    </extension>
    次の例では、pluginState エレメントが、アクション・セット内のアクションの使用可能性を制御するために使用されています。  プラグインが x.y.z.myPlugin とともにインストールされているときは、Installed アクション (A タグ) が使用可能になります。  同じプラグインが活動化されているときは、Activated アクション (B タグ) が使用可能になります。
    <extension point = "org.eclipse.ui.actionSets">
        <actionSet id="org.eclipse.ui.tests.internal.ListElementActions"
            label="List Element">
            <menu id="org.eclipse.ui.tests.internal.ListElementMenu"
                label="List Element"
                path="additions">
                <separator name="group1"/>
            </menu>
    A タグ     <action id="org.eclipse.ui.tests.internal.ac8"
                label="Installed"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate">
                <enablement>
                 <pluginState id="x.y.z.myPlugin" value="installed"/>
                </enablement>
            </action>
    B タグ     <action id="org.eclipse.ui.tests.internal.ac10"
                label="Activated"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate">
                <enablement>
                 <pluginState id="x.y.z.myPlugin" value="activated"/>
                </enablement>
            </action>
        </actionSet>
    </extension>
    次の例では、systemProperty エレメントを説明します。  ActionExpressionVar システム・プロパティーが "bubba" と等しいときは、System Property アクション (A タグ) を使用できます。
    <extension point = "org.eclipse.ui.actionSets">
        <actionSet id="org.eclipse.ui.tests.internal.ListElementActions"
            label="List Element">
            <menu id="org.eclipse.ui.tests.internal.ListElementMenu"
                label="List Element"
                path="additions">
                <separator name="group1"/>
            </menu>
    A タグ     <action id="org.eclipse.ui.tests.internal.ac11"
                label="System Property"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate">
                <enablement>
                 <systemProperty name="ActionExpressionVar" value="bubba"/>
                </enablement>
            </action>
        </actionSet>
    </extension>
    これは最後の例で、ポップアップ・メニュー・アクション拡張のための可視性の宣言のデモを行います。 ListElementname = red および flag = true とともに選択されているときは いつでも、Red and True アクションは可視になります。
    <extension point="org.eclipse.ui.popupMenus">
        <objectContribution id="oc6"
          objectClass="org.eclipse.ui.tests.api.ListElement">
          <visibility>
             <and>
                 <objectState name="name" value="red"/>
                 <objectState name="flag" value="true"/>
             </and>
          </visibility>
          <action id="oc4" label="Red And True"
               class="org.eclipse.ui.tests.api.MockActionDelegate"/>
        </objectContribution>
    </extension>


    提供されるインプリメンテーション: 便宜を図るために、アクション・フィルターが マーカー、リソース、およびプロジェクトのために定義されました。 この名前値の対はそれぞれ、 IMarkerActionFilterIResourceActionFilter、 および IProjectActionFilter 上で宣言されます。

    Copyright IBM Corporation and others 2000, 2002.