Top / Eclipse / プラグイン開発のTIPS集 / org.eclipse.ui.IEditorActionDelegate(ポップアップメニュー)

org.eclipse.ui.IEditorActionDelegate?はエディタを右クリックしたときに現れるポップアップメニューに項目を追加するためのインターフェースです。

拡張ポイント

org.eclipse.ui.popupMenus (IObjectActionDelegateと同じ)

plugin.xmlのサンプル

<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) 

でしょう。

setActiveEditor?(IAction action, IEditorPart? targetEditor)

エディタの編集しているファイルが切り替わったときに呼ばれるメソッドです。このメソッド内でフィールドにIEditorPart?を保持しておいて、runメソッドでIEditorPart? から何かを取り出す、といったロジックが多いのかな?

run(IAction action)

実際にメニューから選択されたときに呼ばれるメソッドです。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?" ですね。これって??

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Eclipse / プラグイン開発のTIPS集 / org.eclipse.ui.IEditorActionDelegate(ポップアップメニュー)

現在のアクセス:16073


*1 CallHierarchy?とかそうですよね

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS