# EMF/GMF Anfänger Fragen



## manius (25. Mrz 2011)

Hallo,

habe mein altes EMF/GMF Projekt  ausgegraben, und habe wieder ein paar Fragen. Vielleicht kann mir jemand paar Tipps geben. Bin blutiger Anfänger also verzeih mir meine ausdruckweise...

1. ich habe mein EMF.Editor so umgebaut, daß ich über Button/Action neue Elemente über Commads zufügen kann. (soll eine import funktion sein...wobei mehrere Elemente "Tree" zugefügt werden sollen).
Funktioniert erstmal gut, aber beim Undo werden nur einzelne Command zurück genommen, d.h einzelne Elemente ... (beim über 100 Elemente etwas unschön...) Frage: wie kann ich z.B ein Tree von Elementen auf ein mal zufügen? oder mehrere commad sammeln und auf ein mal absetzen???

2. im Diagramm hätte ich gerne eine Funktion wo ich mehrere Elemente markieren und dann mit einem Element ersetzen kann. beim z.B doppel-klick wurde dann der Inhalt in neuem Edit-Fenster zur Verfügung stehen. 
Ist so was einigermaßen einfach zu implementieren? wonach soll ich googln? 

3. noch eine triviale Frage: wie kann ich in Properties Values als Hex anzeigen (Editor oder Diagram) ?


Gruß und Danke im Voraus !!!


----------



## Wildcard (25. Mrz 2011)

> 1. ich habe mein EMF.Editor so umgebaut, daß ich über Button/Action neue Elemente über Commads zufügen kann. (soll eine import funktion sein...wobei mehrere Elemente "Tree" zugefügt werden sollen).
> Funktioniert erstmal gut, aber beim Undo werden nur einzelne Command zurück genommen, d.h einzelne Elemente ... (beim über 100 Elemente etwas unschön...) Frage: wie kann ich z.B ein Tree von Elementen auf ein mal zufügen? oder mehrere commad sammeln und auf ein mal absetzen???


Verschiedene Möglichkeiten:
Mach ein ChangeCommand und ändere dort einfach das Modell. Das ChangeCommand nimmt alle Änderungen im Modell wie ein Recorder auf und kann sie dann Rückgängig machen. Alternativ musst du mit CompositeCommands arbeiten.



> 2. im Diagramm hätte ich gerne eine Funktion wo ich mehrere Elemente markieren und dann mit einem Element ersetzen kann. beim z.B doppel-klick wurde dann der Inhalt in neuem Edit-Fenster zur Verfügung stehen.
> Ist so was einigermaßen einfach zu implementieren? wonach soll ich googln?


In GMF ist das meiste leider nicht so einfach. Hört sich an also ob der GMF Diagram Partitioning Support in etwa ist was du dir vorstellst, die Action musst du allerdings selbst schreiben.



> noch eine triviale Frage: wie kann ich in Properties Values als Hex anzeigen (Editor oder Diagram) ?


Verstehe die Frage nicht wirklich. Du kannst zB den ItemProvider anpassen wenn der Wert immer als Hex angezeigt werden soll.
Wenn der Wert auch in GMF manipuliert werden soll musst du den GMF Text Parser anpassen um den Wert wieder in einen int? umzuwandeln.


----------



## manius (26. Mrz 2011)

Servus Wildcard,
Danke!

zu 1. jooo danke ! ChangeCommand nehme mir morgen vor .... 
zu 2. das Problem nehme ich mir aber etwas später vor. ok aber Stichwort habe schon  Diagram Partitioning Support... ich google erst bevor ich weitere  Fragen stelle....
zu 3. hmmm klingt irgendwie kompliziert  für so einfache Aufgabe?  ich möchte manche Properties obwohl die von int-Typ sind, im hex anzeigen und auch im hex editieren. (z.B int max_value = 256 angezeigt wird 0x100 und so will ich auch editieren). 
Ich dachte vielleicht kann ich was mit "Visual representation" im gmfmap-File (für Diagramm) anfangen? da gibt’s gewisse Formatierungs-Möglichkeiten die ich aber nicht 100% verstehe ....
(Dort gibts Edit Method, Editor Pattern, View Method, View Pattern....) ??? (EditMethod -> PRINTF klingt irgendwie gut  oder muss ich das programmatisch lösen ? 
(OK! wenn sogar, die Einträge gelten nicht für Properties-View :-(( ....)

Gruß


----------



## manius (3. Apr 2011)

Hi,

1. mit ChangeCommand habe ich leider nicht geschafft (habe nicht kapiert wie das zu verwenden ist). aber dafür mit CompositeCommands  hat gut geklappt. (mag zwar nicht ausweichen aber was soll's...)
gibt's da große Unterschiede in der Implementierung ?

3. hier habe ich ein neuen EDataTyp erzeugt, der mir einfach int-werte als hex-String liefert! ist doch eleganter oder? und es scheint zu funktionieren... 

jetzt kämpfe ich mit Xpand aber dafür mache ich neuen Thread...

Wildcard Danke und Gruß !!!! :toll:


----------

