Von Eclipse RCP to RAP
June 7th, 2007Bei der Arbeit habe ich vor einiger Zeit ein kleines Plug-In geschrieben, dass hierarchische Datenstrukturen darstellt und in einem zweiten View Details zu den selektieren Datensatz anzeigt. Nun sollte dieses Plug-In einen größeren Kreis an Nutzern zur Verfügung gestellt werden. Da die neuen Nutzer nur das Feature des Plug-Ins benötigen und keine weiteren Features der bestehenden RCP-Anwendung habe ich das Plug-In als RAP Anwendung umgebaut. Damit wird die Verteilung auch etwas leichter.
Die Migration verlief eigentlich mit geringen Aufwand. Theoretisch hätte man nur die plugin.xml anpassen müssen. Die bestehenden Views des Plug-Ins erweitern nun nicht mehr den Extension-Point: org.eclipse.ui.views sondern org.eclipse.rap.ui.workbench.views. Ebenfalls ändern sich die Dependencys des Plug-Ins hin zu org.eclipse.rap.*.
Da das RAP Projekt mir aktuell als Milestone 3 vorliegt, funktioniert halt noch nicht alles. So musste ich die Verwendung des ProgressMonitorDialog ausbauen. Dieser Dialog erschien immer dann, wenn beim Blättern im Baum Daten aus der Datenbank nachgeladen werden mussten. Ohne diesen verhält es sich in RAP nun so, dass der Zweig aufklappt und ein Ordner Symbol erscheint. Die Maus bekommt eine Sanduhr neben den Zeiger bis die Daten geladen sind. Danach wird der Ordner mit den richtigen Knoten nebst Symbolen ersetzt. Ich finde diese Darstellung charmanter als den Dialog, besonders bei Ladezyklen von wenigen Sekunden.
Etwas gemeiner ist die Restriktion, das man bei einen TableViewer oder TreeViewer aktuell den Input nur einmal setzen kann (Bug). Dies lässt sich aber mit dem Workaround von Jochen Krause umgehen.
Nach diesen Änderungen hatte ich die Anwendung im Intranet verfügbar. Ein paar Macken sind noch zu beheben.
Das ich als Entwickler eine UI programmiere die sowohl als RCP wie auch im WEB funktioniert ohne das ich unterschiedliche Programmierparadigmen benutzen muss, ist super. Wenn RAP released wird, steht zu erwarten, dass ich nicht mal mehr den Java Code ändern muss. Ein Austauschen der plugin.xml sollte dann reichen.
Natürlich wird diese Vision nicht ganz erreichbar sein, da RCP immer noch Vorteile gegenüber AJAX hat, wie die Möglichkeit zu zeichnen. Ebenso sind RCP Anwendungen nicht zwangsläufig Mulituserfähig. Das Projekt bringt einen aber nahe an diese Vision heran.