Top / Eclipse / プラグイン開発のTIPS集 / メニューバーを構築する(Eclipse3.3版)

Eclipse/プラグイン開発のTIPS集/メニューバーを構築する のページで、アクションクラスを用いたメニューバーの構築する方法についてまとめました。さて、Eclipse/プラグイン開発のTIPS集/キーバインディングを設定する(Eclipse3.3版) でも書きましたが、Eclipse3.3からはアクション関連の機構は、かわりに org.eclipse.ui.commands 拡張ポイント関連を使うのを推奨しているようです。 メニューバーの構築方法もそれにともなって標準のやり方が変わっているようなので、このページにまとめておきます。

標準的な構成は元ページ Eclipse/プラグイン開発のTIPS集/メニューバーを構築する のEclipse/RCPをそのまま用いてみようと思います。

対象のRCPのワークベンチ構成

もともとのEclipse/RCP のメニューバーの構成は、

[ワークベンチ]
   |
   |-[File]            - "file"  <- IWorkbenchActionConstants.M_FILE
   |   -[終了]
   |
   |-GroupMarker       - "additions"
   |
   |-[Help]            - "help"  <- IWorkbenchActionConstants.M_HELP
   |   -[検索]
   |   -"セパレータ"   - "group01"
   |   -[○○について] - 

となっているとします。

rcp01.png
rcp02.png

拡張ポイントから宣言的に

拡張ポイントを用いて宣言的にメニューに項目を追加するには、いままではorg.eclipse.ui.actionSets 拡張ポイントを使ってましたが、Eclipse3.3からは org.eclipse.ui.menus 拡張ポイントを使用します。

では先の"セパレータ"部分にコマンドを追加します。拡張ポイントの指定方法は以下の通り。

<extension point="org.eclipse.ui.menus">
  <menuContribution
       locationURI="menu:help?after=group01">
     <command commandId="nu.mine.kino.plugin.samples.rcp.command"
       label="group01に追加したコマンド"
       style="push">
     </command>
   </menuContribution>
</extension>

ポイントは、locationURI の指定方法です。

locationURI="menu:help?after=group01"

これですが、ワークベンチトップに追加したおいたhelp(IWorkbenchActionConstants?.M_HELPのこと) 内の、group01セパレータの後ろ、という意味になります。

ちなみにplugin.xml全体は以下の通り。

<extension point="org.eclipse.ui.handlers">
  <handler commandId="nu.mine.kino.plugin.samples.rcp.command" 
    class="nu.mine.kino.plugin.newaction.handlers.SampleHandler">
  </handler>
</extension>

<extension point="org.eclipse.ui.commands">
  <category id="nu.mine.kino.plugin.samples.rcp.category" name="Sample"/>
  <command categoryId="nu.mine.kino.plugin.samples.rcp.category" 
    id="nu.mine.kino.plugin.samples.rcp.command" name="サンプルコマンド"/>
</extension>

<extension point="org.eclipse.ui.menus">
 <menuContribution
      locationURI="menu:help?after=group01">
    <command commandId="nu.mine.kino.plugin.samples.rcp.command"
      label="group01に追加したコマンド"
      style="push">
    </command>
  </menuContribution>
</extension>

以上で、先のセパレータ部分に、コマンドが追加されました。

rcp03.png

アクションではなく、サブメニューを追加する

次に、サブメニューを追加したいと思います。具体的には次のようにしたいと思います。

[ワークベンチ]
   |
   |-[File]                   - "file"     <- IWorkbenchActionConstants.M_FILE
   |   -[終了]
   |
   |-[Help]                   - "help"     <- IWorkbenchActionConstants.M_HELP
   |   -[検索]
   |   -"セパレータ"          - "group01"
   |   -[追加メニュー。]      - "menu01"   <- plugin.xmlで追加
   |      -"セパレータ"       - "sepa01"   <- plugin.xmlで追加
   |      -[追加アクション。] -            <- plugin.xmlで追加
   |   -[○○について] - 

セパレータ部分に「追加メニュー。」というサブメニューを追加し、その下にさっきのアクションを追加したいと思います。

plugin.xmlに以下の通り記述します。さっきのorg.eclipse.ui.menusの記述はいったん削除しましょう。

<extension point="org.eclipse.ui.menus">
 <menuContribution
     locationURI="menu:help?after=group01">
   <menu label="追加メニュー。">
     <command
       commandId="nu.mine.kino.plugin.samples.rcp.command"
       label="追加アクション。"
       style="push">
     </command>
   </menu>
 </menuContribution>
</extension>
rcp04.png

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Eclipse / プラグイン開発のTIPS集 / メニューバーを構築する(Eclipse3.3版)

現在のアクセス:16532


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS