Wenn man, wie ich, vor der Aufgabe steht einen WYSIWYG Rich Text Editor in eine Eclipse RCP Anwendung zu integrieren, stellt man leider schnell fest, das es keine Standardlösung gibt. Vielmehr hat man folgende Optionen mit ganz speziellen Vor- und Nachteilen, für die man sich entscheiden muss:
HTML und Javascript
Die Variante den Editor mit Hilfe des SWT Browser Widgets und einem eingebeteten Javascript WYSIWYG Editor zu realisieren, ist wohl die beliebteste. Jedenfalls wenn man das Angebot an Projekten sieht, die diese Lösung zur Verfügung stellen bzw. verwenden. So ist z.B. Lotus Notes 8 (Demo Video) einer der prominentesten Vertreter. Leider ist der Rich Text Editor von Lotus Notes, aber nur als Closed Source gegen Lizenzgebühr verfügbar. Aber es gibt auch einige OpenSource Lösungen:
- SWT Composer
- EPF Rich Text
- richhtml4eclipse mit Verwendung von TinyMCE
- SWT Browser Widget to render a TinyMCE WYSIWYG editor
Vorteile
- Die Stylemöglichkeiten von HTML sind umfangreich und können einfach genutzt werden, wie z.B. das Einbetten von Tabellen und Bildern.
- Serialisiert wird nach HTML, damit können erstellte Texte ohne Umwege in einer DB gespeichert werden.
- Einfacher Umgang mit Fonts, da die RCP Anwendung die Fonts nicht Laden und Disposen muss.
Nachteile
- Lösung ist durch den Browser plattformabhängig. Meine Tests mit richhtml4eclipse haben z.B. unter Windows XP (IE) und Mac OSX (Safari) ein unterschiedliches Verhalten gezeigt.
- Bei Darstellungsproblemen bleibt dem Anwender die HTML-Code-Sicht nicht erspart.
- Funktionen wie Content-Assist, Eclipse-Spell-Checker, Folding oder Annotations können nicht genutzt werde.
- Durch die Browser-Kapselung ist die Lösung nicht flexibel genug, um z.B. Änderungen am Text dynamisch vorzunehmen.
- Performance Einbußen durch Verwendung des Browsers.
SWT StyledText
SWT und JFace selber bieten für die Realisierung eines Rich Text Editors leider keine komplett Lösung, allerdings kann man sich das JFace Text Framework und das StyledText Widget zunutze machen. Einfache Editoren kann man damit relativ schnell realisierten, siehe z.B. SWTTextEditorDemo. In Eclipse 3.5 M4 gibt es mittlerweile auch ein “New text editor Example“, das die Implementierung eines Rich Text Editors verdeutlicht.
Wenn die Anforderungen allerdings steigen und z.B. Fonts, Images, Undo/Redo, Cut & Paste oder HTML Serialisierung benötigt werden, wird die Sache recht schnell kompliziert. Dazu kommt noch das es bis vor kurzem kein Open Source Projekt gab, das einen Rich Text Editor auf Basis von StyledText zur Verfügung stellt. Man konnte nur das Closed Source Plugin SWT RichTextEditor von Dugald Morrow für $75 USD verwenden. Neuerdings gibt es aber das Rich Text Editor Open Source Plugin von OnPositive (Eclipse Public License). Dieses Plugin bietet nicht nur die grundlegenden Funktionen, die man von einem Rich Text Editor erwartet, sondern lässt auch den Import und Export von HTML zu.
Vorteile
- Bessere Plattformunabhängigkeit gegenüber der HTML / Javascript Variante
- Funktionen wie Content-Assist, Spell-Checker, etc. können genutzt werden
- sehr flexibel
- gute Performance
Nachteile
- Tabellen Einbindung schwierig, insbesondere direkt editierbare Tabellen
- Serialisierung von Style Element ist nicht frei Haus wie bei der HTML / Javascript Variante
Swing JEditorPane in SWT
Das ist meiner Meinung nach die exotischste Variante und die ich, ehrlich gesagt, nicht freiwillig wählen würde. Das es aber sehr wohl funktioniert, steht im Eclipse Magazin Ausgabe 01/2009 in dem Artikel “Multimedia-Redaktionssystem auf RCP-Basis” von Matthias Kammermann und Maximilian Weißböck. siehe auch
Using Swing in an Eclipse RCP application
Open Office Integration
Als letzte Variante bietet sich noch die Integration von Open Office, jedenfalls wenn man eine Really Really Rich Text Lösung sucht: Open Office Integration Editor Plugin (NOA4e).
Fazit
Die sinnvollste Lösung ist zur Zeit, in meinen Augen, die Verwendung des Rich Text Editor Plugins von OnPositive. Dieses Plugin bietet, wie gesagt, die grundlegenden Funktionen und einen HTML Im- und Export. Allerdings ist in Zukunft zu hoffen, das sich die Eclipse Community dem Problem annimmt und ein Standardlösung zur Verfügung stellt.
Rich Text Editor Plugin:



May 12th, 2009 on 13:37
gute zusammenfassung. Ich stand selber vor dem Problem und hatte keine Lösung gefunden. Werde mich mal an den RT-Editor von OnPositive ranwagen. coole sache!
gruss aus z nach b
May 14th, 2009 on 7:20
der RichTextEditor von OnPositive wird dem Eclipse Nebula angeschlossen https://bugs.eclipse.org/bugs/show_bug.cgi?id=255340
May 14th, 2009 on 17:49
Danke! Das ist eine wirklich gute Nachrichten.
Gruss, Hendrik…
August 7th, 2009 on 20:02
Hi Hendrik,
i like you blog and i like that you write but i hope next you write in english :)
best regads
Antonio