org.eclipse.ui.IEditorActionDelegate?はエディタを右クリックしたときに現れるポップアップメニューに項目を追加するためのインターフェースです。
org.eclipse.ui.popupMenus (IObjectActionDelegateと同じ)
<extension point="org.eclipse.ui.popupMenus"> <viewerContribution targetID="#CompilationUnitEditorContext" <- Javaエディタ id="nu.mine.kino.plugin.javadocsearch.CompilationUnitEditorContext"> <action label="JavaDoc検索" <- コンテキストメニューの文字列 class="nu.mine.kino.plugin.javadocsearch.CompilationUnitEditorContextAction" menubarPath="additions" ↑ 実装クラス id="nu.mine.kino.plugin.javadocsearch.CompilationUnitEditorContextAction"> <selection class="org.eclipse.jface.text.ITextSelection"> </selection> </action> </viewerContribution> </extension>
実装クラスはIEditorActionDelegate?を実装します。実際に使用するメソッドは
setActiveEditor(IAction action, IEditorPart targetEditor) run(IAction action)
でしょう。
エディタの編集しているファイルが切り替わったときに呼ばれるメソッドです。このメソッド内でフィールドにIEditorPart?を保持しておいて、runメソッドでIEditorPart? から何かを取り出す、といったロジックが多いのかな?
実際にメニューから選択されたときに呼ばれるメソッドです。setActiveEditor?で選択されたリソースをフィールドに保持して、runメソッド内でロジックを記述する、なんてのが基本パターンでしょうか。
よく使われそうな処理フローは
などだと思います。*1 このとき run(IAction action) からビューに処理を依頼しなくてはいけないので、ビューへの参照が必要です。やり方はIWorkbenchPage?#showView(String viewID)を使えばよいようです。
IWorkbenchPage workbenchPage = editor.getSite().getPage(); try { HogeView view = (HogeView) workbenchPage.showView("HogeViewのID"); } catch (PartInitException e) { }
今のところまだよくわからないのが、viewerContributionのtargetID="#CompilationUnitEditorContext?" ですね。これって??
この記事は
現在のアクセス:16246