#topicpath
----
//ここにコンテンツを記述します。
「[[LabelProviderで表示を制御する>Eclipse/プラグイン開発のTIPS集/GooglePlugin/LabelProviderで表示を制御する]]」で表示もそれなりになったので、次はダブルクリックや、ポップアップメニューからWEBブラウザを開けるようにします。

流れとしては、createPartControlないで
-フィールドのアクションクラスを初期化
-ビューにダブルクリックのリスナを追加。そのリスナの中でアクションクラスを実行。
-ポップアップメニューにアクションを追加
を行います。

以下そのコードです。

***ソースコード [#n0ac1258]
ダブルクリックでブラウザが開くようにするのは割と簡単で、
 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のバグくせぇなぁ");
     }
   }
 }
という感じです。

次にポップアップメニューにアクションを追加するには[[Viewerにポップアップメニューをつける>Eclipse/プラグイン開発のTIPS集#w21d509e]]でやったように、
 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で実行します。


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

次は[[ビューのツールバーにいろいろな機能を実装>Eclipse/プラグイン開発のTIPS集/GooglePlugin/ビューのツールバーにいろいろな機能を実装]]します。
 

----
この記事は
#vote(おもしろかった,そうでもない)

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


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