jadice integriert und erweitert das in Swing enthaltene action-getriebene Prinzip
zur Erstellung grafischer Benutzeroberflächen. Der aktuelle Status einer
GUI-Komponente wird durch die ihr zugeordnete Action
definiert. Zusätzlich kennt die Action zugehörige Commands, die ausgeführt werden,
sobald der Nutzer das GUI-Element auswählt (beispielsweise durch
Klick auf einen JButton
). Das Command bestimmt, was innerhalb
der Applikation geschehen soll. Da Commands einerseits unabhängig von der umgebenden
Applikation verwendbar sein sollen, andererseits aber unter Umständen Zugriff auf
verschiedene Objekte benötigen, werden jedem Command mit Hilfe eines Kontextobjekts
vor Ausführung benötigte Referenzen injiziert.
Für Integratoren bietet das Action & Command Framework verschiedene
Einsatzmöglichkeiten. Der jadice document platform liegen einsatzbereite Implementationen bei, die
zumeist in den Demo-Client integriert sind und daraus übernommen werden können. Über
.properties
-Dateien besteht die
Möglichkeit, ohne Programmieraufwand Verhalten und Erscheinungsbild der Aktionen zu
konfigurieren, sowie festzulegen, an welche Kommandos sie gebunden werden. Da eine
Vielzahl von Kommandos in den Paketen AppBase und Demo enthalten sind, können auch
individuelle Anpassungen am Quellcode leicht umgesetzt werden. Zudem existieren
abstrakte Basisklassen, die das Erstellen eigener Kommandos erleichtern. Diese
können ebenfalls über die Konfigurationsdateien in die Benutzeroberfläche
eingebunden werden. Mit Hilfe des MenuContributor
besteht zudem die Möglichkeit,
flexible Menüstrukturen zur Laufzeit zu definieren.[10]
Das Zusammenwirken von Actions und Commands in Kombination mit einer einfachen Konfigurierbarkeit bietet ein starkes und flexibles Framework, das Anpassungen und Integration in bestehende Anwendungen auf einfachste Art, oft auch mit geringem Programmieraufwand, ermöglicht. Die folgenden Abschnitte gehen zunächst auf die Struktur der Konfigurationsdateien ein um Änderungen an vorhandenen Actions zu ermöglichen. Im Anschluss werden Informationen zur Implementation eigener Kommandos gegeben.
Die Konfigurationsdateien beschreiben das Erscheinungsbild, Tastenbelegungen und die Struktur von Menüs und Toolbars der mitgelieferten Commands. Zur Anpassung dieser Eigenschaften an die integrierende Umgebung, um eigene Commands hinzuzufügen oder um verschiedene Look & Feels für verschiedene Einsatzmöglichkeiten zu erstellen, können Konfigurationsdateien angepasst werden.
Bitte beachten Sie, dass die Konfigurationsdateien in internationalisierten Varianten vorliegen und automatisch entsprechend der Länderkennung des Betriebssystems verwendet werden. Änderungen an diesen Dateien sollten dementsprechend stets in allen Varianten getätigt werden.
In der folgenden Übersicht werden die Aufgaben, Inhalte und das Zusammenspiel der einzelnen Konfigurationsdateien erläutert.
-
commands.properties
-
Diese Konfiguration erzeugt eine Verknüpfung zwischen einem eindeutigen Command-Namen, der in den anderen Konfigurationen als Referenz verwendet wird, und dessen Verwirklichung, sprich der genauen Klassenreferenz.
Commands werden über Reflection erstellt. Um Instantiierungs-Fehler zu vermeiden, muss auf die korrekte Angabe von Pfad- und Klassennamen wie auch auf Groß- und Kleinschreibung geachtet werden.
-
actions.properties
-
In dieser Konfiguration werden die Eigenschaften der Actions, wie Tool-Icon, Tooltip-Text, Accessor und ähnliches, bestimmt.
Neben der Definition der äußeren Erscheinung einer Action wird über diese Datei ebenfalls bestimmt, welche Commands in welcher Reihenfolge mit Auslösung der Action zur Ausführung gelangen sollen. Dabei werden zur Identifizierung der Commands die eindeutigen Command-Bezeichner aus referenzierten
commands.properties
-Konfigurationen verwendet. -
menucomponents.properties
-
Die Menükomponenten-Konfiguration hat die Aufgabe, verschiedene Actions zu Strukturen zusammenzufassen, die in einer grafischen Benutzeroberfläche integriert werden können. Im Besonderen kann über diese Konfiguration die Zusammensetzung von Menübars, Menüs, Sub-Menüs, und Toolbars definiert werden. Auch Sub-Strukturen zur weiteren Verwendung in beispielsweise Toolbars und Menüs können angegeben werden.
Zur Identifikation erhält jede Struktur einen eindeutigen Namen. Im Quellcode wird auf diesen Namen referenziert um daraus beispielsweise ein Menü oder eine Toolbar erstellen zu lassen. Die Actions, die in einer Struktur enthalten sein sollen, werden als kommaseparierte Liste von Action-Namen angegeben. Jede Action, die in eine Struktur aufgenommen wird, muss wiederum in referenzierten
actions.properties
-Dateien zur Verfügung gestellt werden.
Das levigo Action & Comand Framework bietet Integratoren vielfältige Möglichkeiten zur Einbindung von Aktionen in grafische Benutzeroberflächen. Neben den durch jadice bereitgestellten Kommandos wie beispielsweise Zoom, Rotation oder Blättern, steht das Framework auch für spezielle Anwendungsfälle der integrierenden Applikation zur Verfügung. Zum einen können bestehende Kommandos erweitert werden, zum anderen können mit wenigen Zeilen Code eigene Kommandos schnell umgesetzt und flexibel eingebunden werden.
Detaillierte Informationen zu den beteiligten Klassen und deren Verwendung finden sich unter „Details zum Action & Command Framework“.