この拡張ポイントは、ワークベンチ・ウィンドウの共通域にメニュー、メニュー項目およびツールバー・ボタンを追加するために使用します。 これらの contribution は集合的に アクション・セット と呼ばれ、ユーザーがパースペクティブをカスタマイズすることによりワークベンチ・ウィンドウ内に表示されます。
現在、アクション・セットに影響を与える、実装に関する制限があります。アクション・セット内で参照されるメニュー構造全体を定義することが重要です。従って、例えば、別のアクション・セットで「example」という名前のメニューが定義される場合は、「example」の存在に依存することはできません。使用したいアクション・セットごとに「example」メニューを再定義することが必要です。
アクションの使用可能性と可視性は、要素 enablement と visibility をそれぞれ使用することによって定義できます。 これらの 2 つの要素にはブール式が含まれ、この式が評価されて使用可能性と可視性を決定します。
enablement 要素と visibility 要素は同じ構文です。 どちらにも、1 つのブール式サブ要素だけが含まれています。 最も単純なケースでは、これは 1 つの objectClass、objectState、pluginState、または systemProperty 要素になります。 もっと複雑なケースになると、and、or、および not の要素で結合して、1 つのブール式を構成している場合があります。 and および or 要素の両方に、2 つのサブ要素が含まれていなければなりません。 not 要素には、 1 つのサブ要素だけが含まれなければなりません。
<!ELEMENT extension (actionSet+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT actionSet (menu* , action*)>
<!ATTLIST actionSet
id CDATA #REQUIRED
label CDATA #REQUIRED
visible (true | false)
description CDATA #IMPLIED>
この要素は、アクションおよび/またはメニューのグループの定義に使用されます。
< !ELEMENT action (selection* | enablement?)>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
accelerator CDATA #IMPLIED
definitionId CDATA #IMPLIED
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|pulldown) "push"
state (true | false)
pulldown (true | false)
class CDATA #IMPLIED
retarget (true | false)
allowLabelUpdate (true | false)
enablesFor CDATA #IMPLIED>
この要素は、ユーザーが UI で起動できるアクションを定義します。
push | - 通常のメニュー項目またはツール項目。 | |
radio | - ラジオ・スタイルのメニュー項目またはツール項目。 同じメニューまたはツールバー・グループ内のラジオ・スタイルのアクションは、ラジオ・セットとして動作します。 初期値は、state 属性によって指定されます。 | |
toggle | - チェック・スタイル・メニュー項目またはトグル・ツール項目。 初期値は、state 属性によって指定されます。 | |
pulldown | - カスケード・スタイルのメニュー項目、またはツール項目の横のドロップダウン・メニュー。 |
! | - 選択された項目が 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.actionSets"
>
<actionSet id=
"com.xyz.actionSet"
label=
"My Actions"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
<separator name=
"option1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
style=
"toggle"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/group1"
icon=
"icons/runXYZ.gif"
tooltip=
"Run XYZ Tool"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
enablesFor=
"1"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
<action id=
"com.xyz.runABC"
label=
"&Run ABC Tool"
style=
"push"
menubarPath=
"com.xyz.xyzMenu/group1"
toolbarPath=
"Normal/XYZ"
icon=
"icons/runABC.gif"
tooltip=
"Run ABC Tool"
helpContextId=
"com.xyz.run_abc_action_context"
retarget=
"true"
allowLabelUpdate=
"true"
>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<not>
<objectState name=
"extension"
value=
"java"
/>
</not>
</and>
</enablement>
</action>
<action id=
"com.xyz.runDEF"
label=
"&Run DEF Tool"
style=
"radio"
state=
"true"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runDEF.gif"
tooltip=
"Run DEF Tool"
class=
"com.xyz.actions.RunDEF"
helpContextId=
"com.xyz.run_def_action_context"
>
</action>
<action id=
"com.xyz.runGHI"
label=
"&Run GHI Tool"
style=
"radio"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runGHI.gif"
tooltip=
"Run GHI Tool"
class=
"com.xyz.actions.RunGHI"
helpContextId=
"com.xyz.run_ghi_action_context"
>
</action>
<action id=
"com.xyz.runJKL"
label=
"&Run JKL Tool"
style=
"radio"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runJKL.gif"
tooltip=
"Run JKL Tool"
class=
"com.xyz.actions.RunJKL"
helpContextId=
"com.xyz.run_jkl_action_context"
>
</action>
</actionSet>
</extension>
上記の例で、指定された「My Actions」という名前のアクション・セットは、visible 属性が指定されていないため、各パースペクティブ内で最初は可視ではありません。
XYZ アクションは、チェック・ボックス・メニュー項目として現れます (最初はチェックマークが付いていません)。 このアクションは、選択カウントが 1 で、選択に Java ファイル・リソースが含まれている場合にのみ、使用可能になります。
ABC アクションは、メニュー内とツールバー上の両方に現れます。 このアクションは、選択に Java ファイル・リソースが含まれていない場合にのみ、使用可能になります。 このアクションはラベル再ターゲット・アクションであるため、このアクションは class 属性を提供しないことにも注意してください。
アクション DEF、GHI、および JKL は、ラジオ・ボタン・メニュー項目として現れます。 これらのアクションは、現在の選択状態とは無関係に、いつでも使用可能です。
アクション拡張の使用可能性の基準は、最初は 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>
トップレベル・メニューは、path 属性に次の値を使用して作成されます。
ワークベンチ・ウィンドウのデフォルト・グループは、IWorkbenchActionConstants インターフェースに定義されます。 これらの定数は、動的な contribution のコードで使用することができます。この値は、既存のワークベンチ・メニューおよびツールバーときめ細かく融合させるために、XML ファイルにコピーすることもできます。
ワークベンチ・ウィンドウ内のさまざまなメニューおよびツールバー項目が、アルゴリズムによって定義されます。 これらのケースでは、別個のメカニズムを使用して、ウィンドウを拡張する必要があります。 例えば、新しいワークベンチ・ビューを追加すると、「パースペクティブ」メニューに新しいメニュー項目が表示されることになります。 インポート、エクスポート、および新規ウィザードの拡張機能も自動的にウィンドウに追加されます。
Copyright (c) 2000, 2004 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