// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

[[メニューバーを構築する(Eclipse3.3版)>Eclipse/プラグイン開発のTIPS集/メニューバーを構築する(Eclipse3.3版)]]のページで、メインメニューやビュー内の△メニューへ機能を追加する方法が、Eclipse3.3から変更になったこと、その機能を使うための拡張ポイントがやインタフェースが、org.eclipse.ui.menus 拡張ポイントに統一化されたことを書きました。

さて、こんどはそのorg.eclipse.ui.menus 拡張ポイントを用いて、ポップアップメニューにコマンドを追加する方法をまとめたいと思います。

いままでは org.eclipse.ui.popupMenus 拡張ポイントと[[org.eclipse.ui.IViewActionDelegate>Eclipse/プラグイン開発のTIPS集/org.eclipse.ui.IViewActionDelegate(ポップアップ・メニューバー)]],[[org.eclipse.ui.IObjectActionDelegate>Eclipse/プラグイン開発のTIPS集/org.eclipse.ui.IObjectActionDelegate(ポップアップメニュー)]]これらのインタフェースで実装されていましたが、これらポップアップメニュー機能もorg.eclipse.ui.menus拡張ポイントに統合されています。


-plugin.xmlの記述。
 <extension point="org.eclipse.ui.menus">
   <menuContribution locationURI="popup:org.eclipse.ui.popup.any">
     <menu id="nu.mine.kino.plugin.newaction.menus.sampleMenu" 
       label="トップのメニュー">
       <command
         commandId="nu.mine.kino.plugin.samples.rcp.command" style="push">
       </command>
       <command 
         commandId="nu.mine.kino.plugin.newaction.commands.sampleCommand" style="push">
       </command>
     </menu>
   </menuContribution>
 </extension>

#ref(popup01.png)

このように、org.eclipse.ui.menus を使用して、URLの指定を
 locationURI="popup:org.eclipse.ui.popup.any"
とするということで、ポップアップにコマンドを追加することができました。org.eclipse.ui.popup.any というIDは、全部のポップアップメニューという特殊なIDです。

特定のビューのみに表示したい場合は
 locationURI="popup:org.eclipse.ui.views.ProblemView"
などとビューのIDをURIに指定します。[[かつて>Eclipse/プラグイン開発のTIPS集/org.eclipse.ui.IViewActionDelegate(ポップアップ・メニューバー)]]は
 <viewerContribution
     id="nu.mine.kino.plugin.samples.rcp.viewerContribution1"
     targetID="org.eclipse.ui.views.ProblemView">
などとして、IViewActionDelegate を実装してなどとあまりキレイでなかったのですが、すっきり実装できるようになりました((ちなみにこのIDは厳密には[[ビューのIDではないみたい>Eclipse/プラグイン開発のTIPS集/getSite().registerContextMenuを理解する]]なのでご注意。みたいっつうのは前自分で書いたけど、忘れてるからです(´д`;)))

メニューの表示でやったときと同じく、locationURIは?でパラメタをつけてSeparator名を指定することで表示場所の制御を行うことも可能です。


ちなみに[[Eclipse/プラグイン開発のTIPS集/getSite().registerContextMenuを理解する]]にあるとおり、ポップアップにコマンドを追加するにはポップアップ側でメニューとSelectionProviderを公開しておく必要があります。SelectionProviderについては[[こちら>Eclipse/プラグイン開発のTIPS集/org.eclipse.ui.ISelectionListener]]。




----
この記事は
#vote(おもしろかった,そうでもない)

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


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