- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
//ここにコンテンツを記述します。
org.eclipse.ui.IObjectActionDelegateはパッケージエクスプローラなどを右クリックしたときに現れるポップアップメニューに項目を追加するためのインターフェースです。
#contents
***拡張ポイント
***拡張ポイント [#o72e1a47]
org.eclipse.ui.popupMenus
***plugin.xmlのサンプル
***plugin.xmlのサンプル [#q188df92]
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
objectClass="org.eclipse.core.resources.IFile"
↑ 選択されているのがIFileのときだけ
id="kino.objectContribution">
<action
label="実行!!" <- メニューに表示される文字列
icon="icons/sample.gif" <- アイコン
class="kino.actions.HogeAction" <- 実装クラス
menubarPath="additions"
enablesFor="1"
id="kino.actions.HogeAction">
</action>
</objectContribution>
</extension>
**ポイント
**ポイント [#hc0920c7]
実装クラスはIObjectActionDelegateを実装します。実際に使用するメソッドは
selectionChanged(IAction action, ISelection selection)
run(IAction action)
でしょう。
***selectionChanged(IAction action, ISelection selection)
***selectionChanged(IAction action, ISelection selection) [#w9fa180e]
なにかが選択されたときに呼ばれるメソッドです。selectionを用いて、メニュー内でクリックされたリソースが何であるかを判定するロジックを記述します。
***run(IAction action)
***run(IAction action) [#n9a82148]
実際にメニューから選択されたときに呼ばれるメソッドです。selectionChangedで選択されたリソースをフィールドに保持して、runメソッド内でロジックを記述する、なんてのが基本パターンでしょうか。
**TIPS [#h2f76e5b]
:objectContribution|objectContributionを指定した場合は、任意のViewerにポップアップが追加されるようです。
:viewerContribution|viewerContributionを指定した場合は、targetID属性で指定したビューにのみ、ポップアップが追加されるようです。ところで、targetIDだけだと、どのウィジェットにポップアップをつけるのかわかんないじゃん、とおもったのですが、ちゃんと追加される側のビューでコンテキストメニューを公開する必要があるみたいです。ようするに、このIDのビューのコンテキストはココですよ、という。でそのコンテキストの公開方法が
MenuManager menuManager = new MenuManager();
getSite().registerContextMenu(menuManager,getSite().getSelectionProvider());
なんですね。
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}