Eclipse 3.3からのポップアップメニューへの機能追加 †メニューバーを構築する(Eclipse3.3版)のページで、メインメニューやビュー内の△メニューへ機能を追加する方法が、Eclipse3.3から変更になったこと、その機能を使うための拡張ポイントがやインタフェースが、org.eclipse.ui.menus 拡張ポイントに統一化されたことを書きました。 さて、こんどはそのorg.eclipse.ui.menus 拡張ポイントを用いて、ポップアップメニューにコマンドを追加する方法をまとめたいと思います。 いままでは org.eclipse.ui.popupMenus 拡張ポイントとIViewActionDelegate,IObjectActionDelegateこれらのインタフェースで実装されていましたが、これらポップアップメニュー機能もorg.eclipse.ui.menus拡張ポイントに統合されています。
このように、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" <viewerContribution
id="nu.mine.kino.plugin.samples.rcp.viewerContribution1"
targetID="org.eclipse.ui.views.ProblemView">
などとして、IViewActionDelegate? を実装してなどとあまりキレイでなかったのですが、すっきり実装できるようになりました。 メニューの表示でやったときと同じく、locationURIは?でパラメタをつけてSeparator名を指定することで表示場所の制御を行うことも可能です。 ちなみにgetSite().registerContextMenuを理解するにあるとおり、ポップアップにコマンドを追加するにはポップアップ側でメニューとSelectionProvider?を公開しておく必要があります。SelectionProvider?についてはこちら。 選択しているオブジェクトの種類で、表示・非表示を制御する †ポップアップへコマンドを追加するとき、特定のオブジェクトが選択されている状態のときのみ、コマンドを表示してあげるのがとても親切ですね。この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>
<visibleWhen>
<with variable="activeMenuSelection">
<iterate ifEmpty="false"> <-ifEmptyは、Selectionがなかった時の判定。
<adapt type="org.eclipse.jdt.core.IJavaElement">
</adapt>
</iterate>
</with>
</visibleWhen>
</menu>
</menuContribution>
</extension>
このようにvisibleWhen要素で条件を指定することで、ある状況のみコマンドを表示するなんて事ができます。上記の指定は、選択されているオブジェクトがIJavaElement?の場合のみって事ですね。
うまくいきました。。 ちなみに <with variable="activeMenuSelection"> この変数に設定できる項目は org.eclipse.ui.ISources に定義されているようです。 関連リンク †
この記事は 現在のアクセス:16389 |