Eclipse Magazin 3.2009 JPA Mit Eclipselink

Eclipse Magazin 3.2009 JPA Mit Eclipselink

Plus CD! Neue Serie: Eclipse-Business-Modelle >> 78 eclipse magazin 3.2009 Deutschland € 9,80 3.09 Österreich € 10,80, Schweiz CHF 19,20 You spoke. We listened. JPA mit EclipseLink Introducing Liferay Enterprise Edition. www.eclipse-magazin.de >> Bonusartikel „Eclipse DataBinding für die Kommunikation zwischen Modell und GUI“ von Ludwig Mittermeier JPA mit >> Persistenz-Frameworks EclipseLink, EMF Teneo, CDO >> Tools & Plug-ins Apache POI, Apache Lucene 2.4.0, Luke – Lucene Index Toolbox EclipseLink >> Modeling Now get the best of both worlds. • Model Query, Net4j RCP bei der Eisenbahn Liferay Enterprise Edition gives you all the benefits of open source with the stability, Weitere Infos S. 3 security, and reliability of an enterprise subscription. And with version 5.1, get the latest in SOA, Social Networking, and Collaboration technology, all at a fraction of the cost of Oracle® or IBM®. Eclipse RCP >> 72 • Spring Dynamic Modules RCP-Einsatz bei den Schweizerischen Bundesbahnen Liferay 5.1 Enterprise Edition Maintenance Subscription Platinum Support (24x7) 2.950 EUR / server / year 19.950 EUR / server / year Spring Dynamic Compare Oracle® WebCenter Suite: 125.000 EUR / processor, support 27.500 EUR / yr, as of 6 / 2008 Modules >> 12 • Eclipse SOA Modularisierung mit Spring DM For more information, email us at [email protected]. • Alle Infos zum Eclipse-Business-Modelle Eclipse SOA >> 80 Was ist guter Service? ab Seite 53 >> 21 EclipseLink als JPA-Provider EUROPEAN HEADQUARTERS - LANGEN, GERMANY 68864 D LIFERAY GMBH — ROBERT - BOSCH - STRASSE 11, 63225 LANGEN, GERMANY XML Binding mit EclipseLink >> 26 TEL: +49 - (0) 6103 - 3018570 Ý FAX: +49 - (0) 6103 - 3018571 „ EclipseLink bietet multiple Persistenzservices“ EclipseLink-Lead Doug Clarke im Gespräch >> 29 DataBinding für UI-Controls Rich Client Platform Foto: P. Rudi Eclipse DataBinding für komplexe UI Controls Quellcode DataBinding für auf CD! Fortgeschrittene HEIKO BARTH UND THORSTEN SCHENKEL >> ellen Informationsquellen ist die Eclipse- In vielen Applikationen wird bereits Eclipse DataBinding für die Tren- DataBinding-Wiki-Seite [1], eine andere nung und Synchronisation von grafischer Benutzeroberfläche und dem sind die zwei Dutzend Beispiele im CVS- Repository [2]. Es gibt jedoch auch ver- Modell eingesetzt. Entsprechende Publikationen befassen sich ausgiebig schiedene Artikel zu diesem Thema, die mit den Grundlagen des DataBindings. Dieser Artikel geht einen Schritt sich im Wesentlichen mit den Grundla- gen des Eclipse DataBinding befassen weiter und zeigt, dass Eclipse DataBinding sehr effizient für komplexe UI (Kasten: „Wo gibt‘s mehr zu Eclipse Da- Controls (z. B. Tabellen) verwendet werden kann. taBinding?“). Im Folgenden werden die fortgeschrittenen Aspekte des Eclipse DataBinding anhand verschiedener Bei- clipse DataBinding etabliert sich Wart- und Testbarkeit steigern wieder- spiele im Detail beleuchtet. Einnerhalb des Eclipse-Ökosystems um die Akzeptanz dieser Vorgehenswei- zunehmend als Standard für die einheit- se in den Reihen der Java-Entwickler. Viewer liche Synchronisation des Graphical Leider reflektiert die aktuell verfüg- JFace erleichtert mit seinen Viewern den User Interface (GUI) mit dem zugrunde bare Dokumentation nicht vollständig Umgang mit komplexeren SWT-Widgets liegenden Datenmodell. Die daraus re- die Möglichkeiten, die in Eclipse Data- wie Table oder Tree. Die Viewer kapseln sultierenden Vorteile in den Bereichen Binding stecken. Eine der wenigen offizi- bestehende SWT-Widgets für eine verein- www.eclipse-magazin.de eclipse magazin 3.09 43 Rich Client Platform DataBinding für UI-Controls Abb. 1: ListViewer Abb. 2: Master-Detail fachte Anbindung eines Datenmodells. feuert. Das Ganze sieht im Code dann Klasse Person liefert toString den Nach- Eclipse DataBinding erweitert dieses wie folgt aus: namen. Konzept durch verschiedene Adaptoren Um eine Änderung innerhalb eines für einen vereinheitlichten Zugriff auf ListViewer viewer = new ListViewer(shell); Personenobjekts automatisch in dem das Datenmodell. Am einfachsten kann viewer.setContentProvider List Widget zu reflektieren, ist ein wei- anhand des List Widgets die Verwen- (new ObservableListContentProvider()); terer Schritt notwendig. Das Modellob- dung von JFace-Viewern und Eclipse List<Person> persons = createPersonsList(); jekt muss eine Schnittstelle anbieten, die DataBinding veranschaulicht werden. In WritableList input = new WritableList es erlaubt, dessen Properties zu über- einem kleinen Beispiel sollen die Namen (persons, Person.class) wachen. Nur auf diese Weise besteht viewer.setInput(input); von Personen in einer Liste angezeigt die Möglichkeit, Änderungen direkt werden. Als Modell liegt eine Liste mit weiterzugeben. Anschließend kann sich Instanzen der Klasse Person vor: Änderungen an der WritableList werden ein spezieller LabelProvider über diesen auf diese Weise sofort in dem UI reflek- Mechanismus an dem Modellobjekt public class Person { tiert. Der ObservableListContentPro- registrieren und die Wertänderungen private String lastName; vider überwacht die Liste und leitet Än- an das User Interface weitergeben. Die public Person(String lastName) { derungen an das Widget weiter. Hierfür Vorgehensweise ist der Überwachung this.lastName = lastName; wird der Quellcode wie folgt erweitert. der WritableList sehr ähnlich. Exemp- } Dem GUI wird ein Button hinzugefügt, larisch erweitern wir nun den Code wie der das selektierte Element aus der Per- folgt: In unserem Beispiel wird zunächst public void setLastName(String lastName) { sonenliste löscht: ein Button hinzugefügt, der den Nach- this.lastName = lastName; } namen komplett in Groß- bzw. Klein- Button removeButton = new Button(shell, SWT.PUSH); buchstaben umwandelt: removeButton.setText("Remove"); public String getLastName() { removeButton.addSelectionListener return lastName; Button changeButton = new Button(shell, SWT.PUSH); (new SelectionAdapter() { } changeButton.setText("Change to upper/lower case"); @Override changeButton.addSelectionListener public void widgetSelected(SelectionEvent e) { @Override (new SelectionAdapter() { if (viewer.getSelection().isEmpty()) { public String toString() { return; return getLastName(); } Wo gibt´s mehr zu } Person p = (Person) ((IStructuredSelection) viewer Eclipse DataBinding? .getSelection()).getFirstElement(); In dieser Ausgabe des Eclipse Magazins: } input.remove(p); „EMF und SWT: Datenmodell und UI effizient } verheiratet!“ von Matthias Heinrich und Für Listen bietet das Eclipse DataBin- }); Henrik Lochmann. ding bereits einen passenden Content- Auf der Heft-CD und auf JAXenter.de: Provider: ObservableListContentPro- Nach dem Löschen des selektierten Ele- „Daten und ihre Bindungen“ von Ludwig vider. Um ihn verwenden zu können, ments wird dieses nicht mehr in der UI- Mittermeier: www.jaxenter.de/artikel/1353, muss dem ListViewer von JFace eine Liste angezeigt: Die Daten wurden von „Eclipse Forms im Härtetest“ von Marco van Liste übergeben werden, die IObser- dem Modell zum User Interface synchro- Meegen: www.jaxenter.de/artikel/1816. vableCollection implementiert. Wir nisiert. Anderswo: „Eclipse DataBinding + Valida- entscheiden uns für eine WritableList, Eine Person wird in der Liste als tion + Decoration“ von Kai Tödter: http:// die eine Liste von Personen kapselt. Der String gerendert, der den Nachnamen eclipse.dzone.com/articles/eclipse-databin- ding-validation, „Eclipse DataBinding with Mehrwert der Kapselung besteht darin, repräsentiert. Der standardmäßige La- Eclipse RCP Applications – Tutorial“ von dass eine IObservableCollection über belProvider des ListViewer ermittelt Lars Vogel: http://www.vogella.de/articles/ das Observer Pattern überwacht wer- den angezeigten Wert über die toString- EclipseDataBinding/article.html den kann und bei Änderungen Events Methode des Modellobjekts. In der 44 eclipse magazin 3.09 www.eclipse-magazin.de DataBinding für UI-Controls Rich Client Platform @Override Master-Detail public void widgetSelected(SelectionEvent e) { Häufig findet man in UIs das folgende if (viewer.getSelection().isEmpty()) { Szenario: Im UI gibt es eine Liste, Ta- return; belle oder einen Baum, wo ein Element } selektiert werden kann. Entsprechend Person p = (Person) ((IStructuredSelection) viewer .getSelection()).getFirstElement(); der Selektion sollen detailliertere Infor- if (p.getLastName().toUpperCase().equals mationen angezeigt und möglicherwei- (p.getLastName())) { se bearbeitet werden. Beispielsweise p.setLastName(p.getLastName().toLowerCase()); kann es sich bei dem selektierten Ele- } else { ment um eine Person handeln, und die p.setLastName(p.getLastName().toUpperCase()); editierbaren Details sind neben dem } Namen auch die Telefonnummer oder } das Geburtsdatum. Für solche Szenari- }); en hat sich der Begriff „Master-Detail“ durchgesetzt. Im nächsten Schritt muss die Klasse Wir wollen unser Beispiel erweitern, Person angepasst werden. Diese Klas- um die Unterstützung von Eclipse Da- se muss um PropertyChangeSupport taBinding bezüglich Master-Details zu erweitert werden. Außerdem wird ein veranschaulichen. Die Klasse Person er- LabelProvider benötig, der sich an ei- hält zwei neue Properties: firstName und nem Objekt als Observer registriert und telephoneNumber. Damit die Details im Events weiterleitet. Eclipse DataBin- GUI angezeigt werden können, fügen wir ding stellt hierfür die Klasse Observ- drei Textfelder hinzu: ableMapLabelProvider zur Verfügung. Der Konstruktor der Klasse erwartet als Text lastName = new Text(shell, SWT.BORDER); Parameter ein IObservableMap.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    7 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us