DSL Factory

La communauté francophone autour des DSL Tools, et de l'extensibilité Visual Studio
The French-speaking community about DSL Tools and Visual Studio Extensibility
Bienvenue à DSL Factory Identification | Inscription | Aide
dans
Accueil Blogs Forums Photos Fichiers Roller

Multi-vues dans un modeleur DSL Tools

Dernier message 09-04-2007, 1:10 par Heinzer.David. 0 réponses.
Trier les messages Précédent
  • Multi-vues dans un modeleur DSL Tools

     09-04-2007, 1:10

    Bonjour tout le monde,
    Me revoici avec de nouvelles difficultés! ;)

    Je suis toujours en train de mettre en place le petit sample que je compte fournir à la communauté de Dsl Factory. Mais je rencontre quelques problèmes (en même temps, je m'y attendais un peu!)
    Avant de rentrer dans les détails, je tiens à précicer quelques termes :
    - Point de vue : je définis ce terme comme la capacité de se focaliser sur un sous ensemble du modèle abstrait. Cela permet de filtrer les informations pour n'avoir qu'une "famille" cohérente. Mon sample prend pour exemple la location de maison, on pourrait alors imaginer 3 points de vues : les personnes, les maisons et les relations "personne loue une maison".
    - Vue : ce terme désigne une instance d'un point de vue. Techniquement, la vue est représentée par un diagramme. Offrir plusieurs instances faciliterait le fractionnement de l'information, facilitant de même sa compréhension.

    Mon objectif est aujourd'*** de fournir plusieurs points de vue, sachant que l'on peut ensuite avoir N instances de chacun de ces points de vues. L'implémentation de ces possibilités permettraient d'accroitre énormément les capacités de modélisation des Dsl Tools pour des méta-modèles et modèles complexes.
    Pour l'instant, je sais mettre en place du "multi point de vues, mono vue". (une instance de vue uniquement par point de vue). Je travaille maintenant sur la possibilité de créer plusieurs diagrammes (vues). J'ai tenté plusieurs approches, mais toutes se soldent par un échec :

    • Créer mon propre type "MultipleDiagramDocView" héritant de DiagramDocView. La différence avec le type prédéfini dans les Dsl Tools (SingleDiagramDocView) est que ma classe gère une liste de Diagrams et non une instance. Mes propres DocView héritent alors de mon nouveau type.
    --> Problème : je crois me rendre compte qu'un onglet dans Visual Studio ne correspond pas à un Diagram comme je le croyais initialement. Mais c'est l'EditorFactory qui crée et initialise l'onglet.
    • J'ai donc travaillé sur l'EditorFactory généré par les Dsl pour essayer de modifier ceux correspondant à mes propres diagrammes.
    --> Problème : Les méthodes CreateDocData et CreateDocView de l'EditorFactory sont appelées en interne par Visual, je ne maîtrise pas son utilisation. Bien qu'il y ait surement une solution, je suis actuellement un peu perdu à ce niveau.
    • Pour finir, j'ai changé de tactique...! :p En faisant l'hypothèse que les différentes vues étaient physiquement déjà créées (c'est à dire un fichier de type Vue.01.PersonDiagram, Vue.01.PersonDiagram, etc.), j'ai voulu mettre en place l'ouverture de diagramme en double cliquant sur le fichier correspondant. La manière est normalement assez simple : ajouter un attribut au niveau du package et surcharger la méthode Initialize().
    --> Problème : l'ouverture à partir du fichier diagramme créer un nouveau DocData associé (et donc un nouveau modèle, si j'ai bien compris). J'ai donc surcharger les méthodes CreateDocData de mes propres EditorFactory pour qu'ils renvoient la référence vers le DocData existant si il existe. Mais j'obtiens deux types d'exceptions  : "Specified event handler is already registrered" si le modèle est déjà ouvert sur le diagramme par défaut, "La référence d'un objet n'est pas défini à une instance d'un objet" si j'essaie d'ouvrir mon diagramme quand rien n'est ouvert . Je n'ai pas réussi à trouver de quel handler il était question. :(

    Peut être avez vous déjà été confrontés à ce genre de situation? Dans ce cas, vos conseils pourraient m'être d'une grande aide!

    Merci d'avance,

    Heinzer David


Voir comme un flux RSS en XML
Propulsé par Community Server, par Telligent Systems