Ein Plug-in kann die Menüs und die Symbolleiste der Workbench über den Erweiterungspunkt org.eclipse.ui.actionSets durch Menüs, Menüoptionen und Symbolleistenelemente ergänzen. Damit die Anzeige nicht durch die gleichzeitige Darstellung aller Menüergänzungen von allen Plug-ins zu unübersichtlich wird, werden die Ergänzungen in Aktionssets gruppiert, deren Anzeige über die Benutzervorgaben gesteuert werden kann.
Nach Auswahl der Optionen Fenster->Perspektive anpassen... im Workbench-Menü können Sie sehen, durch welche Aktionssets die Workbench ergänzt wurde. Diese Option ruft einen Dialog auf, in dem alle Aktionssets als Befehlsgruppen aufgelistet sind. Ein Haken neben einem Befehlsgruppe gibt an, dass die Menü- und Symbolleistenaktionen in der Workbench angezeigt werden. Wenn Sie den Namen einer Befehlsgruppe auswählen, wird rechts die Liste der verfügbaren Menü- und Symbolleistenaktionen angezeigt. Die folgende Abbildung zeigt die Liste der in der Workbench verfügbaren Befehlsgruppen. (Abhängig von den installierten Plug-ins und der aktiven Perspektive kann die Darstellung in Ihrer Workbench hiervon abweichen.)
Das Tool für Readme-Dateien verwendet ein Aktionsset, um das Workbench-Menü durch verschiedene Aktionen zum Öffnen des Browsers für Readme-Dateien zu ergänzen. (Eine ähnliche Aktion wurde zum Kontextmenü des Ressourcennavigators hinzugefügt.) Die Befehlsdatei lautet wie folgt:
<extension point = "org.eclipse.ui.actionSets"> <actionSet id="org_eclipse_ui_examples_readmetool_actionSet" label="%ActionSet.name" visible="true"> <menu id="org_eclipse_ui_examples_readmetool" label="%ActionSet.menu" path="window/additions"> <separator name="slot1"/> <separator name="slot2"/> <separator name="slot3"/> </menu> <action id="org_eclipse_ui_examples_readmetool_readmeAction" menubarPath="window/org_eclipse_ui_examples_readmetool/slot1" toolbarPath="readme" label="%ReadmeAction.label" tooltip="%ReadmeAction.tooltip" helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context" icon="icons/ctool16/openbrwsr.png" class="org.eclipse.ui.examples.readmetool.WindowActionDelegate" enablesFor="1"> <selection class="org.eclipse.core.resources.IFile" name="*.readme"> </selection> </action> ... </actionSet> </extension>
Sie enthält eine Menge von Angaben. Diese werden jetzt Schritt für Schritt erläutert, beginnend mit der ersten Aktion.
Zunächst wird das Aktionsset deklariert und mit einer Bezeichnung (label) versehen.Die Bezeichnung "Aktionen für Readme-Datei" (definiert für den Schlüssel %ActionSet.name in der Eigenschaftsdatei des Plug-ins) wird zum Anzeigen des Aktionssets im oben darstellten Dialog verwendet. Da der Parameter visible auf 'true' gesetzt wurde, ist das Aktionsset in der entsprechenden Liste für die Anfangseinstellung der Workbench markiert, und die Aktionen werden angezeigt.
Die restliche Aktionssetdeklaration definiert das Menü, in dem die Aktionen angezeigt werden, sowie die Aktionen selbst.
Es wird ein Menü definiert, dessen Bezeichnung (label) in den Workbench-Menüs angezeigt wird. Der Pfad des Menüs (Parameter path) weist die Workbench an, das neue Menü im Segment additions des Menüs Fenster zu platzieren. (Informationen zu Menüpfaden und -segmenten finden Sie unter Pfade für Menüs und Symbolleisten.) Im neuen Menü werden einige Segmente definiert, damit an spezifischen Stellen im Menü Aktionen eingefügt werden können.
Dieses Befehlsformat reicht aus, damit das Menü im Workbench-Menü Fenster angezeigt werden kann.
Als Nächstes werden die Aktionen selbst definiert.
Die Aktionsdefinition (Parameter id, label, icon, class) ähnelt der anderer Aktionen, die Sie in Sichten, Editoren und Kontextmenüs bereits kennen gelernt haben. An diese Stelle konzentrieren wir uns daher auf den Unterschied, nämlich die Position, an der die Aktion angezeigt werden soll. Mit den Parametern menubarPath und toolbarPath wird die Position angegeben. Zunächst wird der Parameter menubarPath definiert, um die Aktion zu einem Segment im gerade definierten Menü hinzuzufügen ( "window/org_eclipse_ui_examples_readmetool/slot1").
Anschließend wird ein neuer Pfad für die Symbolleiste (Parameter toolbarPath) definiert, um die Aktionen in die Symbolleiste der Workbench aufzunehmen. Da es sich um einen neuen Pfad für die Symbolleiste handelt ("readme"), entscheidet die Workbench bezogen auf die Symbolleistenergänzungen anderer Plug-ins, welche Position verwendet wird.
Was geschieht, wenn die Aktion durch einen Benutzer ausgewählt wird? Die Aktion wird durch eine Klasse implementiert, die im Attribut class bestimmt ist. Die Aktion class muss IWorkbenchWindowActionDelegate oder IWorkbenchWindowPulldownDelegate implementieren, wenn die Aktion als Eintrag in einem Pulldown-Menü in der Symbolleiste angezeigt werden soll. Da kein Eintrag in einem Pulldown-Menü erstellt werden soll, wird die Klasse WindowActionDelegate angegeben. Diese Klasse ist mit der Klasse ObjectActionDelegate vergleichbar. Sie startet den Readme-Abschnittsdialog, wenn ein Benutzer die Aktion auswählt. (Der Abschnittsdialog wird unter Anwendungsdialoge näher erläutert.)
Die Aktion stellt auch Aktivierungsbedingungen für den Menüpunkt und das Symbolleistenelement bereit. Die Menü- und Symbolleistenelemente werden nur dann aktiviert (enablesFor="1"), wenn eine einzelne Readme-Datei (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme") ausgewählt wird. Die Menü- und Symbolleistenelemente dieser Aktion werden angezeigt und dem Befehlsformat in der Datei plugin.xml entsprechend aktiviert. Der Plug-in-Code wird erst dann ausgeführt, wenn der Benutzer die Aktion auswählt und die Workbench die Aktion class ausführt.
Die beiden anderen Aktionen werden später im Zusammenhang mit umlenkbaren Aktionen erläutert.