JAXenter.de

Das Portal für Java, Architektur, Cloud & Agile
X

Nur noch HEUTE (Donnerstag, 18.12.) Frühbucher-Special der JAX 2015 sichern!

Daten und ihre Bindungen

Eclipse DataBinding für die Kommunikation zwischen Modell und GUI

Ludwig Mittermeier

Die Trennung des Kerns einer Applikation, dem Modell, vom Graphical User Interface (GUI) ist eine erstrebenswerte Architektureigenschaft. Dennoch müssen beide Teile miteinander kommunizieren können. Das in Eclipse 3.3 enthaltene Eclipse DataBinding hilft dem Entwickler bei der Erstellung von Applikationen, bei denen in der grafischen Benutzerschnittstelle Daten angezeigt und mit dem Applikationskern synchron gehalten werden müssen.

Ziel der Trennung ist, dass das Modell keine oder möglichst wenige Abhängigkeiten zu einer bestimmten User-Interface-Technologie wie Swing oder SWT hat und sogar auch ohne GUI verwendet werden kann. Eine solche Trennung hat positive Auswirkungen auf Wiederverwendbarkeit, Wartbarkeit, Änderbarkeit und Testbarkeit des Modells. Obwohl also eine Trennung von Modell und GUI das Ziel ist, so müssen diese beiden Teile einer Applikation doch miteinander interagieren: In fast allen Applikationen müssen nämlich bestimmte Parameter der Modellklassen im User Interface angezeigt werden, das User Interface muss also Zugriff zu bestimmten Teilen des Modells erhalten. Entsprechendes gilt für die Gegenrichtung: wird eine Modelleigenschaft in einer editierbaren User-Interface-Komponente angezeigt und ändert der Benutzer diese, so muss diese Änderung natürlich dem Modell mitgeteilt werden. Man spricht hier vom sog. DataBinding: Attribute des Modells werden an User-Interface-Komponenten gebunden, sodass das User Interface das jeweilige Attribut anzeigt, auf Änderungen im Modell reagiert und umgekehrt Änderungen im User Interface auch wieder an das Modell übermittelt werden. Unterstützung hierfür gibt es in der Eclipse-Plattform in Gestalt des Eclipse DataBinding, welches der vorliegende Artikel erklären möchte.

DataBinding bedeutet im Allgemeinen die Synchronisation von Werten zwischen Objekten. Abbildung 1 veranschaulicht dieses Konzept. Die Synchronisation erfolgt oft in beiden Richtungen und schließt häufig auch Datentypkonvertierungen und Werteüberprüfungen mit ein. Oft wird DataBinding dazu verwendet, GUI-Elemente mit Modellattributen zu verknüpfen.

Abb. 1: DataBinding: Synchronisation von Werten zwischen Objekten

Eine technische Ausprägung des allgemeinen DataBinding-Konzepts ist das Eclipse DataBinding. Vom Prinzip her ist Eclipse DataBinding eine Variation des bekannten Modell-View-Controller (MVC)-Entwurfsmusters. Im Unterschied zu diesem hat der Controller beim Eclipse DataBinding jedoch eine zentralere Rolle inne und agiert als Vermittler zwischen Modell und View, indem er beide bezüglich Änderungen beobachtet und aktualisiert (Abb. 2).

Abb. 2: MVC-Entwurfsmuster im Vergleich zu Eclipse DataBinding

Vorteil, dass JFace Content- und LabelProvider eleganter implementiert werden können. Um alle Vorteile von Eclipse DataBinding nutzen zu können, besteht lediglich die Voraussetzung, nicht Swing, sondern das Standard Widget Toolkit (SWT) und JFace für die grafische Benutzeroberfläche zu verwenden. Der Kern von Eclipse DataBinding ist jedoch unabhängig von JFace, und es wäre lediglich ein Adapter für Swing nötig, um Eclipse DataBinding auch für Swing-basierte Java-Anwendungen einsetzen zu können. Anhand eines kleinen Beispiels soll jetzt gezeigt werden, wie die Verknüpfung zwischen Modell und GUI auf herkömmlichem Wege erfolgt. Dann wird in einem weiteren Schritt gezeigt, wie das gleiche Resultat mittels Eclipse DataBinding erzielt werden kann und welche Vorteile und zusätzlichen Möglichkeiten sich daraus ergeben.

 
Verwandte Themen: 

Kommentare

Ihr Kommentar zum Thema

Als Gast kommentieren:

Gastkommentare werden nach redaktioneller Prüfung freigegeben (bitte Policy beachten).

Übersicht zu diesem Beitrag