|
「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?で実行します。 以上で、ポップアップメニューとダブルクリックからブラウザを起動することができるようになりました。 次はビューのツールバーにいろいろな機能を実装します。 関連リンク †この記事は 現在のアクセス:9974 |