#topicpath ---- #contents ** ワークベンチ以下の関連 [#h13d77f2] プラグイン開発で、いろいろなUIにアクセスしたいわけですが、それぞれのUIがどのような関連になっているのかをまとめてみました。 #ref(workbench_decomposed.gif) ***WorkBench window [#h396168d] ワークベンチ(ワークベンチ・ウィンドウ)とは、大ざっぱに言うと、「プラットフォームの始動時に開くウィンドウ」のことです。 -クラス名:IWorkbenchWindow -取得方法: IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); IWorkbench を取得するために AbstractUIPlugin#getWorkbench()てのもありますが This method exists as a convenience for plugin implementors. The workbench can also be accessed by invoking PlatformUI.getWorkbench(). なので同じなんですね。ソースを見ても public IWorkbench getWorkbench() { <-AbstractUIPlugin#getWorkbench() return PlatformUI.getWorkbench(); } でした。 ちなみに IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow[] windows = workbench.getWorkbenchWindows(); で IWorkbenchWindow の配列が取得できますが、この配列はEclipseで ウィンドウ >> 新規ウィンドウ で開いているウィンドウたちです。 ***Page [#f10ff56d] ワークベンチ・ウィンドウの内部には、パーツを含む 1 つのページがあります。ページは、パーツをグループ化するためのインプリメンテーション・メカニズムです。 -クラス名:IWorkbenchPage で、ページって何だろうなって思って、 IWorkbench workbench = PlatformUI.getWorkbench(); workbench.getActiveWorkbenchWindow().getActivePage().close(); ってやったら、すべてのパースペクティブが閉じてしまいました。 #ref(close.png) 単純にパースペクティブと1対1でもないんでしょうか((どうも WorkbenchWindow -> IWorkbenchPage -> IViewPart となっているようだ))。 また、 workbench.getActiveWorkbenchWindow().getActivePage().getLabel()); としたら、ワークスペース - J2EEってのが表示されました。やっぱ、パースペクティブだよなぁ。 *** 各インタフェースの関係 [#de90f9fe] PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActivePart().getSite().getPage(); など無限に行き来できるみたいですが、これをみてもわかるとおり、 Workbench(1) -> (N)IWorkbenchWindow(1) -> (N)IWorkbenchPage (1) -> (N)IWorkbenchPart(1) -> (1)IWorkbenchPartSite(1) -> (1)IWorkbenchPage ... となっています。 IWorkbenchPartはいわゆるビューやエディタで、それに1対1でIWorkbenchPartSiteがあり、名前とかIDとか、ビュー・エディタの情報を管理しています。 IWorkbenchPageはビューの集まりでパースペクティブかな?もちろんIWorkbenchWindowとは1対Nとなります。 IWorkbenchWindowはいわゆるウィンドウです。新しいウィンドウを開くとかやると複数開くので、Workbenchとは1対Nになります。 ---- この記事は #vote(おもしろかった[13],そうでもない[1]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}