ワークベンチを使用してプラグイン機能の外観を制御するいくつかの方法については、既に説明しました。ビューは、「ウィンドウ」>「ビューの表示」メニューを使用して、表示/非表示の切り替えが可能です。アクション・セットは、
「ウィンドウ」>「パースペクティブのカスタマイズ...」メニューを使用して、表示/非表示を切り替えることができます。これらのフィーチャーは、ユーザーがワークベンチを編成するときに役立ちます。
パースペクティブは、ワークベンチ・ウィンドウ内で追加の編成レイヤーを提供します。ユーザーは、パースペクティブが複数のタスク間に渡る場合に、パースペクティブを切り替えることができます。パースペクティブは、ビューのコレクション、ビューのレイアウト、およびユーザーが最初にパースペクティブを開いたときに使用する必要のある、可視のアクション・セットを定義します。
パースペクティブは、IPerspectiveFactory を使用して実装されます。 IPerspectiveFactory を実装する場合は、パースペクティブおよびそのパースペクティブ・ページのレイアウトを記述する情報とともに、 IPageLayout を構成することが期待されます。
IPageLayout のメイン・ジョブの 1 つは、ワークベンチ・ウィンドウ内のエディターおよびビューの配置を記述することです。これらのレイアウトは、 SWT 内の Layout クラスとは違うことに注意してください。 IPageLayout および Layout は、類似した問題 (より大きい領域内でのウィジェットのサイズ変更および位置決め) を解決しますが、パースペクティブ・ページ・レイアウトを提供するために SWT レイアウトを理解する必要はありません。
パースペクティブ・ページのレイアウトは、エディターを表示するための一領域を使用して初期化されます。パースペクティブ・ファクトリーは、エディターに関連した他のビューを追加する役割を担います。ビューは、他の部分に対応 (上、下、左、右) してレイアウトに追加されます。また、プレースホルダー (空スペース) も最初に表示されない項目に追加することができます。
関連するビューを編成し、扱いやすくするため、IFolderLayout を使用してタブ付きフォルダーにビューをグループ化することができます。例えば、リソース・パースペクティブは、ワークベンチの左上角のフォルダー内にリソース・ナビゲーターを配置します。 プレースホルダーは、フォルダー・レイアウトと共に共通で使用されます。リソース・パースペクティブは、リソース・ナビゲーターと同じフォルダー内の「ブックマーク」ビューにプレースホルダーを定義します。ユーザーが「ブックマーク」ビューを表示すると、それは、ナビゲーターと共に同じフォルダー内に表示され、ビューごとにタブが 1 つ付いています。
また、IPageLayout を使用して、使用可能なアクションおよびショートカットをパースペクティブ内に定義することができます。
パースペクティブおよび IPageLayout によって提供されるその他の重要なサービスは、エディターとその関連ビューとの間のナビゲーションの支援です。一般に、ビューは、ユーザーがエディターで操作するオブジェクトを検索するために役立つものと考えられます。ただし、エディターでオブジェクトを操作するユーザーが、ビュー内のそのオブジェクトに移動する必要がある可能性がある場合には、対話操作も役立ちます。これは、ワークベンチの「ナビゲート」>「表示」メニューを使用して行うことができます。このコマンドを使用すると、ユーザーは、現在編集 (または選択) されているオブジェクトのコンテキスト内で任意の数の関連ビューのいずれかにジャンプすることができます。例えば、ファイルを編集しているユーザーは、リソース・ナビゲーターにあるそのファイルにジャンプすることもできます。
ワークベンチのプラグイン・アーキテクチャーを使用すると、開発者は、お互いを認識さえしていないさまざまなプラグインにビューとエディターを提供することが可能になります。「表示」のサポートを実装することによって、ビューまたはエディターは、別のプラグインによって提供されるビューおよびエディターへの、または別のプラグインによって提供されるビューおよびエディターからの便利なナビゲーションをサポートすることができます。
このナビゲーションを使用すると、ユーザーは、ビュー間を素早く移動したり、特定のパースペクティブ内で通常は表示されていないビューを容易に開くことができます。例えば、Java パースペクティブで作業するユーザーは、「ナビゲート」>「表示」を使用して、「ナビゲーター」ビューで現在編集されている Java ファイルを表示できます。
ユーザーがエディターまたはビューから「ナビゲート」>「表示」と使用して別のビューにジャンプすることができるようにしたい場合、IShowInSource を実装する必要があります。パーツは、プロトコル (getShowInSource()) を直接使用して、またはアダプターとして IShowInSource を提供することができます。 IShowInSource を使用することで、パーツにより、ソースの表示方法を決定するためにターゲットが使用するコンテキスト (ShowInContext) を提供できます。エディターのコンテキストで表示されるものは、一般に、その入力要素です。ビューでは、コンテキストは、一般に、その選択です。ソースの表示方法をターゲットが柔軟に決定できるように、 ShowInContext には選択と入力要素の両方が用意されています。
特殊なコーディングがなくてもエディターが「表示」に参加できるように、エディターのデフォルト・コンテキストが提供されます。エディターの場合、入力要素と選択が、該当するコンテキストを作成するために使用されます。
ビューの場合、「ナビゲート」>「表示」 機能を提供するには、ビューによって IShowInSource を実装する必要があります。
ビューを「表示」操作で有効なターゲットにしたい場合、IShowInTarget を実装する必要があります。ターゲットには、その表示に適切な方法で所定のコンテキストを表示する責任があります。例えば、「ナビゲーター」ビューはツリーを展開して、コンテキストで指定されたリソースを選択および表示します。
ターゲットは、表示内容を決定する場合に、まず ShowInContext の選択を確認します。これがより特定された情報であるためです。選択が指示されていない場合にのみ、ターゲットは入力要素を表示します。
使用可能なターゲットのリストはどのように判別されるのでしょうか? パースペクティブで使用可能なターゲットは、その IPageLayout で指定できます。「表示」ナビゲーションが、パースペクティブにまだ表示されていないビューを開く場合があることを思い出してください。 IPageLayout.addShowInPart を使用すると、有効な「表示」ターゲットを ID で指定することができます。この方法では、不必要にビューを作成しなくても、有効なターゲットを設定することができます。