Académique Documents
Professionnel Documents
Culture Documents
Introduction :
Ce tutoriel à pour but de faire découvrir, à partir d’un exemple simple, le fonctionnement du plugin
eclipse « GMF ».
Mais avant de se lancer tête baissée dans ce qui suit, il est important de savoir deux choses :
• Ce qu’est EMF. Si un fichier avec une extension .ecore, ça ne vous évoque rien alors c’est mal
parti pour comprendre la suite.
• A quoi ça sert GMF ? Peut-être quelques précisions à ce niveau là ne seraient pas superflues :
GMF pour « Graphical Modeling Framework » est un plugin qui permet de créer un éditeur graphique
conforme à un modèle. Autrement dit, grâce à GMF, vous allez pouvoir vous fabriquer votre propre
outil qui vous permettra d’instancier facilement votre propre modèle. Par facilement je veux dire :
graphiquement, en dessinant juste des carrés et des flèches. Intéressant, non ? Si vous n’êtes pas
convaincu, regardons tout de suite un exemple.
Figure 1 - le modèle
Imaginez que vous vouliez instancier ce modèle. C'est-à-dire créer une base de données. Comment
feriez-vous ? Probablement vous écririez un schéma SQL comme celui-ci :
Vous ne trouvez pas ça un peu long et laborieux ? Alors qu’il n’y a ni jointure, ni rien de compliqué!
Regardez plutôt ceci :
On « pioche » dans la palette l’élément que l’on veut créer et on le fait glisser sur le dessin. Facile.
Vous êtes déjà séduit par GMF ? Alors rentrons vite dans le vif du sujet.
Vous avez probablement remarqué sur la figure précédente (figure 2) que deux parties se distinguent
clairement dans notre éditeur :
• A gauche (avec un fond « saumon ») où l’on peut voir notre base (notre instance de modèle) se
créer.
• A droite (fond vert) où l’on trouve les outils de création des différents éléments de notre
modèle.
Nous allons créer ces deux parties séparément, dans deux fichiers différents. Le premier fichier aura
comme extension « .gmftool », et c’est ici que l’on définira les outils de création (la palette de la figure
2). Le deuxième fichier (extension « .gmfgraph ») nous permettra de définir la partie graphique de
notre éditeur : une table, c’est un rectangle avec son nom en haut à gauche, …
Reste un problème : comment associer le carré à l’EClass table et à l’outil de création de table ? Un
troisième fichier sera nécessaire pour lier tout ça. Son extension sera « .gmfmap ».
Avantage indéniable de GMF, toute la partie création se fait sans écrire une seule ligne de code !
A vos souris :
Etape 1
Première chose à faire : télécharger par internet le plugin (si ce n’est pas déjà fait)
Pour cela allez dans le menu Help -> Software Updates …
Une fenêtre apparaît. Cliquez sur l’onglet « Available Software »
Déroulez la ligne http://download.eclipse.org/releases/ganymede et cocher les lignes:
• Graphical Modeling Framework Runtime
• Graphical Modeling Framework SDK
Etape 2
Créons maintenant nos trois fichiers :
Cliquez droit sur model: new -> other -> Graphical Modeling Framework -> Default -> GMFTool
Model puis cliquer sur « next ». (Voir figure 5).
Préciser ici le nom à donner à votre fichier (par exemple: basesRel.gmftool) puis cliquer sur « finish ».
De même, cliquez droit sur model: new -> other -> Graphical Modeling Framework -> Default ->
GMFGraph Model puis cliquer sur « next ».
Préciser ici le nom à donner à votre fichier (par exemple: basesRel.gmfgraph) puis cliquer sur
« finish ».
Enfin : cliquez droit sur model: new -> other -> Graphical Modeling Framework -> GMFMap Model
puis cliquer sur « next ».
Préciser ici le nom à donner à votre fichier (par exemple: basesRel.gmfmap) puis cliquer sur next.
De la même manière, dans votre palette vous pouvez créer un « Creation Tool ». Il servira à créer une
table dans notre éditeur. A l’aide d’un clic droit puis de « Show Properties View » vous pouvez
afficher les propriétés de l’élément que vous venez de créer. Il est fortement conseillé de donner des
noms explicites.
Etape 4
Remplissons notre fichier basesRel.gmfgraph.
Comme précédemment, nous allons créer des enfants à partir de menus contextuels. Tout d’abord un
« Figure Gallery ». Cela contiendra tous les éléments graphiques que l’on voudra dessiner
(principalement des rectangles, des cercles, …). Commençons par un seul élément graphique : celui
pour représenter une table.
Pour cela il nous faut, comme enfant de « Figure Gallery », un « Figure Descriptor », ayant lui-même
un enfant « Rectangle », ayant lui-même un enfant « Grid Layout ».
Vous devez préciser le nom du « Figure Descriptor », à l’aide de sa fenêtre des propriétés.
Voila ce qu’on a obtenu :
Une fenêtre apparaît ou vous devez préciser un nom. Par exemple ici nous dirons basesRel.gmfgen.
Figure 23 - un BasesRel.Diagram
Précisez ensuite le nom de votre base. Voila ce que vous êtes censé avoir obtenu :
Si c’est le cas, alors félicitations : vous venez de créer votre premier modeler graphique. Si ce n’est pas
le cas, retournez voir les propriétés de tous les éléments que l’on a créés jusqu’à présent. Tous les
détails comptent.
Attardons-nous un peu sur notre modeler. On retrouve bien notre palette sur la droite. Le nom « Créer
une table » apparaît directement ici. D’où l’importance de mettre des noms explicites. Si vous essayez
de créer une table vous verrez qu’un rectangle apparaît bien. Vous vous apercevrez vite que les
« caractéristiques » de notre modèle sont respectées : par exemple il est impossible ici de rajouter une
table dans une table puisque qu’une table ne contient que des colonnes dans notre modèle.
Etape 7
Il nous suffit maintenant de reprendre les étapes 3 à 6 pour ajouter petit à petit tous les éléments de
notre modèle que l’on veut représenter dans notre modeler graphique. Vous êtes invité à découvrir par
vous-même l’ensemble des possibilités de GMF, car il serait trop long de tout lister ici. Nous allons
tout de même voir ensemble quelques éléments spécifiques qu’il est très utile de connaître.
Les compartiments
Pour qu’une figure (un rectangle par exemple) puisse contenir plusieurs autres figures, il faut qu’il soit
compartimenté. Pour cela il suffit de créer, de la même manière que l’on a créé un node ou un
descripteur de figure, un « Compartment ».
Il suffira ensuite « d’appeler » (à l’aide d’un Child Access) ce compartiment dans la figure que l’on
veut compartimenter.
Les propriétés importantes du compartment sont :
• Name : vous aurez deviné !
• Figure : il faut préciser ici la figure que l’on veut compartimenter.
• Accessor : on précisera ici le Child Access qui fera le lien entre la figure et le compartiment.
Les labels
Pour décrire un élément de notre modèle, on peut faire autrement que de le représenter par une figure
(rectangle, rond, …). On peut aussi le représenter par un label, c'est-à-dire par une zone de texte. Dans
ce cas, c’est très simple : plutôt que de créer un nouveau descripteur de figure, on créera un nouveau
« Diagram Label ». Bien entendu, si l’on veut que ce label s’affiche dans une figure, il faudra, dans la
figure en question, créer un Child Access qui fera le lien entre la figure et le label.
Les propriétés des labels ressemblent beaucoup à celles des compartiments : il vous faudra préciser un
nom, une figure et un accesseur.