# viele GMF Fragen



## js2002 (24. Jan 2008)

Hi,

ich habe mich ein wenig in GMF eingearbeitet und einen ersten simplen Editor hinbekommen, habe aber noch 1000 Fragen:

1. Das Domain Modell ist für die Codegenerierung des Modell u.a.  richtig?
Wozu sind die .edit und .editors Projekte die man mit diesem Modell anlegen kann?!

2. Wie ist soetwas machbar:
Prozessmodellierer:
Der Benutzer legt per drag & drop eine Objekt auf einen speziellen Bereich in der View. Anhand der platzierung (y achse)   weiss ich dann wo es hingehören soll. Beispiel: er platziert es unten, dann weiss ich es ist später im prozess ist und kann mir das speichern. Sozusagen horizontale sichtbare Grenzen einbauen. Wie und wo coded man sowas?!
Wegen solchen "Problemen" bin ich fast wieder dabei doch GEF anstatt GMF zu nehmen.
Was meint ihr?


----------



## Natorion (24. Jan 2008)

Hmm lange her aber ich versuch mal:

1.) .edit sind da nicht die ItemProviders für die verschiedenen Nodes drinnen?
.editor ist glaub ich der EMF-Editor für dein Model (also der mit dem Tree)

2.) Hmmm, eventuell einfach zwei Rechtecke machen, die als Container benützt werden. Scheint eine logische und relativ einfache Möglichkeit zu sein. Also oberer Container Beschreibungen oder sowas und der untere Container enthält nur Prozesse.


----------



## js2002 (24. Jan 2008)

Zu 1.: Hmm und .diagram vereint dann alles oder wie?

Zu 2.: Ich bräuchte jedoch eine variable Anzahl an Containern.
Prozess-Phase 1 2 3 .. alle so untereinander weg. Muss mir da noch was überlegen ....


----------



## Natorion (24. Jan 2008)

1.) das ist der gmf-editor soweit ich mich erinnern kann. im zweifelsfall einfach kurz den sourcecode checken bzw den workflow beobachten (sieht man im cheatsheet besonders gut).

2.) najo, das ist doch kein problem. ob da jetzt 2 oder 20 container sind. du kannst sie ja verschiebbar aber nicht löschbar machen usw. oder dsa hinzufügen und löschen geht nur über eigene buttons. grundsätzlich kein problem, wird halt alles nur aufwendiger


----------



## Wildcard (24. Jan 2008)

Das edit Plugin ist Eclipse unabhängiger Code der generisch verwendet werden kann um ein Model in Listen, Tabellen, Bäumen,... anzeigen zu können, und enthält alle nötigen Commands um das Modell zu manipulieren.
In Eclipse lässt sich zB mit dem edit Plugin mit wenigen Zeilen ein Content und ein LabelProvider erstellen.
Weiterhin kann das edit Plugin auf beliebge Typen adaptieren zu lassen (Stichwort Erweiterungsobjekt).

Das Editor Plugin ist Eclipse spezifisch und legt einen einfachen Baum Editor für das Modell an, der primär zum testen des Modells Sinn macht.


----------



## js2002 (24. Jan 2008)

Mal ne generell Frage noch hier zu GMF:

Ich lass mir "am Ende" ja ein .diagram plugin erstellen. Wie sieht es mit manuellen Änderungen aus?
Wenn ich z. B. Sachen einbauen möchte, die ich nicht mit GMF einbauen kann oder will, wie z. B. Controlfluss Code für verschiedene Berechnungen.

Klar ich kann die ins .diagram plugin einpflegen, aber wenn ich dann mit GMF Änderungen mache, muss ich ja ein neues .diagram erzeugen und meine "ohne gmf"-Änderungen sind WEG!

Wie macht man sowas denn?


----------



## Wildcard (24. Jan 2008)

GMF merged Code mit dem existierenden (zur Sicherheit sollte man aber immer eine Codeverwaltung verwenden).
Dazu sind die @generated Tags.
Wenn man eine Änderung einpflegt: @generated NOT und der Code Generator ignoriert die Methode.
Für meine Zwecke hat sich ein zweiter Source Ordner customsrc bewährt, der die Package Struktur doppelt. Dadurch lassen sich händisch erstellte Klassen leichter von generierten unterscheiden.


----------



## js2002 (24. Jan 2008)

Das mit dem NOT war ein guter Tip, bloss da gibts ein Problem:

Ich mache testweise eine Änderung in der Datei: 


```
public class DiagramEditorActionBarAdvisor extends ActionBarAdvisor
```

bei der Methode:

```
public static class AboutAction extends WorkbenchWindowActionDelegate
```

Wenn ich dann aus dem Ursprungsplugin .diagram Code generiere ist das logischerweise wieder weg.
Beim Ursprungsplugin gibt es diese Klasse aber noch gar nicht.

Wie geht sowas denn?




2. Ich habe heute nurmal versucht, die tool palette beim start der rcp applikation nicht rechts sondern links anzuzeigen.
Es soll wohl irgendwie über extensions gehen, ich habe aber keinen Plan.
Die Webliteratur hilft mir auch nicht weiter.
Ich weiss, dass ich irgendwas von dem Gesamtkonzept von GMF nicht kapiert habe, weiss aber nicht was.
Wo finde ich da was gutes?
Ich verzweifel gerade, wenn man nichtmal so kleinigkeiten hinbekommt...


----------



## Wildcard (24. Jan 2008)

js2002 hat gesagt.:
			
		

> Ich mache testweise eine Änderung in der Datei:
> 
> 
> ```
> ...


Keines davon ist eine Methode, daher verstehe ich die Frage auch nicht.


----------



## js2002 (24. Jan 2008)

```
public static class AboutAction extends WorkbenchWindowActionDelegate {

		/**
		 * @generated
		 */
		public void run(IAction action) {
			MessageDialog.openInformation(getWindow().getShell(),
					Messages.DiagramEditorActionBarAdvisor_AboutDialogTitle,
					Messages.DiagramEditorActionBarAdvisor_AboutDialogMessage);
		}
	}
```

diese Methode in der Class AboutAction habe ich mal veränder dass es so aussieht:


```
public static class AboutAction extends WorkbenchWindowActionDelegate {

		/**
		 * @generated
		 */
		public void run(IAction action) {
			MessageDialog.openInformation(getWindow().getShell(),
					Messages.DiagramEditorActionBarAdvisor_AboutDialogMessage,
					Messages.DiagramEditorActionBarAdvisor_AboutDialogMessage);
		}
	}
```


----------



## Wildcard (24. Jan 2008)

Und wenn du nun @generated NOT schreibst, bleibt es auch so.


----------



## js2002 (24. Jan 2008)

Jetzt hats geklappt. Kannste das andere auch noch sagen. Also das mit dem "docking" der tool palette?


@all: Kenn niemand ein gutes GMF Buch?


EDIT: Nach ein paar mal .diagram erstellen verschwindet das "NOT" manchmal wieder. Weiss jemand warum?


----------



## Wildcard (24. Jan 2008)

Schau dir dazu die GEF Resourcen/Beispielcodes an.

Es gibt (noch) kein Buch zu GMF und auch noch kein (gedrucktes) Buch zu GEF.


----------



## js2002 (24. Jan 2008)

Hi Wildcard nochmal,

würdest du ein "Coaching" mit mir durchgehen? So per skype oder telefon...
Ich würde dich auch dafür bezahlen, da ich glaube dass du da echt voll die Ahnung hast.
47775134 icq, wenn interesse oder antworte hier...


----------



## js2002 (31. Jan 2008)

Ich habe nun meine genmodel fertig und frage mich: 
Wie benutzt man denn überhaupt das .editor Plugin?

Muss man jedes plugin Projekt exportieren und zur jar machen und dann in den plugin Ordner legen? oder wie ist es gedacht?


----------



## Wildcard (31. Jan 2008)

Das EMF Editor Plugin ist primär für den Entwickler selbst, zu Testzwecken und natürlich nicht erforderlich.
Das Deployment erfolgt idealerweise über ein Feature Projekt. Daraus lässt sich dann auch problemlos eine Update-Site für den Update-Manager erstellen.


----------

