package sample; import org.eclipse.core.runtime.IPlatformRunnable; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; ⁄** * Eclipse RCPのアプリケーションのメインクラス *⁄ public class SimpleBrowserRunnable implements IPlatformRunnable { ⁄** * アプリケーションの起動処理 *⁄ public Object run(Object args) throws Exception { ⁄⁄ 使用するWorkbenchAdvisorの生成 SimpleBrowserWorkbenchAdvisor workbenchAdvisor = new SimpleBrowserWorkbenchAdvisor(); Display display = PlatformUI.createDisplay(); try { ⁄⁄ ワークベンチの起動 int returnCode = PlatformUI.createAndRunWorkbench(display, workbenchAdvisor); if (returnCode == PlatformUI.RETURN_RESTART) { return IPlatformRunnable.EXIT_RESTART; } else { return IPlatformRunnable.EXIT_OK; } } finally { display.dispose(); } } }
package sample; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchAdvisor; ⁄** * ワークベンチの各種設定を行うクラス *⁄ public class SimpleBrowserWorkbenchAdvisor extends WorkbenchAdvisor { ⁄** * 初期表示するパースペクティブIDの取得 * ここで指定するパースペクティブIDは拡張ポイントとして定義したときのIDと一致させる必要がある *⁄ public String getInitialWindowPerspectiveId() { return "SimpleBrowserPerspective"; } ⁄** * ワークベンチの初期設定 *⁄ public void preWindowOpen(IWorkbenchWindowConfigurer configurer) { super.preWindowOpen(configurer); ⁄⁄ タイトル設定 configurer.setTitle("Eclipse RCPサンプルアプリケーション"); ⁄⁄ クールバーの非表示 configurer.setShowCoolBar(false); ⁄⁄ 初期ウィンドウサイズ configurer.setInitialSize( new Point(600, 400)); } }
package sample; import org.eclipse.ui.IFolderLayout; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IPerspectiveFactory; ⁄** * パースペクティブのFactoryクラス *⁄ public class SimpleBrowserPerspective implements IPerspectiveFactory { ⁄** * パースペクティブの初期レイアウトを定義する *⁄ public void createInitialLayout(IPageLayout layout) { layout.setEditorAreaVisible(false); String editorArea = layout.getEditorArea(); ⁄⁄ エディタ領域の左20%を占めるフォルダを作成し、お気に入り表示ビューを追加 IFolderLayout leftFolder = layout.createFolder("left", IPageLayout.LEFT, (float) 0.3f, editorArea); leftFolder.addView("sample.views.FavoriteView"); ⁄⁄ エディタ領域の右80%を占めるフォルダを作成し、Webサイト表示ビューを追加 IFolderLayout rightFolder = layout.createFolder("right", IPageLayout.RIGHT, (float) 0.7f, editorArea); rightFolder.addView("sample.views.BrowserView"); } }
package sample.views; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.part.ViewPart; ⁄** * Webサイトを表示するブラウザのビュー *⁄ public class BrowserView extends ViewPart { private Browser browser; ⁄** * ビューの初期化 *⁄ public void createPartControl(Composite parent) { browser = new Browser(parent,SWT.BORDER); browser.setUrl("http://www.thinkit.co.jp"); } ⁄** * 表示するURLの設定 *⁄ public void setURL(String url){ browser.setUrl( url); } ⁄** * ビューにフォーカスが当った際の処理を記述する *⁄ public void setFocus() { } }
⁄* *ツリーに初期表示するデータを設定 *⁄ private void initialize() { TreeObject javaWorld = new TreeObject("ThinkIT"); TreeParent newsGroup = new TreeParent("ニュース"); TreeObject asahi = new TreeObject("朝日新聞"); TreeObject nikkei = new TreeObject("日経新聞"); TreeObject cnn = new TreeObject("CNN"); newsGroup.addChild(cnn); newsGroup.addChild(nikkei); newsGroup.addChild(asahi); invisibleRoot = new TreeParent(""); invisibleRoot.addChild(javaWorld); invisibleRoot.addChild(newsGroup); }
⁄⁄ ダブルクリック時のアクションを設定 doubleClickAction = new Action() { public void run() { ISelection selection = viewer.getSelection(); TreeObject obj = (TreeObject) ((IStructuredSelection) selection).getFirstElement(); String objectName = obj.getName(); String url = null; ⁄⁄ 選択された名称に応じて、URLを決定 if (objectName.equals("ThinkIT")) { url = "http://www.thinkit.co.jp"; } else if (objectName.equals("朝日新聞")) { url = "http://www.asahi.com"; } else if (objectName.equals("日経新聞")) { url = "http://www.nikkei.co.jp/"; } else if (objectName.equals("CNN")) { url = "http://www.cnn.co.jp/"; } if (url != null) { try { IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); IWorkbenchPage workBenchPage = window.getActivePage(); ⁄⁄ IDを指定してビューを開く BrowserView viewPart = (BrowserView) workBenchPage.showView("sample.views.BrowserView"); ⁄⁄ ビューにURLを設定 viewPart.setURL(url); } catch (PartInitException e) { e.printStackTrace(); } } } };