Sie haben bereits erfahren, auf welche Weise es die Workbench dem Benutzer ermöglicht, die Darstellung der Plug-in-Funktionalität zu steuern. Sichten können über das Menü Fenster > Sicht anzeigen angezeigt oder verdeckt werden. Aktionssets können mit dem Menü Fenster > Perspektive anpassen... angezeigt oder verdeckt werden. Dank dieser Funktionen kann der Benutzer die Workbench-Funktionen einfacher verwalten.
Perspektiven bieten eine zusätzliche Verwaltungsebene innerhalb eines Workbench-Fensters. Benutzer können bei der Durcharbeitung von Tasks zwischen unterschiedlichen Perspektive umschalten. Eine Perspektive definiert eine Gruppe von Sichten, ein Layout für die Sichten und die sichtbaren Aktionssets, die verwendet werden sollten, wenn der Benutzer die Perspektive zum ersten Mal öffnet.
Perspektiven werden unter Verwendung von IPerspectiveFactory implementiert. Implementierungselemente von IPerspectiveFactory konfigurieren erwartungsgemäß ein Objekt IPageLayout mit Informationen, die die Perspektive und das Seitenlayout der Perspektive beschreiben.
Eine der wichtigsten Aufgaben des Objekts IPageLayout ist es, die Platzierung des Editors und der Sichten im Workbench-Fenster zu beschreiben. Dies Layouts können Sie von der Klasse Layout in SWT unterscheiden. Obwohl die Objekte IPageLayout und Layout eine ähnliche Aufgabe erfüllen (Größe und Position von Widgets in einem größeren Bereich festlegen), müssen Sie keine Kenntnisse über die SWT-Layouts besitzen, um ein Seitenlayout für eine Perspektive angeben zu können.
Das Seitenlayout einer Perspektive wird mit 1 Bereich für das Anzeigen eines Editors initialisiert. Das Factory-Dienstprogramm für die Perspektive ist für das Hinzufügen weiterer, verwandter Sichten zum Editor zuständig. Sichten werden zum Layout mit Bezug auf eine andere Komponente (oben, unten, links, rechts) hinzugefügt. Für Elemente, die anfänglich nicht angezeigt werden, kann auch ein Platzhalter (leerer Bereich) hinzugefügt werden.
Zum Organisieren zusammengehöriger Sichten und zur Reduzierung unnötiger Daten können Sie IFolderLayout verwenden, um Sichten zu Ordnern zusammenzufassen, die mit Hilfe entsprechender Indexzungen gegliedert sind. Die Perspektive "Ressource" platziert beispielsweise die Sicht "Navigator" für eine Ressource in einen Ordner, der sich in der linken oberen Ecke der Workbench befindet. In Ordnerlayouts werden häufig Platzhalter verwendet. Die Perspektive "Ressource" definiert in dem Ordner, in dem sich auch die Sicht "Navigator" befindet, einen Platzhalter für die Sicht "Lesezeichen". Wenn der Benutzer die Sicht "Lesezeichen" aufruft, wird sie in demselben Ordner wie die Sicht "Navigator" angezeigt, der für jede Sicht eine Registerkarte enthält.
IPageLayout ermöglicht Ihnen auch das Definieren der verfügbaren Aktionen und Direktaufrufe innerhalb einer Perspektive.
An weiterer wertvoller Service, der durch Perspektiven und IPageLayout bereitgestellt wird, besteht darin, dass die Navigation zwischen einem Editor und seinen zugehörigen Sichten unterstützt wird. Normalerweise dienen Sichten dazu, dem Benutzer beim Auffinden der Objekte zu helfen, die im Editor bearbeitet werden sollen. Aber auch die entgegengesetzte Operation ist hilfreich: Wenn ein Benutzer in einem Editor ein Objekt bearbeitet, muss er unter Umständen innerhalb einer Sicht auf das Objekt navigieren. Dies kann über das Workbenchmenü Navigieren > Anzeigen in erreicht werden. Mit diesem Befehl kann der Benutzer zu einer unter mehreren zugehörigen Sichten im Kontext des gegenwärtig bearbeiteten (oder ausgewählten) Objekts springen. So kann beispielsweise ein Benutzer, der eine Datei bearbeitet, im Ressourcennavigator zu dieser Datei springen.
Durch die Plug-in-Architektur der Workbench können Entwickler Sichten und Editoren in anderen Plug-ins ergänzen, die noch nicht einmal Kenntnis voneinander haben. Durch die Implementierung der Unterstützung für "Anzeigen in" kann Ihre Sicht oder Ihre Editor eine komfortable Navigation in die Sichten und Editoren bzw. aus den Sichten und Editoren heraus, die von anderen Plug-ins ergänzt werden, unterstützen.
Diese Navigation ermöglicht den Benutzern eine schnelle Bewegung zwischen den Sichten und das einfache Öffnen einer Sicht, die normalerweise nicht in einer bestimmten Perspektive angezeigt wird. Ein Benutzer, der in der Perspektive "Java" arbeitet, kann mit dem Befehl Navigieren > Anzeigen in beispielsweise die gerade bearbeitete Java-Datei in der Sicht "Navigator" anzeigen.
Wenn Sie es den Benutzern ermöglichen wollen, über Navigieren > Anzeigen in aus Ihrem Editor oder Ihrer Sicht in eine andere Sicht zu wechseln, müssen Sie IShowInSource implementieren. Ihre Komponente kann ihr Objekt IShowInSource direkt unter Verwendung des Protokolls (getShowInSource()) oder als Adapter bereitstellen. Mit IShowInSource kann Ihre Komponente einen Kontext(IShowInContext) zur Verfügung stellen, anhand dessen das Ziel entscheidet, wie die Quelle angezeigt werden soll. Der Kontext "Anzeigen in" für einen Editor ist normalerweise sein Eingabeelement. Bei einer Sicht ist der Kontext in der Regel ihre Auswahl. In einem Objekt IShowInContext werden sowohl eine Auswahl als auch ein Eingabeelement bereitgestellt, damit das Ziel flexibel ermitteln kann, wie die Quelle angezeigt werden soll.
Für Editoren wird ein Standardkontext bereitgestellt, damit der Editor ohne eine spezielle Codierung die Funktion "Anzeigen in" nutzen kann. Bei Editoren wird anhand der Auswahl und des Eingabeelements ein geeigneter Kontext erstellt.
Bei Sichten muss IShowInSource durch die Sicht implementiert sein, damit die Funktion Navigieren > Anzeigen in angeboten werden kann.
Sie müssen IShowInTarget implementieren, wenn die Sicht ein gültiges Ziel für eine Operation "Anzeigen in" sein soll. Das Ziel dafür verantwortlich, dass ein Kontext in einer Weise angezeigt wird, die für seine Darstellung geeignet ist. Die Sicht "Navigator" erweitert beispielsweise ihre Baumstruktur, um eine im Kontext angegebene Ressource auszuwählen und anzuzeigen.
Ein Ziel sollte zunächst durch eine Prüfung der Auswahl inIShowInContext entscheiden, was angezeigt werden soll, da dies die spezifischere Angabe ist. Das Eingabeelement sollte nur dann angezeigt werden, wenn keine Auswahl angegeben ist.
Wie wird nun die Liste der verfügbaren Ziele ermittelt? Sie können die verfügbaren Ziele für Ihre Perspektive in ihrem Objekt IPageLayout angeben. An dieser Stelle sei daran erinnert, dass die Navigationsaktion "Anzeigen in" eine Sicht öffnen kann, die in der Perspektive noch nicht vorhanden ist. Unter Verwendung vonIPageLayout.addShowInPart können Sie ein gültiges Ziel für die Aktion "Anzeigen in" durch seine ID angeben. Auf diese Weise können die gültigen Ziele eingerichtet werden, ohne dass nicht benötigte Sichten erstellt werden.