Architecture du logiciel¶
Organisation des projets¶
La racine contient :
- lustre-parent : contient un dossier features/ et un dossier plugins/, ainsi que le fichier pom.xml principal, qui référence les composants à intégrer au projet, ainsi que les différents dépots à contacter pour résoudre les dépendances.
- org.obeonetwork.dsl.feature.lustre : il regroupe tous les plugins dans 1 feature (lui-même). Son pom.xml référence celui de lustre-parent.
A modifier pour : mettre à jour la liste des plugins à intégrer à la feature, mettre à jour les copyright.
- org.obeonetwork.dsl.lustre.update : il contient, une fois le build maven executé, l'update-site (target/repository/). Son pom.xml référence celui de lustre-parent.
A modifier pour : mettre à jout la liste des features à intégrer à l'update-site.
Plugins/ contient :
- org.obeonetwork.dsl.lustre : il est le projet principal Xtext, il contient la grammaire ainsi que tous les éléments configurables de Xtext (formating pour la génération, scoping pour le parsing). Son pom.xml référence celui de lustre-parent.
A modifier pour : modifier la grammaire, le formatting, le scoping.
- org.obeonetwork.dsl.lustre.edit : il est lié au projet Xtext, et contient les classes représentant les différents éléments de la grammaire. Son pom.xml référence celui de lustre-parent.
A modifier pour : rien.
- org.obeonetwork.dsl.lustre.editor : il est lié au projet Xtext, et contient les classes définissant l'éditeur textuel (utilisables si l'on souhaite intégrer l'éditeur textuel dans une application Eclipse RCP, par exemple). Son pom.xml référence celui du lustre-parent.
A modifier pour : rien.
- org.obeonetwork.dsl.lustre.ui : il est lié au projet Xtext, et contient les classes servant à la partie graphique de l'éditeur textuel. Son pom.xml référence celui de lustre-parent.
A modifier pour : rien.
- org.obeonetwork.dsl.lustre.design : il est le projet définissant la partie graphique de l'application. Il contient le lustre.odesign définissant le mapping entre les éléments de la grammaire et les éléments graphiques, il définit également l'aspect, et le positionnement. Son pom.xml référence celui de lustre-parent, et définit la compilation Acceleo du fichier LustreQueries.mtl.
A modifier pour : mettre à jour l'éditeur graphique en cas de modification de la grammaire.
- org.obeonetwork.dsl.lustre.xtext.support : il est une extension de org.obeonetwork.dsl.viewpoint.xtext.support, et intègre un éditeur textuel (de démonstration) à l'intérieur de la vue graphique Obeo. Son pom.xml référence celui de lustre-parent.
A modifier pour : rien.
- org.obeonetwork.dsl.lustre.examples : il définit les ajouts dans l'interface graphique d'Eclipse, comme un projet Exemple, et un nouveau projet. Son pom.xml référence celui de lustre-parent.
A modifier pour : ajouter de nouveaux éléments dans l'interface graphique d'Eclipse.
Fonctionnement général¶
L'éditeur graphique Obeo fonctionne de concert avec l'éditeur textuel Xtext grâce au fait qu'Obeo a déjà prévu cette fonction, ainsi il n'y a pas de travail à effectuer pour intégrer les 2 éditeurs.
L'éditeur textuel Xtext parse automatiquement le fichier .lus et génère une XtextResource qui contient différentes informations sur le texte, dont le modèle (ce qui nous intéresse ici).
L'éditeur graphique appelle la XtextResource pour en extraire le modèle, l'afficher selon les règles définies dans le fichier lustre.odesign, rend son édition possible via l'interface graphique. Puis lors de la sauvegarde il va appeler la méthode doSave() sur la XtextResource, qui va sauvegarder le modèle en fichier .lus.
Ainsi, l'éditeur graphique permet de modifier directement le modèle généré automatiquement par Xtext, et la mise à jour du fichier .lus est faite lors de la sauvegarde. Si le modèle est modifié dans l'éditeur textuel, l'éditeur graphique se met automatiquement à jour (puisqu'il est connecté à la XtextResource qui est automatiquement mise à jour grâce à Xtext).
Updated by Romain BOBO over 11 years ago · 15 revisions