Menüs und Symbolleisten

Um existierende Kommandos in einer Benutzeroberfläche anzubieten, werden sie mit Aktionen verknüpft.[29] Zur Präsentation der Aktionen werden diese wiederum in Menü- und Symbolleistenstrukturen zusammengefasst. Die jadice document platform bietet zwei unterschiedliche Möglichkeiten an um diese Strukturen aufzubauen. Auf beide wird im Folgenden eingegangen.

Statische Definition

Ähnlich der Definition von Aktionen mittels entsprechender Konfigurationsdateien, können auch Menü- und Symbolleistenstrukturen festgelegt werden. Die Strukturdefinitionen referenzieren Aktionen und bringen diese in eine Reihenfolge. Es können daher ausschließlich Aktionen verwendet werden, die über das Konfigurationsframework definiert sind.

Um Strukturen zu erstellen wird eine Konfigurationsdatei namens menucomponents.properties verwendet. Diese verweist auf eine oder mehrere actions.properties-Dateien, definiert Strukturen als Property-Eintrag und befüllt diese mit Aktionsreferenzen aus den verlinkten Dateien.

Um aus den Strukturdefinitionen die tatsächlichen Objekte (Menü- oder Symbolleiste) zu erstellen, wird die Klasse DefaultMenuComponentFactory verwendet. Beim Erzeugen einer Instanz mit Hilfe der Methode getInstance(String propertiesFileName) wird angegeben, in welcher Datei die Strukturdefinitionen zu finden sind. Die tatsächlichen Objekte können über entsprechende Methoden von der neu erzeugten Instanz erfragt werden.

Dynamische Definition

Um auf den aktuellen Zustand des Programms mit einer angepassten Struktur reagieren zu können, erlaubt die jadice document platform an unterschiedlichen Stellen die dynamische Definition von Menü- und Symbolleisteneinträgen. Besonders nützlich ist dies für Kontextmenüs, deren Inhalt von der Position abhängt, an welcher sich die Maus zum Zeitpunkt des Öffnens befindet. Dynamische Strukturen können überall dort angeboten werden, wo das Interface MenuContributor realisiert wird. Im Besonderen sind alle Tools auch gleichzeitig MenuContributor.[30]

Das Interface definiert eine Methode MenuContributor.contribute(ContributionContext context, MenuBuilder menuBuilder). Diese wird immer dann aufgerufen, wenn die entsprechende Struktur (Menü oder Symbolleiste) zur Anzeige gebracht werden soll. Aufgabe des Implementierenden ist es, der Struktur Einträge in Form von Actions hinzuzufügen. Um einen Eintrag aufzunehmen, muss er dem mitgelieferen MenuBuilder übergeben werden. Auch Substrukturen können auf diesem Weg definiert werden.

Um entscheiden zu können, welche Actions dynamisch hinzugefügt werden sollen, werden entsprechende Informationen benötigt. Diese werden durch das beim Methodenaufruf mitgelieferte Objekt des Typs ContributionContext angeboten. Neben dem eingetretenen Swing Event wird der jadice Context zur Verfügung gestellt. Außerdem liegen Informationen darüber vor, um welche Art von Struktur es sich handelt, zu der ein Beitrag geleistet werden kann.



[29] Details zu Kommandos gibt „Kommandos (Command)“. Nähere Informationen zu Aktionen finden sich unter „Aktionen (CommandAction)“.

[30] Nähere Informationen zu Tools gibt „Tools“.

[jadice document platform Version 5.5.12.1: Dokumentation für Entwickler. Veröffentlicht: 2021-08-17]