Action & Command Framework

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.

Übersicht der Konfigurationsdateien

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.

Einbinden eigener Commands

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



[10] Details zum dynamischen Aufbau von Menüstrukturen finden sich unter „Dynamische Definition“.

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