Top / Eclipse / プラグイン開発のTIPS集 / GooglePlugin / ダブルクリックやポップアップメニューから、ブラウザを開く

LabelProviderで表示を制御する」で表示もそれなりになったので、次はダブルクリックや、ポップアップメニューからWEBブラウザを開けるようにします。

流れとしては、createPartControl?ないで

  • フィールドのアクションクラスを初期化
  • ビューにダブルクリックのリスナを追加。そのリスナの中でアクションクラスを実行。
  • ポップアップメニューにアクションを追加 を行います。

以下そのコードです。

ソースコード

ダブルクリックでブラウザが開くようにするのは割と簡単で、

public void createPartControl(Composite parent) {
  // いろいろ省略
  viewer.addDoubleClickListener(new IDoubleClickListener() {
    public void doubleClick(DoubleClickEvent e) {
      doubleClickAction.run();
    }
  });
  createActions();


  hookContextMenu();
}

として、createActions メソッド内で

doubleClickAction = new Action("") {
  public void run() {
    ISelection selection = viewer.getSelection();
    Object obj = ((IStructuredSelection) selection)
        .getFirstElement();

    ResultElement element = (ResultElement) obj;
    executeBrowser(element.getURL());
  }
};

とすればOKです。executeBrowserはブラウザを開くメソッドで、

private void executeBrowser(String url) {
  // 拡張子が"html"のアプリケーションを開く。
  Program program = Program.findProgram("html");
  logger.debug("次のURLを開きます: " + url);
  if (program != null) {
    program.execute(url);
  } else {
    logger.warn("ブラウザが見つかりません。OSのバグくせぇなぁ");
    logger.debug("仕方がないので、Windows専用のやり方でやります。");
    try {
      Runtime.getRuntime().exec(
          new String[] { "rundll32.exe",
              "url.dll,FileProtocolHandler", url });
    } catch (IOException e) {
      logger.error("Windows限定のやり方でも、ブラウザが
         見つかりませんでした。OSのバグくせぇなぁ");
    }
  }
}

という感じです。

次にポップアップメニューにアクションを追加するには

private void hookContextMenu() {
  MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
  menuMgr.setRemoveAllWhenShown(true);
  menuMgr.addMenuListener(new IMenuListener() {
    public void menuAboutToShow(IMenuManager manager) {
      fillContextMenu(manager);
    }
  });
  Menu menu = menuMgr.createContextMenu(viewer.getControl());
  viewer.getControl().setMenu(menu);
  getSite().registerContextMenu(menuMgr, viewer);
  // getSite().registerContextMenu("hogeID",menuMgr, viewer);
  // ↑別のIDをつける場合(ここではhogeID)
}

private void fillContextMenu(IMenuManager manager) {
  manager.add(openBrowserAction);
  // Other plug-ins can contribute there actions here
  manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
  manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS
      + "-end"));
}

として hookContextMenu? を createPartControl?で実行します。

以上で、ポップアップメニューとダブルクリックからブラウザを起動することができるようになりました。

次はビューのツールバーにいろいろな機能を実装します。

関連リンク


この記事は

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

Top / Eclipse / プラグイン開発のTIPS集 / GooglePlugin / ダブルクリックやポップアップメニューから、ブラウザを開く

現在のアクセス:9614


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-07-29 (土) 22:41:29 (6474d)