, azerr Il existe à ce jour de nombreux plugins Eclipse qui permettent de gérer un fichier de configuration XML à l'aide d'un éditeur graphique.
Un exemple bien connu est celui de JSF webtools qui permet de gérer le workflow des pages d'un projet JSF (navigation-rules) du fichier XML de configuration faces-config.xml à l'aide d'un éditeur graphique.

Cet éditeur graphique s'appuie sur plusieurs projets dont GEF, EMF et WST.
Concernant GEF et EMF, il y a beaucoup de documentation, mais concernant WST? J'ai passé un temps fou à décortiquer les sources de JSF webtools pour comprendre les grands principes et je vais tenter à travers plusieurs billets, d'expliquer un exemple concret qui utilise GEF, WST et EMF ensemble pour gérer un fichier XML à partir d'un éditeur graphique GEF.
Pour suivre ces billets, le pré-requis est d'avoir des connaissances avec GEF et EMF. Concernant WST (projet faisant parti de WTP), il est découpé en une multitude de plugins, mais celui qui nous intéressera en particulier sera celui qui gère le DOM XML. Autrement dit il permet de synchroniser un éditeur (Texte, XML) avec un DOM qui est capable de déclencher des événements lorsque le contenu de l'éditeur de texte est modifié.
L'exemple choisi est celui de Shape EMF qui est basé sur EMF et GEF. L'article datant de 2005, le projet devra être modifié dans un premier temps pour le remettre à jour car à l'époque un plugin Eclipse ne suivait pas totalement l'architecture OSGI.
Pour rappel, Shapes EMF permet d'afficher sous forme graphique (avec GEF) le fichier modèle EMF *shapesemf.

Ce fichier est un fichier XML sérializer dans un format XML propre à EMF. Si vous éditer un fichier *shapesemf qui est constitué d'un rectangle et d'une ellipse, vous pourrez visualiser ce contenu XML :
<?xml version="1.0" encoding="ASCII"?>
<org.eclipse.gef.examples.shapes.emf.model:ShapesDiagram xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:org.eclipse.gef.examples.shapes.emf.model="http:///org/eclipse/gef/examples/shapes/emf/model.ecore">
<shapes xsi:type="org.eclipse.gef.examples.shapes.emf.model:EllipticalShape" x="57" y="32" width="80" height="76"/>
<shapes xsi:type="org.eclipse.gef.examples.shapes.emf.model:RectangularShape" x="185" y="99" width="113" height="82"/>
</org.eclipse.gef.examples.shapes.emf.model:ShapesDiagram>
Comme on peut le constater ce XML est assez difficle à lire et le but de mes billets est de pouvoir expliquer comment sérializer le diagramme EMF Shape en un XML plus simple et comment synchroniser l'instance EMF avec le DOM XML.
J'expliquerais comment modifier ce projet pour le coupler à WST, ce qui permettra de :
<?xml version="1.0" encoding="UTF-8"?>
<diagram>
<shapes>
<ellipse height="65" width="101" x="32" y="29"/>
<rectangle height="79" width="101" x="86" y="138"/>
<ellipse height="73" width="113" x="234" y="34"/>
</shapes>
</diagram>
Ceci permettra d'ouvrir 2 éditeurs à partir du fichier XML Shape :
Ces 2 éditeurs seront synchronisés sans que l'on enregistre l'éditeur courant , autrement dit si on modifie l'éditeur GEF (ajout d'un rectangle, déplacement d'un rectangle...), l'éditeur Texte se rafraîchira avec le nouveau contenu XML. Si on modifie le contenu XML (en ajoutant un nouvel élément <rectangle /> ) l'éditeur GEF se rafraîchira en ajoutant la nouvelle figure.
Voici une copie d'écran de ce que l'on obtiendra :

Soyez indulgent s'il vous plait car je ne suis pas un expert en WST et je tenterai au mieux d'expliquer ce que j'ai compris. Si vous êtes intéréssés par le sujet, n'hesitez pas à poster vos remarques afin d'obtenir une liste de billets pertinents expliquant WST.
Enfin je remercie djo, membre de DVP et Olivier Moïses créateur de Wazaabi2 pour m'avoir aidé sur ce sujet.
Vous devez être identifié pour poster un commentaire.
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |