« ダイアログボタンの変更 | トップページ | テキストバッファを使ったIDocumentオブジェクトの取得 »

2004.07.17

Javaエディタのコンテキストメニュー

Eclipseを使っているほとんどの開発者は,Javaの開発が目的で利用していることだろう。Javaの開発者がEclipseに期待することといえば,やはりJavaのソースコードを編集するための充実した機能だ。しかし,ベーシックな機能だけでは物足りないことも出てくる。人間,欲に限りはない。今回は,Javaエディタのコンテキストメニューに独自の項目を追加する方法を紹介する。

ビューのコンテキストメニューに項目を追加する方法は,「特定ビューへのコンテキストメニュー項目の追加」ですでに紹介している。Javaエディタのコンテキストメニューに項目を追加する方法も基本的には同じ。

プラグイン・マニフェスト中にviewerContribution要素を記述してビューのコンテキストメニューに項目を追加するのだが,その際に対象となるビューをtargetID属性で指定する。Javaエディタの場合,targetID属性の値として#CompilationUnitEditorContextを指定する

  <extension point="org.eclipse.ui.popupMenus">
    <viewerContribution
      id="yoichiro.sample.popupMenus.javaeditor"
      targetID="#CompilationUnitEditorContext">
      <action
        id="yoichiro.sample.JavaEditorSampleAction"
        label="Sample Action"
        menubarPath="additions"
        class="yoichiro.sample.JavaEditorSampleAction">
      </action>
    </viewerContribution>
  </extension>

これにより,以下のようにJavaエディタのコンテキストメニューに項目が追加される。

javaeditor-menu1.gif

そして,メニュー項目が選択されたときに駆動されるクラス(class属性で指定するクラス)は,IEditorActionDelegateインタフェースを実装することが必要となる。

  public class JavaEditorSampleAction implements IEditorActionDelegate {
    private IEditorPart targetEditor;
    public void setActiveEditor(IAction action, IEditorPart targetEditor) {
      this.targetEditor = targetEditor;
    }
    public void run(IAction action) {
      if (targetEditor != null) {
        ...
      }
    }
    public void selectionChanged(IAction action, ISelection selection) {
    }
  }

IEditorActionDelegateインタフェースを実装することにより,setActiveEditorメソッド,runメソッド,そしてselectionChangedメソッドを実装することになる。通常は,setActiveEditorメソッドに渡される対象のエディタのオブジェクト(引数のtargetEditor)をフィールドに保持しておき,実際にメニューが選択されたときに呼び出されるrunメソッド内で,保持しておいたエディタオブジェクトに対して何らかの処理を行う。プラグイン・マニフェストでtargetID属性値に#CompilationUnitEditorContextを指定しているので,上記の例の場合はtargetEditorはJavaエディタのオブジェクトとなる。

メニュー項目の追加位置を,

javaeditor-menu2.gif

というようにSourceグループの中にしたいときは,プラグイン・マニフェストのmenubarPath属性を,

  menubarPath="org.eclipse.jdt.ui.source.menu/additions"

というように指定する。

|

« ダイアログボタンの変更 | トップページ | テキストバッファを使ったIDocumentオブジェクトの取得 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/989885

この記事へのトラックバック一覧です: Javaエディタのコンテキストメニュー:

« ダイアログボタンの変更 | トップページ | テキストバッファを使ったIDocumentオブジェクトの取得 »