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:

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:

Artikel Update Januar 2011

Wer den Rich Text Editor von OnPositive mal live ausprobieren möchte, kann dies mit Hilfe von Sorting Thoughts tun. Sorting Thoughts verwendet allerdings nicht den vollen Funktionsumfang, da der Editor leider noch ziemlich viele Bugs enthält. Vorteilhaft ist jedoch, dass der Rich Text Editor leicht erweitert werden kann. Der Sorting Thoughts Editor kann z.B. zusätzlich Links einbetten.

Sorting Thoughts kann man hier herunterladen: Sorting Thoughts Download

Screenshots

rich-text-editor1.png
Rich Text Editor von OnPositive

richhtml4eclipse
richhtml4eclipse

editor.png
Eclipse Text Editor Example

Sorting Thoughts
Sorting Thoughts Screenshots