Eclipse/プラグイン開発のTIPS集/GooglePlugin/ダブルクリックやポップアップメニューから、ブラウザを開く
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
//ここにコンテンツを記述します。
「[[LabelProviderで表示を制御する>Eclipse/プラグイン開発...
流れとしては、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のバグくせぇなぁ");
}
}
}
という感じです。
次にポップアップメニューにアクションを追加するには
private void hookContextMenu() {
MenuManager menuMgr = new MenuManager("#PopupMenu"); /...
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
fillContextMenu(manager);
}
});
Menu menu = menuMgr.createContextMenu(viewer.getContro...
viewer.getControl().setMenu(menu);
getSite().registerContextMenu(menuMgr, viewer);
// getSite().registerContextMenu("hogeID",menuMgr, vie...
// ↑別のIDをつける場合(ここではhogeID)
}
private void fillContextMenu(IMenuManager manager) {
manager.add(openBrowserAction);
// Other plug-ins can contribute there actions here
manager.add(new Separator(IWorkbenchActionConstants.MB...
manager.add(new Separator(IWorkbenchActionConstants.MB...
+ "-end"));
}
として hookContextMenu を createPartControlで実行します。
以上で、ポップアップメニューとダブルクリックからブラウザ...
次は[[ビューのツールバーにいろいろな機能を実装>Eclipse/プ...
***関連リンク [#r38ed927]
-[[Eclipse/プラグイン開発のTIPS集/getSite().registerConte...
----
この記事は
#vote(おもしろかった[1],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
//ここにコンテンツを記述します。
「[[LabelProviderで表示を制御する>Eclipse/プラグイン開発...
流れとしては、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のバグくせぇなぁ");
}
}
}
という感じです。
次にポップアップメニューにアクションを追加するには
private void hookContextMenu() {
MenuManager menuMgr = new MenuManager("#PopupMenu"); /...
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
fillContextMenu(manager);
}
});
Menu menu = menuMgr.createContextMenu(viewer.getContro...
viewer.getControl().setMenu(menu);
getSite().registerContextMenu(menuMgr, viewer);
// getSite().registerContextMenu("hogeID",menuMgr, vie...
// ↑別のIDをつける場合(ここではhogeID)
}
private void fillContextMenu(IMenuManager manager) {
manager.add(openBrowserAction);
// Other plug-ins can contribute there actions here
manager.add(new Separator(IWorkbenchActionConstants.MB...
manager.add(new Separator(IWorkbenchActionConstants.MB...
+ "-end"));
}
として hookContextMenu を createPartControlで実行します。
以上で、ポップアップメニューとダブルクリックからブラウザ...
次は[[ビューのツールバーにいろいろな機能を実装>Eclipse/プ...
***関連リンク [#r38ed927]
-[[Eclipse/プラグイン開発のTIPS集/getSite().registerConte...
----
この記事は
#vote(おもしろかった[1],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: