GEF-Tutorial Kapitel 7
Aus Wirthi's Wiki
| GEF-Tutorial Eclipse Graphical Editor Framework |
|---|
| Allgemeines Kapitel 1 (Überblick) Kapitel 2 (Model-View-Controller) Kapitel 3 (Model) Kapitel 4 (Controller) Kapitel 5 (View) Kapitel 6 (Editor-Hauptklasse) Kapitel 7 (Einsatz und Zusammenfassung) |
In diesem Kapitel 7 des GEF-Tutorials wird beschrieben, wie der fertige Editor nun in Eclipse ausgeführt werden kann.
[bearbeiten] Einrichten des Plugins
Bis jetzt ist der Editor nur eine Ansammlung von Java-Klassen. Damit diese von Eclipse auch als Plugin erkannt werden, benötigt es einer zusätzlichen Datei. Diese trägt immer den Namen plugin.xml und muss im Hauptverzeichnis des Projektes liegen. Über File=>New=>File legen wir diese an. Als Inhalt tragen wir folgenden Text ein:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.3"?>
<plugin>
<extension point="org.eclipse.ui.editors">
<editor
class="at.wirthi.geftutorial.example1.Example1Editor"
default="true"
extensions="chw"
icon="icons/sample.gif"
id="at.wirthi.geftutorial.example1.Example1Editor"
name="Example 1 Editor"/>
</extension>
</plugin>
Jeder, der schon mit XML-Dateien gearbeitet hat, sollte dies zumindest von der Syntax her verstehen können.
- Die ersten beiden Zeilen enthalten Metainformationen zur Datei und zur Kodierung. Je nach System, auf dem Sie arbeiten, müssen Sie das Encoding und die eclipse-Version gegebenenfalls anpassen.
- Der Plugin-Tag umschließt den gesamten Body der plugin.xml. Darin werden Extensions definiert. In unserem Fall haben wir nur eine Extension, für den Erweiterungspunkt (extension point) org.eclipse.ui.editors.
- Darin legen wir einen Editor an, dem wir die von ihm verlangten Informationen mitteilen. Dies umfasst etwa:
- Die zu startende Hauptklasse, also die Editor-Klasse aus Kapitel 6,
- die Datei-Erweiterung, für die unser Editor der Default-Editor sein soll,
- das Icon des Editors
- sowie eine ID und ein Name.
Das Icon des Editors müssen wir noch anlegen. Erstellen Sie dafür mit dem Wizard ein neues Verzeichnis "icons" im Hauptverzeichnis des Plugins und kopieren Sie dort eine kleine Bilddatei im GIF-Format hin (16x16 Pixel), die Sie sample.gif nennen. Unglücklicherweise startet der Editor nicht, wenn Sie ihm kein Icon zur Verfügung stellen!
[bearbeiten] Einrichten der Launch-Configuration
Unser Editor stellt ein Eclipse-Plugin dar. Als solches könnte man es direkt in dem Eclipse starten, in dem man programmiert; dazu müssten die notwendigen Dateien (plugin.xml, class-Dateien, etc.) in ein Unterverzeichnis des das Plugins-Verzeichnisses von Eclipse kopiert werden und Eclipse neu gestartet werden. Dies ist aber während der Programmierung sehr aufwändig und verhindert darüber hinaus auch das Debuggen.
Glücklicherweise gibt es eine bessere Lösung. Es kann aus Eclipse (nennen wir es Entwicklungs- Eclipse) heraus eine weitere Instanz von Eclipse (dieses nennen wir Ausführungs-Eclipse) gestartet werden, mit geänderter Konfiguration. Dabei können wir angeben, dass nur unser gerade erstellter Editor (neben einigen unbedingt notwendigen Plugins) geladen wird.
Dazu wählen wir im Menu Run den Punkt Run..., um zur Run-Configuration zu gelangen. Dort legen wir einen neuen Eintrag unter Eclipse Application an. Die weiteren Einstellungen können meistens auf der Standardeinstellung belassen werden, lediglich auf der Seite "Plug-ins" müssen wir sicherstellen, dass unser Plugin auch zur Ausführung markiert ist. In der Standardeinstellung ("Launch with all workspace and enabled external plugins") sollte dies ohnehin der Fall sein.
Wenn anschließend diese neue Run-Configuration tatsächlich gestartet wird, wird eine neue Eclipse-Instanz mit unserem Plugin starten.
[bearbeiten] Ausführen des Editors
Eclipse wird mit einem leeren Workspace starten. Da wir unseren Editor mit der Dateierweiterung *.tut verknüpft haben, müssen wir eine solche Datei anlegen. Dazu legen wir mittels File=>New=>Project zuerst ein neues (generisches) Projekt an. In dieses fügen wir eine leere (generische) Datei ein, beispielsweise example.chw. Dabei ist zu beachten, dass wir noch keinen Wizard für die Erstellung von *.chw-Dateien erzeugt haben. Wir müssen also selber eingeben, dass die Datei .chw als Endung haben sollte, und es wird eine leere Datei erzeugt werden.
Wenn wir nun doppelt auf die Datei klicken, wir - sofern alles richtig gemacht wurde - der Editor starten. Auch hierbei ist wieder zu beachten, dass wir nicht tatsächlich Daten aus der (ja leeren) Datei gelesen haben. Der Weg über eine leere Datei des definierten Typs ist nur der einfachste Weg, einen Editor zu öffnen. Um auch sinnvolle Daten aus der Datei zu lesen, hätten wir in Kapitel 6 den entsprechenden Code in die Methode setInput einbauen müssen (die wir aber nicht überschrieben haben).
[bearbeiten] Weitere Schritte
Gratulation! Sie haben nun Ihren ersten funktionierenden GEF-Editor erstellt. Zugegeben, die Funktionalität ist noch sehr eingeschränkt; es können Daten nur angezeigt werden, nicht aber verändert. Die Daten werden nicht aus einer Datei gelesen, sondern stehen statisch im Programmcode. Dies ist aber nahe am Minimum an Code, den man benötigt, um einen GEF-Editor starten zu können.
Von nun an können Sie diesen um Funktionalität erweitern. Sie können das Model durch ein besseres ersetzen, etwa durch eines, das per Eclipse Modelling Framework (EMF) generiert wurde. Sie können Code zum Bearbeiten des Modells in die EditParts einbauen (sogenannte EditPolicies, die ihrerseits Requests und Commands erzeugen). Sie können die Darstellung verbessern, Drag and Drop erlauben, Zooming einbauen, weitere Views hinzufügen (beispielsweise Thumbnails, Properties, Problems, etc.) und vieles mehr. Viel Spaß beim Experimentieren.
Natürlich freue ich mich über Feedback zu diesem Tutorial. Sollten Sie dabei Probleme gehabt haben, Fehler entdeckt haben oder es Ihnen sehr gut gefallen haben: Bitte lassen Sie es mich wissen.
[bearbeiten] Download des Beispiels
Das in diesem Tutorial ausprogrammierte Beispielprogramm können Sie herunterladen.
| GEF-Tutorial: Allgemeines - Kapitel 1 - Kapitel 2 - Kapitel 3 - Kapitel 4 - Kapitel 5 - Kapitel 6 - Kapitel 7 |
