Perspektiven

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 über  IPerspectiveFactory implementiert.  Implementierungselemente von IPerspectiveFactory konfigurieren erwartungsgemäß ein Objekt IPageLayout mit Informationen, die Perspektive und das Seitenlayout der Perspektive beschreiben.

Layout von Workbench-Komponenten

Eine der wichtigsten Aufgaben des Objekts IPageLayout ist es, die Platzierung des Editors und der Sichten im Workbench-Fenster zu beschreiben. Diese 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 Fensterobjekten 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 einem 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.  

Sichten und Editoren mit "Anzeigen in" verlinken

Ein weiterer hilfreicher Service, den Perspektiven und IPageLayout bieten, ist die Hilfe bei der Navigation zwischen einem Editor und den zugehörigen Sichten.  Normalerweise wird davon ausgegangne, dass Sichten dem Benutzer dabei helfen, die zu bearbeitenden Objekt in Editoren zu finden.  Allerdings ist auch die Rückoperation nützlich:  ein Benutzer, der in einem Editor mit einem Objekt arbeitet, muss möglicherweise zu diesem selben Objekt in einer Sicht navigieren.  Dies kann über das Workbench-Menü Navigieren> Anzeigen in bewerkstelligt werden.  Dieser Befehl ermöglicht es Benutzern, zu einer von beliebig vielen zugehörigen Sichten in den Kontext des zur Zeit bearbeiteten (oder ausgewählten) Objekts zu springen.  Ein Benutzer, der gerade eine Datei editiert, will beispielsweise möglicherweise zur gleichen Datei im Ressourcennavigator 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.

Quelle für "Anzeigen in"

Wenn Sie Benutzern die Möglichkeit bieten wollten, die Funktion Navigieren> Anzeigen in von Ihrem Editor aus zu nutzen, oder zu einer anderen Sicht zu wechseln, müssen Sie IShowInSource implementieren.  Ihre Komponente kann das entsprechendeIShowInSourcedirekt über ein Protokoll (getShowInSource()) oder als Adapter bereitstellen. Über IShowInSource kann Ihre Komponente einen Kontext(ShowInContext) bereitstellen, mit dem das Ziel entscheiden kann, wie die Quelle angezeigt werden soll.  Der Kontext 'Anzeigen in' eines Editors ist normalerweise das entsprechende Eingabeelement.  Für eine Sicht ist der Kontext normalerweise die entsprechende Auswahl. Sowohl Auswahl als auch Eingabeelement werden in einem Kontext ShowInContextbereitgestellt, so dass das Ziel bei der Anzeige der Quelle flexibel ist. 

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.

Ziel für "Anzeigen in"

Sie müssen IShowInTarget implementieren, wenn Ihre Sicht ein gültiges Ziel für eine "Anzeigen in"-Operation sein soll.  Das Ziel ist dafür verantwortlich, einen bestimmten Kontext auf eine für seine Darstellung geeignete Art und Weise anzuzeigen.  Die Sicht 'Navigator' erweitert beispielsweise seine Baumstruktur derart, dass eine im Kontext angegebene Ressource ausgewählt und angezeigt werden kann.  

Ein Ziel sollte zunächst durch eine Prüfung der Auswahl ShowInContext entscheiden, was angezeigt werden soll, da dies die spezifischere Angabe ist.  Das Eingabeelement sollte nur dann angezeigt werden, wenn keine Auswahl angegeben ist.

Geeignete Ziele darstellen

Als nächstes geht es darum, eine Liste verfügbarer Ziele zu bestimmen. Die verfügbaren Ziele einer Perspektive können im entsprechenden IPageLayout angegeben werden.  Sie wissen bereits, dass die Navigation "Anzeigen in" eine Sicht öffnen kann, die in der Perspektive noch nicht vorhanden ist. Über IPageLayout.addShowInPart, können Sie über eine ID ein gültiges Ziel für "Anzeigen in" angeben. Auf diese Weise können die gültigen Ziele bestimmt werden, ohne dass überflüssige Sichten erzeugt werden müssen.