Eclipse RCP in der Redaktion von tagesschau.de

Eclipse bei der Tagesschau

Torsten Witte
Die Umsetzung des Copytextes

Als ersten Einstieg bietet SWT mit dem StyledText-Widget [3] die Möglichkeit, Texte über einen StyledTextContent zu verwalten und anhand von StyleRanges zu formatieren. Bei Bildern oder Tabellen innerhalb des Textes hört die Unterstützung allerdings auf. Als zweiter Ansatz baut JFace auf diesem Widget auf und erweitert das Viewer-Framework um einen entsprechenden TextViewer, der auf einem IDocument als Modell arbeitet. Auch dies stellt keine Out-of-the-box-Lösung für die gestellten Anforderungen bereit, allerdings ist eine Unterklasse von TextViewer, der SourceViewer, mit den übrigen Interfaces und Klassen aus dem Package org.eclipse.jface.text.source der Einstiegspunkt, an dem die Implementierung der Copytext-Editorkomponente ansetzt. Abbildung 4 zeigt, dass der entwickelte CopytextViewer von einem RichtextViewer erbt, der wiederum von dem oben genannten SourceViewer abgeleitet ist. Der RichtextViewer in der Vererbungshierarchie dient der späteren Wiederverwendung mit weniger Funktionalität. Als Modell für den CopytextViewer dient das CopytextDocument, das die einzelnen Absätze verwaltet.

Abb. 4: Vererbungshierachie von Abb. 4: Vererbungshierachie von „Copytext Viewer (Vergrößern)

Der SourceViewer verfügt gegenüber dem TextViewer zusätzlich über einen IVerticalRuler, also einem linken Rand, an dem Informationen angezeigt und Einstellungen vorgenommen werden können. Dieser Rand wird vom CopytextViewer für die Anzeige der verschiedenen Absatztypen und Absatzbilder (als Thumbnail) genutzt. Hier kann der Redakteur zwischen den Absatztypen wechseln und Bilddokumente per Drag and Drop anfügen. Der SourceViewer wird darüber hinaus über eine SourceViewerConfiguration konfiguriert, über die u. a. die Rechtschreibprüfung hinzugefügt wird.

Um das verbleibende Problem mit den Tabellen und Absatzboxen zu lösen, musste ein eigenes Tabellen-Composite her, das neben den üblichen Tabellenfunktionen wie Hinzufügen und Entfernen von Zeilen und Spalten erlaubt, innerhalb der Zellen einfache Textformatierungen vorzunehmen und Tabelleninhalte aus Drittsystemen wie MS Excel oder OpenOffice einzufügen. Für die einzelnen Tabellenzellen wird dabei auf den bereits erwähnten RichtextViewer zurückgegriffen. Die normale SWT-/JFace-Tabellenimplementierung reichte aufgrund der benötigten Textformatierungen nicht aus (das wird erst seit Eclipse 3.4 mit dem StyledCellLabelProvider besser unterstützt [4]). Außerdem macht die Darstellung der Tabellenzellen Probleme, wenn nur einige Zellen höher sind als andere. Für die Realisierung der Absatzboxen musste ebenfalls ein eigenes Composite entwickelt werden, das den bereits in der Suche eingesetzten ExtendedListViewer wiederverwendet, um die eingebundenen Dokumente anzuzeigen. Sowohl bei der Darstellung der Tabellen als auch der Absatzboxen muss dann noch dafür gesorgt werden, dass der von ihnen benötigte Platz innerhalb des Textes freigehalten wird und somit kein Text hinter der Tabelle oder Box versteckt ist. Dies wird über die Methode CopytextViewer.lineGetStyle() gewährleistet, die in diesem Fall ein entsprechendes StyleRange-Objekt mit GlyphMetrics liefert. Damit die Tabellen und Absatzboxen letztendlich an den richtigen Stellen angezeigt werden, implementiert der CopytextViewer das PaintObjectListener-Interface.

Die Target-Plattform(en)

Wer Eclipse-RCP-Anwendungen entwickelt, weiß, dass RCP-Anwendungen eine Target-Plattform benötigen. Diese wird sowohl als Basis für die entwickelte Anwendung und zur Unterstützung verschiedener Betriebssysteme verwendet als auch zur Trennung von der eigenen Entwicklungsumgebung. Beispielsweise kann eine RCP-Anwendung auf Basis von Eclipse 3.5 mit der Eclipse IDE in Version 3.6 entwickelt werden. Außerdem bleibt die Entwicklungsumgebung frei von Plug-ins, die die zu entwickelnde Anwendung benötigt (und umgekehrt).

Als mit der Entwicklung des Sophora DeskClients begonnen wurde, handelte es sich bei der Target-Plattform einfach um das Eclipse SDK 3.2.2 inklusive Delta und Language Pack. Diese Version der Target-Plattform blieb sehr lange Zeit im Einsatz. Ein Grund dafür war, dass die Sprachpakete in späteren Eclipse-Versionen eingestellt bzw. durch das Babel-Projekt ersetzt wurden und der Stand noch nicht stabil schien. Darüber hinaus war ein Plattformwechsel aus technischer Sicht nicht nötig. Erst als die Anforderung auf bessere Unterstützung neuerer Betriebssysteme aufkam, musste die Target-Plattform ausgetauscht werden. Zunächst wurde die Umstellung auf eine Eclipse-3.4-Target-Plattform in einem separaten Entwicklungs-Branch getestet, war aber nie produktiv im Einsatz. Der Aufwand der Umstellung erwies sich als so gering, dass gleich auf Eclipse 3.5.0 umgestellt wurde, als dieses veröffentlicht wurde. Alles was im Code angepasst werden musste, war die Ersetzung einiger als „deprecated“ markierten Klassen und Methoden durch die neuen empfohlenen Schnittstellen, wovon das meiste einfach per ContentAssist erledigt werden konnte.

Derzeit wird Eclipse 3.5.2 als Basis verwendet. Für die nächste Umstellung auf Eclipse 3.6 oder die 2011 erscheinenden Versionen 3.7 bzw. 4.1 sind ebenfalls keine Schwierigkeiten zu erwarten. Stattdessen sind auch hier die Erwartungen groß, erneut stark von den Verbesserungen und neuen Features zu profitieren (Equinox p2, CSS-Styled-Widgets usw.).

Fazit

Der Einsatz von Eclipse RCP als Framework in diesem Projekt hat nicht nur die Anforderungen für die redaktionelle Arbeit erfüllt. Wie von tagesschau.de gewünscht, ist ein effektiveres und schnelleres Arbeiten möglich geworden. Auch aus technischer Sicht hat der Einsatz positive Effekte gehabt. Das RCP-Framework bildet im Ganzen eine solide Grundlage für Rich-Client-Anwendungen. Views, Editoren, Actions, Commands, Wizards, PreferencePages, Selection-Service, Adapter-Pattern, Hilfeframework, Extensions und Extension Points gehören zum 1×1 jedes RCP-Entwicklers. Die Umsetzung des Copytext-Editors war eine knifflige Aufgabe für die Entwickler, doch der Aufwand hat sich gelohnt. Das Sophora CMS wird mittlerweile in zahlreichen ARD-Sendern eingesetzt. Die Redakteure sind insgesamt zufrieden und bewerten ihre tägliche Arbeit mit dem DeskClient als effizient.

Torsten Witte ist Diplom-Informatiker und arbeitet als Softwareentwickler bei der Firma subshell GmbH in Hamburg. Er besitzt langjährige Erfahrung in der Entwicklung von Java- und Rich-Client-Anwendungen auf Basis von Eclipse RCP und ist Mitglied im Entwicklungsteam des Content-Management-Systems Sophora sowie dem Java-Content-Repository-(JCR-)Tool Toromiro.
Geschrieben von
Torsten Witte
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.