メニューバーを構築する(Eclipse3.3版)のページで、メインメニューやビュー内の△メニューへ機能を追加する方法が、Eclipse3.3から変更になったこと、その機能を使うための拡張ポイントがやインタフェースが、org.eclipse.ui.menus 拡張ポイントに統一化されたことを書きました。
さて、こんどはそのorg.eclipse.ui.menus 拡張ポイントを用いて、ポップアップメニューにコマンドを追加する方法をまとめたいと思います。
いままでは org.eclipse.ui.popupMenus 拡張ポイントとorg.eclipse.ui.IViewActionDelegate,org.eclipse.ui.IObjectActionDelegateこれらのインタフェースで実装されていましたが、これらポップアップメニュー機能もorg.eclipse.ui.menus拡張ポイントに統合されています。
<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>
このように、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に指定します。かつては
<viewerContribution id="nu.mine.kino.plugin.samples.rcp.viewerContribution1" targetID="org.eclipse.ui.views.ProblemView">
などとして、IViewActionDelegate? を実装してなどとあまりキレイでなかったのですが、すっきり実装できるようになりました*1)
メニューの表示でやったときと同じく、locationURIは?でパラメタをつけてSeparator名を指定することで表示場所の制御を行うことも可能です。
ちなみにEclipse/プラグイン開発のTIPS集/getSite().registerContextMenuを理解するにあるとおり、ポップアップにコマンドを追加するにはポップアップ側でメニューとSelectionProvider?を公開しておく必要があります。SelectionProvider?についてはこちら。
この記事は
現在のアクセス:15722