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.
Ä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.
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
)“.