Logo EPU Logo  SmartTools Duchamp Agnès - Farouk Hassam Shouhéla - Mével Stéphanie

Création de vue générique

Voici comment utiliser les vues créées par SmartTools(SWING) dans Eclipse.
Les différentes vues doivent dériver de la classe générique StView de StEditor qui étend ViewPart .


Cette classe contient la méthode suivante:
public void createPartControl(Composite parent,String title,String transform ,String styleSheet,String behaviors) {
/*Récupération de l'éditeur courant*/
fEditor = (StEditor)(getSite().getPage().getActiveEditor());
/*Récupération du nom du fichier associé*/
String docRef = fEditor.getFilePath();
/*Récupération de la facade*/
facade = fEditor.getFacade();
displayArea = parent ;
/*Construction de GdocView pour construire la vue */
ged = new GdocView(title, docRef, behaviors,transform, styleSheet);
/*Permet de récupérer les actions sur la vue*/
GdocViewCtrl ctrl = new GdocViewCtrl(ged,facade);
/*Ajoute la vue à la liste de vues associées à la facade pour pouvoir notifier toutes les vues lors de la sélection d'un élèment dans l'une d'entre elles*/
facade.addView(ged);
try {
displayArea.setBounds(0, 0, 200, 250);
/*Pour créer le pont, le composite doit être construit avec la variable SWT.EMBEDDED */
Composite workArea = new Composite(displayArea, SWT.EMBEDDED);
java.awt.Frame frame = SWT_AWT.new_Frame(workArea);//pont
ged.buildContent(facade.getTree());
frame.add(ged.getComponent());
} catch (Exception e) {
e.printStackTrace();
} }


Ainsi dans chaque plugin, on peut construire une classe(par exemple CdmlSyntax pour CDML) qui étendra la classe générique StView. La Méthode createPartControl qui appelle la méthode de la classe mère avec les bons arguments.
public void createPartControl(Composite parent) {
super.createPartControl(parent,"CdmlSyntax","file:"+chemin+"/xsl/cdmlsyntax-bml.xsl","file:"+chemin+"/css/cdmlsyntax-styles.css","file:"+dir_eclipse + "/contrib/components/cdml/resources/behaviors/cdml-behaviors.bhv");
.

Cette méthode est celle appelée par Eclipse lors de l'ouverture d'une vue.
En effet, pour chaque composant, il faut définir les vues existantes dans le fichier plugin.xml.
<extension point="org.eclipse.ui.views">
<category name="Vues CDML"
id="fr.improve.appli.viewCategory"/>
<view name="CDML XML"
icon="icons/sample.gif"
category="fr.improve.appli.viewCategory"
class="cdml.editors.CdmlXml"
id="cdml.editors.CdmlXml"/>
</extension>

Pour chaque composant doit avoir sa propre catégorie pour contenir ses vues.
Intérêt de l'utilisation de ses vues par rapport aux vues d'Eclipse:
Pour écrire un éditeur associé à un langage il est nécessaire d'implémenter un certain nombre de classes telle que Scanner.java.
Or il est fastidieux d'écrire toutes ces classes.
Or dans notre cas, nous n'avons du écrire qu'une seule ligne contenant les différents paramètres tels que la feuille de style ou la transformation(xsl)(générée automatiquement par SmartTools à partir de cdml-syntax.cosynt par exemple).

Changements effectués dans les classes de St Core:

Les vues actuellement disponibles:
Notez qu'il est nécessaire d'avoir sélectionné l'éditeur associé à la vue avant d'ouvrir celle-ci. De plus, l'arbre étant construit grâce à l'appel de la outline, il est nécécessaire d'appeler celle-ci avant d'ouvrir une vue.
  • CDML
  • ABSYNT
  • Xml

  • EPU - 2006-Encadrant : Didier Parigot