1 つの Eclipse ワークベンチで複数のウィンドウを作成できます。各ウィンドウはパースペクティブを使用してレイアウトされるため、異なるウィンドウを異なるパースペクティブまたは同じパースペクティブに設定でき、各ウィンドウのパースペクティブを他のウィンドウとは独立して切り替えることができます。
ウィンドウごとに入力を設定することもできます。これは、各ウィンドウが異なるデータで動作している場合に便利です (たとえば、各ウィンドウが異なるサーバーに接続されている場合や、スキーマはすべて同じでデータが異なる異なるデータベースのデータを表示している場合など)。
異なるモニターで同じデータを異なる角度から見ることができるように、ウィンドウのみを使用している可能性があります。その場合、ウィンドウをプログラムで作成する必要はなく、ワークベンチによって提供されるアクションを追加するだけで済みます。これは、ActionBarAdvisor クラスを変更することで実行できます。
フィールド宣言に追加します。
private IWorkbenchAction newWindowAction;
アクションを作成するコード (通常は makeActions と呼ばれるメソッド) に追加します。
newWindowAction = ActionFactory.OPEN_NEW_WINDOW.create(window);
register(newWindowAction);
メニューを作成するコードに追加します。
menu.add(newWindowAction);
ここで、menu は通常、ウィンドウ メニューです。アプリケーションにまだウィンドウ メニューがなく、作成したい場合は、次の行が機能します。
MenuManager menu = new MenuManager(
"&Window",
IWorkbenchActionConstants.M_WINDOW);
これにより、Eclipse IDE の Window->New Window メニュー項目と同じ方法で新しいウィンドウを作成するメニュー項目が表示されます。
一方、各ウィンドウに異なるデータを表示する場合は、新しいウィンドウをプログラムで開く必要があります。これにより、ウィンドウごとに異なる入力を設定できます。次のようなコード行が必要になります。
IWorkbenchPage newPage = window.openPage(inputObject);
ここで、inputObject には、ウィンドウに表示されるデータを識別する情報が含まれています。初期パースペクティブを設定したい場合は、ページで setPerspective を呼び出すことで実行できます。
各ウィンドウにタイトルを設定する必要があります。
newPage.getWorkbenchWindow().getShell().setText(windowTitle);
ここで、windowTitle は、ウィンドウへの入力を説明する文字列です。
次のように、ウィンドウの入力を取得できます。
window.getActivePage().getInput()
次に、これをウィンドウ入力として使用しているクラスにキャストできます。