- 追加された行はこの色です。
- 削除された行はこの色です。
#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])
#vote(おもしろかった[14],そうでもない[1])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}