アクションの使用可能性と可視性は、エレメント enablement と visibility をそれぞれ使用することによって定義できます。 これらの 2 つのエレメントにはブール式が含まれ、この式が評価されて使用可能性と可視性を決定します。
enablement エレメントと visibility エレメントは同じ構文です。 どちらにも、1 つのブール式サブエレメントだけが含まれています。 最も単純なケースでは、これは 1 つの objectClass、objectState、pluginState、または systemProperty エレメントになります。 もっと複雑なケースになると、and、or、および not のエレメントで結合して、1 つのブール式を構成している場合があります。 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
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
このエレメントは、ビュー・アクションおよび/またはメニューのグループを定義するために使用します。
< !ELEMENT action (selection* | enablement?)>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
menubarPath CDATA #IMPLIED
toolbarPath CDATA #IMPLIED
icon CDATA #IMPLIED
disabledIcon CDATA #IMPLIED
hoverIcon CDATA #IMPLIED
tooltip CDATA #IMPLIED
helpContextId CDATA #IMPLIED
style (push|radio|toggle) "push"
state (true | false)
class CDATA #REQUIRED
enablesFor CDATA #IMPLIED>
このエレメントは、ユーザーが UI で起動できるアクションを定義します。
push | - 通常のメニュー項目またはツール項目。 | |
radio | - ラジオ・スタイルのメニュー項目またはツール項目。 同じメニューまたはツールバー・グループ内のラジオ・スタイルのアクションは、 ラジオ・セットとして動作します。 初期値は、state 属性によって指定されます。 | |
toggle | - チェック・スタイル・メニュー項目またはトグル・ツール項目。 初期値は、state 属性によって指定されます。 |
! | - 選択された項目が 0 | |
? | - 選択された項目が 0 または 1 | |
+ | - 選択された項目が 1 つ以上 | |
multiple, 2+ | - 選択された項目が 2 つ以上 | |
n | - 選択された項目の正確な数。 例えば、enablesFor=" 4" では、4 つの項目が選択された場合にのみアクションが使用可能になります。 | |
* | - 任意の数の項目を選択 |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
このエレメントは、新規メニューの定義に使用されます。
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
このエレメントは、新規メニューのメニュー・セパレーターを作成するために使用されます。
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
このエレメントは、新規メニューに名前付きグループを作成するために使用されます。 これは、separator エレメントと違って、新規メニューにビジュアル表示されません。
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
このエレメントは、現在の選択を基にした、アクションの使用可能性を判別する際に役立ちます。 enablement エレメントが指定されていると無視されます。
<!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)>
このエレメントは、2 つのサブエレメント式を評価した結果に対するブール AND 演算を表します。
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
このエレメントは、2 つのサブエレメント式を評価した結果に対するブール OR 演算を表します。
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
このエレメントは、サブエレメント式を評価した結果に対するブール NOT 演算を表します。
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
このエレメントは、現在の選択内の各オブジェクトのクラスまたはインターフェースを評価するために使用されます。 選択内の各オブジェクトが指定されたクラスまたはインターフェースを実装している場合、式は真と評価されます。
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
このエレメントは、現在の選択内の各オブジェクトの属性の状態を評価するために使用されます。 選択内の各オブジェクトが指定された属性状態である場合、式は真と評価されます。 このタイプの式を評価するには、 選択内の各オブジェクトが org.eclipse.ui.IActionFilter インターフェースを実装するか、またはそれに適合している必要があります。
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
このエレメントは、プラグインの状態を評価するために使用されます。 プラグインの状態は、installed (OSGi の「resolved」の概念と等価) または activated (OSGi の「active」の概念と等価) のいずれかです。
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
このエレメントは、いくつかのシステム・プロパティーの状態を評価するために使用されます。 プロパティーの値は、java.lang.System から検索されます。
<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 ファイル・リソースでなければなりません。
次に、ビュー・アクション拡張のもう 1 つの例を示します。
<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>
</viewContribution>
</extension>
上の例では、指定されたアクションはメニュー項目として表示されます。 アクションは、 選択に Java ファイル・リソースが含まれていない場合に使用可能になります。
インターフェース org.eclipse.ui.IViewActionDelegate は、 org.eclipse.ui.IActionDelegate を拡張してメソッドをさらに追加し、これによって、 代行者が contribution 先のビュー・インスタンスの初期化を行うことができるようにします。
この拡張ポイントを使用すると、以前にターゲット・ビューによって作成されたメニューにアクションを追加することができます。 メニュー・パス属性を省略すると、プルダウン・メニューの最後に新規メニューまたはアクションが追加されます。
アクション拡張の使用可能性の基準は、最初は enablesFor によって定義され、selection または enablement のいずれかによっても定義されます。 ただし、アクション代行がインスタンス化されると、その selectionChanged メソッド内のアクション使用可能状態を直接制御できます。
アクションおよびメニュー・ラベルには、次の規則に従って、簡略記号をエンコードする特殊文字を含めることができます。
selection エレメントと enablement エレメントは相互に排他的です。 サブエレメント objectClass および objectState を使用して、 enablement エレメントで 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) 2002, 2005 IBM Corporation and others.
All rights reserved. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which accompanies
this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html