ビューのメニュー、ツールバー、およびアクション

ID: org.eclipse.ui.viewActions

説明: この拡張ポイントは、他のプラグインにより登録されたプルダウン・メニュー、 およびツールバーにアクションを追加するために使用します。 各ビューには、ローカルのプルダウン・メニューがあります。 これは通常、右上の三角ボタンをクリックしてアクティブにします。 このメニューには、その他のプラグインにより、サブメニューおよびアクションを追加することができます。 また、プラグインにより、ビュー・ツールバーにアクションを追加することもできます。 ビューの所有者は、最初にこれらの領域を配置することができます。 他のプラグインによるオプションの追加内容がこれに加えられます。

アクションの使用可能性と可視性は、エレメント enablementvisibility をそれぞれ使用することによって定義できます。 これらの 2 つのエレメントにはブール式が含まれ、この式が評価されて使用可能性と可視性を決定します。

enablement エレメントと visibility エレメントは同じ構文です。 どちらにも、1 つのブール式サブエレメントだけが含まれています。 最も単純なケースでは、これは 1 つの objectClassobjectStatepluginState、または systemProperty エレメントになります。 もっと複雑なケースになると、andor、および 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?)>

  このエレメントは、ユーザーが UI で起動できるアクションを定義します。

   <!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
   >

   <!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>

   このエレメントは、新規メニューの名前付きグループを作成するために使用されます。 これは、separator エレメントと違って、新規メニューにビジュアル表示されません。

   <!ATTLIST groupMarker
     name CDATA #REQUIRED
   >

   <!ELEMENT selection EMPTY>

   このエレメントは、現行の選択を基にした、アクションの使用可能性を判別するために役立ちます。 enablement エレメントが指定されていると無視されます。

   <!ATTLIST selection
     class CDATA #REQUIRED
     name  CDATA #IMPLIED
   >

   <!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)>

  このエレメントは、2 つのサブエレメント式を評価した結果に対するブール NOT 演算を表します。

   <!ELEMENT objectClass EMPTY>

   このエレメントは、現行の選択内の各オブジェクトのクラスまたはインターフェースを評価するために使用されます。 選択内の各オブジェクトが指定されたクラスまたはインターフェースをインプリメントしている場合、式は真と評価されます。

   <!ATTLIST objectClass
     name CDATA #REQUIRED
   >

   <!ELEMENT objectState EMPTY>

   このエレメントは、現行の選択内の各オブジェクトの属性の状態を評価するために使用されます。 選択内の各オブジェクトが指定された属性状態である場合、式は真と評価されます。 このタイプの式を評価するには、 選択内の各オブジェクトが org.eclipse.ui.IActionFilter インターフェースをインプリメントするか、または適合している必要があります。

   <!ATTLIST objectState
     name  CDATA #REQUIRED
     value CDATA #REQUIRED
   >

   <!ELEMENT pluginState EMPTY>

   このエレメントは、プラグインの状態を評価するために使用されます。プラグインの状態は、 installed または activated のどちらかにできます。

   <!ATTLIST pluginState
     id    CDATA #REQUIRED
     value (installed|activated) "installed"
   >

   <!ELEMENT systemProperty EMPTY>

  このエレメントは、いくつかのシステム・プロパティーの状態を評価するために使用されます。プロパティーの値は、java.lang.System から検索されます。

   <!ATTLIST systemProperty
     name  CDATA #REQUIRED
     value CDATA #REQUIRED
   >
サンプル: ビュー・アクション拡張の例を以下に示します。

   <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="&amp;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="&amp;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> 
      </editorContribution> 
</extension>

上の例では、指定されたアクションはメニュー項目として表示されます。アクションは、 選択に Java ファイル・リソースが含まれる場合に使用可能になります。

API 情報: class 属性の値は、 org.eclipse.ui.IViewActionDelegate をインプリメントする Java クラスの完全修飾名でなければなりません。このクラスは、プラグイン全体が必要となる場合に全体がロードされることのないよう、 できる限り後からロードされます。

インターフェース org.eclipse.ui.IViewActionDelegate は、 org.eclipse.ui.IActionDelegate を拡張してメソッドをさらに追加し、これによって、 代行者が contribution 先のビュー・インスタンスの初期化を行うことができるようにします。

この拡張ポイントを使用すると、以前にターゲット・ビューによって作成されたメニューにアクションを追加することができます。 メニュー・パス属性を省略すると、プルダウン・メニューの最後に新規メニューまたはアクションが追加されます。

アクション拡張の使用可能性の基準は、最初は enablesFor によって定義され、selection または enablement のいずれかによっても定義されます。 ただし、アクション代行がインスタンス化されると、その selectionChanged メソッド内のアクション使用可能状態を直接制御できます。

アクションおよびメニュー・ラベルには、次の規則に従って、簡略記号をエンコードする特殊文字を含めることができます。

  1. 略号は、変換されたテキスト中の選択文字の前のアンパーサンド ('&') 文字で指定されます。 アンパーサンドは XML ストリングでは許可されていないため、&amp; 文字エンティティーを使用してください。
複数のアクションがメニューまたはツールバーに 1 つの拡張によって与えられる場合、 アクションは plugin.xml ファイルとは逆の順序でリストされます。 この動作は、通常はすぐにわかりません。ただし、Eclipse Platform API がフリーズすると発見されます。今、この動作を変更すると、既存の動作に依存している各プラグインが混乱してしまうことになります。

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) 2000, 2003 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html