Haftungsausschluss: Der Erweiterungspunkt org.eclipse.ui.menus
ist in Eclipse 3.2 nur teilweise implementiert. Er unterstützt gegenwärtig weder Menü- noch Symbolleistendefinitionen oder Erweiterungen (hierfür sollten die vorhandenen Ergänzungserweiterungen verwendet werden). Er ist jedoch der einzige Mechanismus, über den Fensterobjekte des Typs "trim" (Ausschnitt) in der Workbench ergänzt werden können. Dieser Abschnitt veranschaulicht die Verwendung des Erweiterungspunktes zu diesem Zweck.
Ein Fensterobjekt des Typs "trim" ist ein Steuerelement, das in einer Position (dem so genannten "Ausschnittbereich") am äußeren Rand des Workbenchfensters platziert wird. Das gängigste Beispiel ist die generische Statuszeile, die in den meisten grafischen Benutzerschnittstellen am unteren Rand des Fensters verläuft. Am Erweiterungspunkt org.eclipse.ui.menus können Plug-ins die Workbench um Sichten ergänzen. Plug-ins, die einen Ausschnitt ergänzen, müssen den Ausschnitt in ihrer Datei plugin.xml registrieren und Konfigurationsdaten über den Ausschnitt bereitstellen. Hierzu gehören seine Implementierungsklasse, die Ausschnittklasse (Ausschnittleiste), zu der er gehört, sowie Layoutinformationen wie beispielsweise die Angabe, ob der Ausschnitt während seiner Anordnung im Ausschnittbereich zusätzlichen Platz benötigt.
Die Schnittstelle für ergänzte Ausschnitte ist in IWorkbenchWidget definiert. Plug-ins können (und sollten tatsächlich) auch anstelle einer vollständig neuen Implementierung der Schnittstelle die Klasse AbstractWorkbenchTrimWidget erweitern.
Für das Beispiel des Readme-Datei-Tools wurde ein relativ einfaches Ausschnittfensterobjekt ergänzt, das lediglich eine Zeichenfolge anzeigt sowie angibt, auf welcher Seite der Ausschnitt gegenwärtig verankert ist.
Im Folgenden soll die Definition des Erweiterungspunktes näher betrachtet werden, mit der dieses Ausschnittelement ergänzt wird:
Der erste Abschnitt der Erweiterung (die Definition von "group") definiert einfach die ID der Gruppe sowie mit dem Element "location" eine Position der Gruppe. Diese befindet sich am Anfang der Gruppe "status" (also am Beginn des unteren Ausschnittbereichs). Der zweite Abschnitt (die Definition von "widget") gibt die Implementierungsklasse des Fensterobjekts an und definiert im Element "location" die Position des Fensterobjekts in der zuvor definierten Gruppe.
Bitte beachten Sie, dass der Typ der Leiste in beiden Fällen mit trim definiert ist. Dies ist der einzige gegenwärtig unterstützte Typ.
Nachdem Sie das Beispiel readmetool
installiert haben, sollten Sie sich die Implementierung der Methode fill
des Elements "ReadmeTrimWidget" ansehen. Sie unterscheidet sich von den anderen Methoden fill
, die beim Hinzufügen von Fensterobjekten in Menüs oder Symbolleisten verwendet wird, insofern, als sie auch die Seite (side) übergibt, an der der Ausschnitt platziert werden kann (dies ist erforderlich, weil der Ausschnitt von einem Bereich in einen anderen gezogen werden kann). Auf diese Weise kann das Implementierungselement die Anzeige des Fensterobjekts basierend auf seiner Position durch eine Änderung der Ausrichtung usw. anpassen. Die aktuelle Implementierung ändert lediglich den angezeigten Text so, dass dieser die aktuelle Position wiedergibt. Bitte beachten Sie auch die Verarbeitung des Lebenszyklus "dispose"/"fill": Es gibt wiederholte Aufrufe von dispose
und fill
, die durch Workbenchänderungen (also durch einen Perspektivenwechsel oder durch das Ziehen des Ausschnitts an eine neue Seite) generiert werden.
Im obigen Beispielcode ist jedoch nicht dargestellt, dass sich der Manager für das Ausschnittlayout auf die entsprechende Implementierung des Ausschnitts für die Methode computeSize
des Steuerelements für das Fensterobjekt stützt. Das Fensterobjekt muss in der Lage sein, seine bevorzugte Größe zu berechnen und zurückzugeben, da mit dieser Angabe während der Implementierung des Layoutmanagements beispielsweise ermittelt wird, wie viel Platz für einen bestimmten Ausschnittbereich benötigt wird. Hinweise zur korrekten Implementierung von computeSize
enthält die SWT-Dokumentation.