org.eclipse.ui.IObjectActionDelegate?はパッケージエクスプローラなどを右クリックしたときに現れるポップアップメニューに項目を追加するためのインターフェースです。
org.eclipse.ui.popupMenus
<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" <- 選択したファイルが1つだけの時有効 id="kino.actions.HogeAction"> </action> </objectContribution> </extension>
objectClassの場所は、他に
objectClass="org.eclipse.core.resources.IResource" <- ファイルとか、フォルダだったら表示 objectClass="org.eclipse.jdt.core.ICompilationUnit" <- いわゆるソースファイルだったら objectClass="org.eclipse.core.resources.IFile" <- ファイルだったら表示 objectClass="org.eclipse.core.resources.IFolder" <- フォルダだったら表示
などがあります。
実装クラスはIObjectActionDelegate?を実装します。実際に使用するメソッドは
selectionChanged(IAction action, ISelection selection) run(IAction action)
でしょう。
なにかが選択されたときに呼ばれるメソッドです。selectionを用いて、メニュー内でクリックされたリソースが何であるかを判定するロジックを記述します。
実際にメニューから選択されたときに呼ばれるメソッドです。selectionChangedで選択されたリソースをフィールドに保持して、runメソッド内でロジックを記述する、なんてのが基本パターンでしょうか。
MenuManager menuManager = new MenuManager(); getSite().registerContextMenu(menuManager,getSite().getSelectionProvider());なんですね。
この記事は
現在のアクセス:13485