Eclipse Plugin Entwicklung: Editor für Flussdiagramme

ChristianB

Mitglied
Hallo,

ich bräuchte ein wenig Hilfe und Tipps bei der Herangehensweise an ein Projekt.
Es geht darum einen Editor als eclipse-plugin (für eigene RCP) zu entwickeln, mit dem man Flussdiagramme erstellen kann und dann in einem bestimmten XML-Format abspeichern kann.
Das Flussdiagramm kann dabei diverse spezielle Ablaufelemente enthalten. (das ganze geht sogar mehr in Richtung grafische Programmierung)
Ein Beispiel, wie man sich das im Endeffekt vorstellen könnte (natürlich soll mein Editor erstmal
viel einfacher gehalten sein, aber vom Prinzip her passts):

Screenshot von einem ähnlichen Programm

Was suche ich also genau?

Ich suche einen Opensource-Editor, mit dem man per Drag and Drop Flussdiagramme grafisch zusammenstellen kann. Dieser Editor würde dann die Grundlage bilden und ich würde ihn um zusätzliche Ablaufelemente erweitern oder bestehende Ablaufelemente bearbeiten (z.B while- und for-Schleife). Ein Editor, der also leicht zu erweitern ist und schon die grundlegenden Funktionen (wie drag and drop von Ablaufelementen aus einer toolbox, grafische Darstellung der Elemente etc.), wäre sehr hilfreich, da ich nicht das Hauptaugenmerk auf die Programmierung des Editors an sich legen möchte.

Ich würde mich also freuen, wenn ihr Ideen zu den folgende Fragen habt:

  • Kennt ihr freie Editoren, die meinen Anforderungen entsprechen?
  • Ist es unter Umständen einfacher, den Editor von Grund auf selbst zu bauen? (z.B. mit GMF)
  • Wie würdet generell an das Projekt herangehen?

Vielen Dank schon mal im Voraus und ich hoffe ich habe mein Anliegen klar formuliert, falls nicht einfach nachfragen :)

Chris
 
Zuletzt bearbeitet:

Wildcard

Top Contributor
*ins richtige Forum verschieb*
Eclipse bietet dir an dieser Stelle wirklich sehr viel. Ich würde das Modell in jedem Fall auf EMF basieren lassen.
Für die Visualisierung hast du mehrere Möglichkeiten:
1. Alles selbst machen mit Draw2D als Grafikbibliothek
alle der nachfolgenden Möglichkeiten setzen übrigens auch auf Draw2D auf
2. Einen GEF Editor schreiben
GEF ist ein mächtiges Framework für grafische Editoren, erfordert initial aber recht viel Code
3. Einen Zest basierten Editor bauen
mit Zest kommt man schnell ans Ziel, es sieht schick aus, ist aber mehr für Viewer gedacht und etwas beschränkt in den Möglichkeiten
4. Einen GEF Editor mit GMF generieren lassen
Damit kommst du sehr schnell (wenn du mal kapiert hast wie man es bedient) zu einer initialen Version die auch recht viel kann aber bescheiden aussieht. Danach kommt das customizing für Optik und Bedienung. Man kann sehr viel damit machen, aber der Code ist nicht ganz trivial
5. Einen Graphiti Editor stellen
Graphiti ist ebenfalls ein Draw2D + GEF Aufsatz und das jüngste der Frameworks. Ich habe noch nicht allzuviel damit gemacht, aber mir gefällt die Optik und Benutzerführung sehr gut und die API ist wesentlich einfacher als GEF.

Mein Tipp wäre ein EMF Modell + einen Graphitieditor. Scheint mir derzeit der beste Kompromiss aus Optik, Bedienbarkeit, Anpassbarkeit und Aufwand.
Zest ist die einfachste Variante (bedient sich wie ein TreeViewer), aber eben beschränkt. Wenn Zest alles kann was du brauchst (und in Zukunft brauchen wirst), kannst du auch Zest verwenden.
Schau dir ruhig auch mal GMF an. Ich bin zwar kein großer Freund davon, aber man kann viel damit machen wenn man die Zeit investiert.
Abraten würde ich von Variante 1. und 2., reines Draw2D, oder GEF API direkt verwenden. Das ist mit viel Arbeit verbunden.

Graphical Modeling Framework
Graphiti Home
Zest
 

ChristianB

Mitglied
Vielen Dank für die super ausführliche Antwort!

Habe mir gestern GMF noch angeschaut und zumindest noch ganz gute Tutorials gefunden. Scheint wirklich ziemlich komplex sein, aber halt auch wirklich gute Features. Z.B. die Validierung des Diagramms mit Anzeigen der Fehler und farbliche Markierung davon klingt sehr gut.

Kennst du EuGENia?
Das klang gerade für den Einsteig in GMF sehr gut, wenn man allerdings mehr Funktionalität will muss man .eol Scripts basteln,
was nicht sehr gut klingt (EuGENia Customization)

Graphiti sieht auf den ersten Blick sehr interessant aus. Werde ich mich auf jeden Fall mal genauer informieren, ist halt die Frage, ob das Framework nicht noch zu jung ist. GMF wirkt halt schon sehr ausgereift.
 

Wildcard

Top Contributor
Habe mir gestern GMF noch angeschaut und zumindest noch ganz gute Tutorials gefunden. Scheint wirklich ziemlich komplex sein, aber halt auch wirklich gute Features. Z.B. die Validierung des Diagramms mit Anzeigen der Fehler und farbliche Markierung davon klingt sehr gut.
Sollte mit Graphiti auch kein Problem sein. EMF Modelle liefern die notwendige Validierungslogik sowieso schon mit.

Kennst du EuGENia?
Ja, ich kenne Eugenia, auch wenn ich es noch nicht benutzt habe. Die Syntax ist kompakter, aber man kommt auch mit den GMF Editoren ganz gut klar, das ist IMO nicht das große Problem. Die Schwierigkeiten liegen IMO mehr im Code der ber GMF (zumindest war das früher so) schwierig zu erweitern ist (da sehr komplex).

Graphiti sieht auf den ersten Blick sehr interessant aus. Werde ich mich auf jeden Fall mal genauer informieren, ist halt die Frage, ob das Framework nicht noch zu jung ist. GMF wirkt halt schon sehr ausgereift.
Das Framework ist zwar ein junges Eclipse Projekt, ist aber eigentlich schon einige Jahre alt und bei SAP entwickelt (und dort produktiv im Einsatz).
Wir haben mit einem frühen Milestone einen ersten Prototyp implementiert und das ging schon sehr gut.
Also für meine Begriffe ist es angenehmer mit Graphiti zu entwickeln als mit GMF, aber am besten investierst du einfach mal ein paar Stunden/Tage in beide Frameworks und entscheidest selbst welches für dich am besten passt.
 

ChristianB

Mitglied
Sollte mit Graphiti auch kein Problem sein. EMF Modelle liefern die notwendige Validierungslogik sowieso schon mit.
Klingt gut, bin schon fast überzeugt von Graphiti ;) Das Hauptproblem was ich noch sehe ist die Dokumentation, Tutorials und allgemein Infos, die man am Netz dazu findet. Zu GMF gibts da halt wirklich ne Menge. Bei Graphiti siehts eher ein bissal mau aus. Anfangstutorials gibt es schon, aber z.B. zur Validierung ist das einzige was ich gefunden habe, dass es mit den Boardmitteln von EMF möglich ist (wie du auch schon sagtest)

Die Schwierigkeiten liegen IMO mehr im Code der ber GMF (zumindest war das früher so) schwierig zu erweitern ist (da sehr komplex).
Hast dafür vielleicht noch ein konkreteres Beispiel? Ich kann mir das noch nicht ganz so vorstellen. So wie ich das jetzt verstehe werden bei GMF aus diversen Models in mehreren Schritten Code generiert. Die Models bzw. auch der generierten Code (gmfgraph, gmfmap, gmftool, gmfgen, siehe GMF-Überblick) kann nun weiter modifiziert werden. Komplex sind dabei wahrscheinlich die vielen verschieden Models, an denen man rumbasteln muss und auch das Testen des Editors stell ich mir nicht so schnell vor, da man immer wieder neu Code generieren muss. Was ist z.B wenn ich zunächst gmfgen und im danach gmfgraph modifiziere und aus diesem wieder den gmfgen geniere. Sind die vorherigen Modifikationen am gmfgen dann verloren?

Also für meine Begriffe ist es angenehmer mit Graphiti zu entwickeln als mit GMF, aber am besten investierst du einfach mal ein paar Stunden/Tage in beide Frameworks und entscheidest selbst welches für dich am besten passt.
Ich glaube dir auf jeden Fall sofort, dass Graphiti angenehmer ist zu verwenden. Nur in Java entwickeln - was gibt es Schöneres :) Auch das Antesten der beiden Frameworks werde ich auf jeden Fall machen. Allerdings werde ich wohl auch nach dem Rumprobieren nicht wirklich entscheiden können, was sich bezüglich Erweiterbarkeit besser eignet. Das ist schwierig abzuschätzen, ohne bei den Frameworks in die Tiefe zu gehen.

Da habe ich halt ein wenig Angst bei Graphiti, dass durch die zusätzliche Abstraktionsschicht von GEF gewisse Funktionalität und Erweiterbarkeit verloren geht.
Die Elemente, die im Editor von mir dargestellt werden müssen, können recht komplex werden. Beliebige Schachtelung (z.B. Schleifen innerhalb Schleifen) muss möglich sein. Ich werde auch größere Elemente in der Palette haben (z.B eine komplette Schleife, die man als Ganzes in das Diagramm einbauen kann).
Auf jeden Fall brauch ich schon eine Menge Spielraum bzgl. der grafischen Darstellung und eben auch bzgl. Validierung und da hab ich bei GMF insgesamt ein besseres Gefühl.
 
Zuletzt bearbeitet:

Wildcard

Top Contributor
Hast dafür vielleicht noch ein konkreteres Beispiel? Ich kann mir das noch nicht ganz so vorstellen. So wie ich das jetzt verstehe werden bei GMF aus diversen Models in mehreren Schritten Code generiert. Die Models bzw. auch der generierten Code (gmfgraph, gmfmap, gmftool, gmfgen, siehe GMF-Überblick) kann nun weiter modifiziert werden. Komplex sind dabei wahrscheinlich die vielen verschieden Models, an denen man rumbasteln muss und auch das Testen des Editors stell ich mir nicht so schnell vor, da man immer wieder neu Code generieren muss. Was ist z.B wenn ich zunächst gmfgen und im danach gmfgraph modifiziere und aus diesem wieder den gmfgen geniere. Sind die vorherigen Modifikationen am gmfgen dann verloren?
Zumindest vor 2 Jahren (da habe ich zum letzten mal mit GMF gearbeitet) gingen die meisten Änderungen in der gmfgen tatsächlich verloren.
Das fand ich allerdings weniger problematisch als das Code Mergen. Wer EMF oder Xtext einigermaßen kennt , weiß das es dort sehr einfach ist generierten Code mit händischen Anpassungen zu verwalten.
Der Merge bei EMF funktioniert super und bei Xtext hat man dank Generation Gap sowieso keine Probleme.
Bei GMF ist das etwas anders, da tonnenweise Quellcode generiert der für mich im Gegensatz zu EMF Code auch nur sehr schwer verständlich ist.
Du machst ein @generated NOT und anfängst zu customizen. Später änderst du ein paar Kleinigkeiten im gmfmap, oder sonstwo und nichts funktioniert mehr.
Du benennst die angepasste Methode um und generierst neu nur um dabei festzustellen das der Code für diese Methode plötzlich ganz anders generiert wird.
Ich fand das damals wirklich schwierig zu verwalten aber in den 2 Jahren mag sich viel getan haben.

Die Elemente, die im Editor von mir dargestellt werden müssen, können recht komplex werden. Beliebige Schachtelung (z.B. Schleifen innerhalb Schleifen) muss möglich sein. Ich werde auch größere Elemente in der Palette haben (z.B eine komplette Schleife, die man als Ganzes in das Diagramm einbauen kann).
Ein Beispiel zum verschachteln. Ich wollte in meinem GMF Diagramm ein Container Objekt mittels Compartment realisieren.
Der Compartment Inhalt sollte nicht automatisch angeordnet werden, sondern frei verschiebbar sein (XYLayout). Weiterhin wollte ich nicht diese lächerliche Compartment Scrollbar haben wenn ein Objekt über die Ränder des Containers hinausbewegt wird, sondern ich wollte das sich der Container automtatisch vergrößert (auch über seinen relativen Nullpunkt hinaus).
Ganz ehrlich, nach 2 Wochen Arbeit habe ich die Sache hingeschmissen.
Ich will damit nicht sagen das es nicht geht, aber der generierte Code ist teils derart kompliziert das man verzweifelt wenn man sich zu weit von den GMF Defaults entfernen möchte.
Ein Kollege hat mehrere Wochen versucht eigene Anchorpoints und einen speziellen metrischen Line Router zu entwickeln (zugegeben, keine ganz triviale Aufgabe) und ebenfalls nach einigen Wochen die Waffen gestreckt.

Mit Graphiti habe ich noch nicht genug gemacht um sagen zu können das es dort besser funktioniert, aber wie gesagt, der erste Eindruck war sehr positiv.
 

ChristianB

Mitglied
Ich merke schon, dass ich wohl um ein ausgiebes Testen von sowohl GMF, als auch Graphiti nicht herumkomme ;)

Auf jeden Fall vielen Dank nochmal für deine gute und ausführliche Hilfe!
Werde das Thema dann erstmal als erledigt markieren und bei Bedarf nochmal öffnen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eclipse Plugin Entwicklung - NoClassDefFoundError Plattformprogrammierung 10
R Eclipse RCP vs. Plugin Entwicklung Plattformprogrammierung 5
M Eclipse Plugin PreferencePage BooleanFieldEditor Plattformprogrammierung 1
F OSGi Plugin unter Eclipse arbeitet anders als wenn veröffentlicht Plattformprogrammierung 2
R Einfaches Eclipse-Plugin-Beispiel funktioniert nicht Plattformprogrammierung 5
C plugin development environment eclipse Plattformprogrammierung 4
M Keybinding in Eclipse Plugin Plattformprogrammierung 3
B Eclipse Plugin Einstellungsleiste Plattformprogrammierung 2
O Eclipse Plugin - Einfachstes Problem, das es gibt. Plattformprogrammierung 2
3 Eclipse Editor Plugin selektiert Projekt nicht Plattformprogrammierung 10
T RCP Eclipse RCP: Wo/wann im Plugin ist workbench initialisiert? Plattformprogrammierung 14
C Eclipse Plugin NoClassDefFoundError Plattformprogrammierung 4
B RCP eigenes Eclipse Plugin wird nicht aufgelöst Plattformprogrammierung 7
P Wie bekomme ich ICompilationUnit aus dem event? bei Eclipse-Plugin Plattformprogrammierung 3
X Datei in einem Eclipse Projekt über Plugin zugreifen Plattformprogrammierung 2
hdi Frage zu Eclipse Plugin Development Plattformprogrammierung 12
D Canvas auf View in Eclipse PlugIn Plattformprogrammierung 3
H Bibliotheken in Eclipse-Plugin-Projekt verwenden. Plattformprogrammierung 18
H Eclipse-Plugin erstellen Plattformprogrammierung 22
hdi Schwierigkeiten mit Plugin für EPF (Eclipse Process Framework) Plattformprogrammierung 3
hdi Problem bei Eclipse Plugin Export Plattformprogrammierung 9
H Eclipse Plugin Dateihandling Plattformprogrammierung 2
A Eclipse Plugin Programmierung Dateien Refreshen Plattformprogrammierung 2
F Eclipse Plugin - Rückgabewert einer Methode Plattformprogrammierung 4
R Eclipse RCP - Plugin erstellen Plattformprogrammierung 2
lumo [Eclipse RCP] Plugin OHNE visuals Plattformprogrammierung 7
B Eclipse plugin fuer dummys Plattformprogrammierung 11
N Eclipse RCP Plugin aus jar starten Plattformprogrammierung 7
M Eclipse Plugin Depedencies auslesen... Plattformprogrammierung 14
R Wo/Wie Eclipse Plugin einhängen für Jar-Export? Plattformprogrammierung 14
V [erledigt] Eclipse plugin startet nicht Plattformprogrammierung 3
S Eclipse-Plugin + Velocity + Files lesen Plattformprogrammierung 3
C AST (Abstract Syntax Tree)-Generierung für Eclipse-Plugin Plattformprogrammierung 5
V Javadoc an Eclipse Plugin anfügen Plattformprogrammierung 4
V JNI in Eclipse Plugin Plattformprogrammierung 17
F Eclipse plugin ausserhalb von Eclipse starten Plattformprogrammierung 4
byte [ Eclipse ] NoClassDefFoundError bei neuem Plugin Plattformprogrammierung 4
I Eclipse-Plugin: Perspektive mit 2 Views Plattformprogrammierung 5
G Frage zu Eclipse Plugin Plattformprogrammierung 5
E OSGi Eclipse Plug-in programmierung: java.lang.NullPointerException: Cannot enter synchronized block because "profile" is null Plattformprogrammierung 4
R Eclipse Bundles Plattformprogrammierung 2
Robertop RCP Command in bereits bestehendes Eclipse-Menü einbauen Plattformprogrammierung 4
T Java Projekt läuft nur in Eclipse Plattformprogrammierung 6
D RCP P2-Repository für Eclipse-Plugins Plattformprogrammierung 0
M Debuging in Eclipse Annotations Processor Plattformprogrammierung 0
D Nach Sprachpaket Installation kann eclipse nicht mehr gestartet werden Plattformprogrammierung 4
L0MiN Wie kann ich ein Klassendiagramm aus Eclipse heraus erstellen? Plattformprogrammierung 5
M Eclipse Probleme beim Ausführen eines Programms Plattformprogrammierung 3
feinperligekohlensaeure Eclipse Workspace gemeinsam Nutzen -> keine .project Datei Plattformprogrammierung 1
F Eclipse Build Path auf benötigte Projekte Plattformprogrammierung 4
B Daten von Eclipse extern sichern Plattformprogrammierung 2
B Eclipse zeigt Fehler nach Java-Update auf 1.8.0_40 Plattformprogrammierung 3
VfL_Freak [Eclipse] Fehleranzeige im Reiter "Problems" Plattformprogrammierung 1
S Errors in workspace bei eclipse Plattformprogrammierung 3
T eclipse bietet keine META-INF an Plattformprogrammierung 1
N Eclipse wo starten Plattformprogrammierung 6
A Eclipse schließt einfach ohne Fehlermeldung Plattformprogrammierung 4
W Eclipse vergißt beim Exportieren Resources-Ordner Plattformprogrammierung 11
A RCP Eclipse e4 und Injection-Contexts Plattformprogrammierung 0
K Eclipse fährt nicht mehr hoch. Metadatendatei schuld? Plattformprogrammierung 7
C [Eclipse RCP E4]InjectionException: no actual value was found for the argument "MDirtyable" Plattformprogrammierung 8
T Eclipse Eigenschaften hinzufügen Plattformprogrammierung 2
M RCP [Eclipse RCP 3.4] ViewTab Kontextmenu "Alle schließen" Plattformprogrammierung 0
D Problem mit eclipse Plattformprogrammierung 2
S Verschieben des Verzeichnis .eclipse aus Userprofile Plattformprogrammierung 3
A RCP Kann kein Eclipse 4 Projekt anlegen Plattformprogrammierung 0
S RCP Exportiertes RCP Produkt lädt Datei nicht, bei Start aus Eclipse wird Datei jedoch gefunden Plattformprogrammierung 6
G Eine Library in Eclipse zur Verfügung stellen Plattformprogrammierung 14
Gregorrr Eclipse RCP Product Build-Nummer + Jenkins Plattformprogrammierung 6
H OSGi OSGi + Logback + slf4j - Eclipse Run Configuration Plattformprogrammierung 7
R RCP Commands nutzen / org.eclipse.ui.file.save Plattformprogrammierung 7
O Installiere externe Methode "containsNone" in Eclipse Plattformprogrammierung 2
TheWhiteShadow RCP Konstrukt für Editor in Eclipse gesucht. Plattformprogrammierung 3
B Eclipse Probleme mit build Plattformprogrammierung 8
H Keine Hilfe/API mehr in Eclipse Juno? Plattformprogrammierung 4
B Neue SuppressWarning in Eclipse Juno Plattformprogrammierung 6
B Eclipse Property Page Plattformprogrammierung 6
B Eclipse PreferencePage Plattformprogrammierung 3
B Birt-Previewer über Eclipse Plattformprogrammierung 14
J Eclipse Plug-In für UML-Diagramme Problem Plattformprogrammierung 4
R Eclipse RCP Tabellen-View (Anfängerfrage) Plattformprogrammierung 3
C Eclipse: Notification beim umbennen von Methoden? Plattformprogrammierung 4
schalentier Eclipse Sourcecode Plattformprogrammierung 4
A Eclipse undo/redo button reagiert nicht auf Änderungen in der OperationHistory Plattformprogrammierung 5
P Eclipse M2_REPO (NON MODIFIABLE) Plattformprogrammierung 8
B Eclipse: Contextmenu id erhalten? Plattformprogrammierung 9
H Datei in eclipse wird nicht erkannt Plattformprogrammierung 3
O Neues Tastenkürzel für Eclipse Editorfenster registrieren Plattformprogrammierung 2
Madlip RCP eclipse.ui.bindings (Key-Problematik) Plattformprogrammierung 2
S Eclipse vs. JavaMail vs. Ubuntu vs. Windows Plattformprogrammierung 3
M eclipse führt applikationen nicht mehr aus Plattformprogrammierung 6
S Eclipse: Auf CTRL-C/CTRL-V im Package Explorer? Plattformprogrammierung 4
M Eclipse und Hilfen Plattformprogrammierung 5
G Eclipse buggt rum!!! Plattformprogrammierung 4
B Eclipse RCP und Java 7 Plattformprogrammierung 7
G RCP Eclipse Editor + Guice Plattformprogrammierung 8
G Eclipse Plug-in: wie refreshe ich eine combobox? Plattformprogrammierung 4
M Eclipse Plug-in: Wie eine Grafik einfügen? Plattformprogrammierung 20
M RCP [Eclipse RCP] Feature Export und "Fehler"... Plattformprogrammierung 3
P Eclipse speichert keine Änderungen Plattformprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben