# GMF Editor mit nur einem Connection Tool



## Bakushu (21. Dez 2010)

Hallo,

ich bin gerade dabei meinen ersten graphischen Editor, für eine DSL, mit GMF zu entwickeln.
Dafür habe ich mir diverse Tuorials durchgelesen und auch das Buch von Richard Gronback gekauft.
Bisher komm ich gut zurecht, ich konnte alle benötigten Modelle erfolgreich erstellen und daraus einen grafischen Editor erzeugen.

Mein Problem ist nun , dass ich in meinem Metamodell mehrere Assoziationen zwischen Klassen gesetzt habe und jede dieser Assoziationen (Connections) wird jetzt in der Palette des Editors angezeigt.
Im Prinzip ist es nicht schlimm, aber ich bin es von DSL Tools in Visual Studio gewohnt, dass man dafür einen Connection Builder erzeugen kann, der jegliche Connection repräsentiert.

Lange Rede, kurzer Sinn ist es möglich in GMF, in der Palette von einem Editor, nur eine Connection zu haben, die für alle Connections des entsprechenden Metamodells gilt?
Oder ist dieses Verhalten nur mit eigener Programmierung zu erreichen?

Ich möchte es halt vermeiden, dass in meinem Editor 10 Elemente für die Connections vorhanden sind, von denen der Benutzer dann zusätzlich die richtige auswählen muss.
In all den Tutorials, die ich bisher gefunden habe, wurde entweder ein Editor mit nur einer Connection erzeugt oder wenn es mehrere waren, dann wurde nichts am Editor verändert und die Palette hatte mehrere Connection Tools
Daher bin ich immer noch auf der Suche nach einer Lösung für mein Problem.



Ich hoffe ich konnte mein Anliegen halbwegs verständlich ausdrücken.
Vielleicht kann mir jemand einen guten Tipp geben.


Viele Grüße
Bakushu


----------



## Wildcard (21. Dez 2010)

Du kannst alle anderen Connections aus der gmftool entfernen, allerdings musst du dann das Tool bzgw. die Edit Policy händisch anpassen um je nach Kontext eine andere Connection zu erstellen. Ganz ohne programmieren funktioniert es also nicht.


----------



## Bakushu (22. Dez 2010)

Hab es mir  schon fast gedacht .
Bezüglich solcher Dinge, find ich das Visual Studio Visualization and Modeling SDK einfach besser gemacht.
Naja ok, zumindest weiß ich jetzt, dass ich nach EditPolicies suchen muss.

Kannst du mir vielleicht ein Tutorial sagen, bei dem so was gemacht wird?

Gruß
Bakushu


----------



## Wildcard (22. Dez 2010)

Ich persönlich bin auch kein großer Fan von GMF. Der generierte Code ist IMO einfach zu kompliziert und schwierig zu customizen. Auch das Default Look and Feel der Graphen gefällt mir nicht besonders.
Vielleicht schaust du dir mal Graphiti als GMF Alternative an, mir ist Graphiti deutlich angenehmer. Du schreibst zwar Code statt ihn zu generieren, allerdings braucht man in den meisten Fällen nur sehr wenig, einfach vertändlichen Code.
Graphiti Home


----------



## Bakushu (22. Dez 2010)

Von Graphiti habe ich schon gelesen, aber ich brauche GMF für mein Studium. Daher möchte ich es in GMF hinkriegen graphische Editoren zu erzeugen, wenn möglich genau so wie mit dem Visual Studio Visualization and Modeling SDK .
Bei dem Thema Codeerzeugung muss ich noch mehr lesen, aber soweit ich das überblicken kann, wird doch ein Modell, das man in einem GMF Editor zeichnet, in einer XML File gespeichert.
Und diese XML kann man doch mit diversen Templatesprachen, wie Xpand oder Acceleo umwandeln in anderen Code, z.B. Java-Code.
Natürlich muss man für diese Transformation eine eigene Umwandlungslogik entwerfen, aber es ist eigentlich gut machbar.

Ich vermute du meintest in deinem vorherigen Post den Code, der für den eigentlichen Editor erzeugt wird, oder?
Da stimm ich dir zu, er ist schwer zu verstehen.
Leider gibt es auch kaum Literatur dazu, und deutsche Bücher schon gar nicht 

Die Tutorials auf Eclipsepedia über GMF sind auch schon älter und ich finde das Buch von Richard Gronback nicht sehr geeignet für Anfänger.
Ich habe viele Begriffe zum ersten Mal gehört und der Code wird IMO auch oft nicht gut beschrieben.

Aber alle Anfang ist ja bekanntlich schwer  

Momentan wär ich schon froh wenn ich nur ein Tool für eine Connection  in meinem Editor hätte, momentan sind es leider 9.


----------



## Wildcard (22. Dez 2010)

> Von Graphiti habe ich schon gelesen, aber ich brauche GMF für mein Studium. Daher möchte ich es in GMF hinkriegen graphische Editoren zu erzeugen, wenn möglich genau so wie mit dem Visual Studio Visualization and Modeling SDK .


Da ich Visual Studio Visualization and Modeling SDK nicht kenne kann ich dazu nicht viel beitragen.


> Bei dem Thema Codeerzeugung muss ich noch mehr lesen, aber soweit ich das überblicken kann, wird doch ein Modell, das man in einem GMF Editor zeichnet, in einer XML File gespeichert.
> Und diese XML kann man doch mit diversen Templatesprachen, wie Xpand oder Acceleo umwandeln in anderen Code, z.B. Java-Code.
> Natürlich muss man für diese Transformation eine eigene Umwandlungslogik entwerfen, aber es ist eigentlich gut machbar.


Nicht zwangsläufig XML. Das Modell wird per EMF Resource serialisiert und geladen. Mit EMF kann man so ziemlich in jedes Format serialisieren, es muss also nicht immer XML sein.



> Momentan wär ich schon froh wenn ich nur ein Tool für eine Connection in meinem Editor hätte, momentan sind es leider 9.


Das ist wie gesagt erstmal nicht schwer, du musst lediglich die gmftool anpassen. Danach musst du allerdings dafür sorgen das dein eines Tool jeweils die passende Connection erzeugt.
Noch als Tipp, Connections müssen nicht unbedingt eine Entsprechung im Modell haben (also zB eine Connection Klasse). Du kannst Connections auch direkt über EReferences ableiten.


----------

