Top / Eclipse / プラグイン開発のTIPS集 / GooglePlugin / ポップアップメニューをエディタに実装

つぎは 「検索ロジックをビューに実装」 で実装したビューのメソッドを呼び出すポップアップメニューをJavaエディタに実装します。

エディタのポップアップにプラグインする方法などはメニューバーとか、ポップアップとかのまとめ

plugin.xml

<extension point="org.eclipse.ui.popupMenus">
  <viewerContribution
    targetID="#CompilationUnitEditorContext"
    id="nu.mine.kino.plugin.google.ui.contributions.CompilationUnitEditorContext">
  <action
      label="Googleで検索"
      icon="icons/icon.gif"
      class="nu.mine.kino.plugin.google.ui.popup.actions.CompilationUnitEditorContextAction"
      menubarPath="additions"
      id="nu.mine.kino.plugin.google.ui.popup.actions.CompilationUnitEditorContextAction">
    <selection
       class="org.eclipse.jface.text.ITextSelection">
    </selection>
  </action>
  </viewerContribution>
</extension>

これでJavaエディタのポップアップメニューに「Googleで検索」というメニューが表示されます。

スクリーンショット

menu.png

ソースコード

ソースコードは以下のようになりました。

package nu.mine.kino.plugin.google.ui.popup.actions;

import nu.mine.kino.plugin.google.ui.views.GoogleResultView;

import org.apache.log4j.Logger;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IEditorActionDelegate;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.texteditor.AbstractTextEditor;

/**
 * @author Masatomi KINO
 * @version $Revision$
 */
public class CompilationUnitEditorContextAction implements
    IEditorActionDelegate {
  private static final Logger logger = Logger
      .getLogger(CompilationUnitEditorContextAction.class);

  private ISelection selection;

  private IEditorPart editorPart;

  public void setActiveEditor(IAction action, IEditorPart targetEditor) {
    this.editorPart = targetEditor;
  }

  public void selectionChanged(IAction action, ISelection selection) {
    this.selection = selection;
  }

  public void run(IAction action) {
    logger.debug("run(IAction) - start");

    AbstractTextEditor editor = (AbstractTextEditor) editorPart;

    final ITextSelection textSelection = (ITextSelection) selection;
    logger.debug("選択されている文字列は" + textSelection.getText());

    IWorkbenchPage workbenchPage = editor.getSite().getPage();

    try {
      logger.debug("Viewを取得します");
      final GoogleResultView view = (GoogleResultView) workbenchPage
          .showView("nu.mine.kino.plugin.google.ui.views.GoogleResultView");
      logger.debug("Viewを取得しました");
      logger.debug(view);
      view.search(textSelection.getText());
    } catch (PartInitException e) {
      logger.error(e);
    }

    logger.debug("run(IAction) - end");
  }

}

これでJavaエディタのポップアップメニューから「Googleで検索」を選択するとIEditorActionDelegate#run が実行されてビューに検索結果が表示されます。

result.png

まだTableViewerLabelProviderを設定していないため、結果表示も検索結果オブジェクト(nu.mine.kino.googleapis.ResultElement?)のtoString()がそのまま表示されてしまいます。

次はこのLabelProviderを設定して、TableViewに情報を表示できるようにします。


この記事は

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

Top / Eclipse / プラグイン開発のTIPS集 / GooglePlugin / ポップアップメニューをエディタに実装

現在のアクセス:10797


添付ファイル: fileresult.png 831件 [詳細] filemenu.png 874件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-04-03 (日) 06:39:48 (4998d)