IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

Eclipse GMF : accéder aux objets en mémoire.


Sujet :

Eclipse Platform

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut Eclipse GMF : accéder aux objets en mémoire.
    Bonjour,

    J'ai développé un plugin GMF simple qui me permet de créer une hiérarchie.

    Lorsqu'on sauvegarde, les objets sont sérialisés dans un format XML propre à EMF, comment faire pour récupérer les objets en mémoire afin de les mettre dans un autre format ?

    En clair, où est la map des objets ?

    Question subsidiaire : y-a-t-il un tuto clair sur la customisation des images utilisées dans le cas de graphes GMF ?

    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    Ben personne ne souhaite exporter dans un autre format que celui de l'éditeur standard ?

  3. #3
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Citation Envoyé par rodbeck Voir le message
    Lorsqu'on sauvegarde, les objets sont sérialisés dans un format XML propre à EMF, comment faire pour récupérer les objets en mémoire afin de les mettre dans un autre format ?
    Merci.
    Il faut charger la ressource (ie, ton fichier XMI) pour en obtenir une représentation objet en mémoire, et la manipuler de façon standard. Je ne sais pas comment le mettre dans un autre format mais cela doit être simple si le format de sortie est standard.

    Grosso-modo, tu devrais avoir un truc comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    ResourceSet resourceSet = new ResourceSetImpl();
     
    Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
     
    //Enregistrement du méta-modèle FOO
    URI packageResourceURI = URI.createURI("file:F:/Metamodel/FOO.ecore"); 
    Resource packageResource = resourceSet.getResource(packageResourceURI, true); 
    EPackage ePackage = (EPackage)packageResource.getContents().get(0);
    ePackage.setNsURI("FOO");
    EPackage.Registry.INSTANCE.put(ePackage.getNsURI(), ePackage); 
     
    //Chargement du fichier XMI conforme au méta-modèle FOO
    URI instanceResourceURI = URI.createURI("file:F:/essai1.foo"); 
    Resource instanceResource = resourceSet.getResource(instanceResourceURI, true);
     
    //Parcours du graphe d'objet via un itérateur arborescent (car un document XML possède une structure arborescente)
    TreeIterator<EObject> ti = instanceResource.getAllContents();
     
    while (ti.hasNext()) {
     
    	foo(ti.next()); // traitement foo sur des EObjects
     
    }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  4. #4
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Citation Envoyé par rodbeck Voir le message
    Question subsidiaire : y-a-t-il un tuto clair sur la customisation des images utilisées dans le cas de graphes GMF ?
    Qu'entends-tu par 'image' ? les icônes de la palette graphique ou les formes dessinables ?
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    Hmmm alors pour ma première question, j'ai semble-t-il réussi à accéder à mes objets. Je dis "semble-t-il" parce que je ne parviens pas à lire leurs propriétés.

    J'ai fait comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EClass maClasse = MonPackage.eINSTANCE.getMaClasse();
    List<EObject> list = maClasse.eContents();
    Ensuite j'essaye d'itérer sur chaque objets pour lire leurs propriétés, mais c'est comme si elles n'étaient jamais initialisées.

    Je vais essayer ta méthode, mais j'espérais pouvoir lire directement les objets dans avoir à les déserialiser depuis le fichier.

    Merci.

    Pour la deuxième question : les deux, pouvoir mettre une image totalement custom pour une forme donnée par exemple, et non une ellipse/rectangle...

  6. #6
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Citation Envoyé par rodbeck Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EClass maClasse = MonPackage.eINSTANCE.getMaClasse();
    List<EObject> list = maClasse.eContents();
    Ensuite j'essaye d'itérer sur chaque objets pour lire leurs propriétés, mais c'est comme si elles n'étaient jamais initialisées.

    Je vais essayer ta méthode, mais j'espérais pouvoir lire directement les objets dans avoir à les déserialiser depuis le fichier.
    Le code que tu as utilisé te permet d'instancier un nouvel objet (dont les propriétés sont vides). Tu comprends bien que ce nouvel objet n'a aucun lien avec l'objet que tu as dessiné via GMF. Il faut désérialiser le XMI pour récupérer les objets qui t'intéressent ici.

    Citation Envoyé par rodbeck Voir le message
    Pour la deuxième question : les deux, pouvoir mettre une image totalement custom pour une forme donnée par exemple, et non une ellipse/rectangle...
    Je crois qu'il faut créer ta propre classe MaFormePerso héritant de la classe abstraite Shape (org.eclipse.draw2d) et redéfinir les méthodes fillShape et outlineShape. La classe MaFormePerso doit être placée dans le sous-paquetage diagram.figures de ton workspace. Ensuite, lorsque tu décris ton fichier gmfgraph, tu créé une custom figure (plutôt que ellipse ou rectangle par exemple) et dans sa propriété Qualified Class Name tu indique le chemin vers ta classe perso, du style : com.monprojet.diagram.figures.MaFormePerso
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    Ok alors on y va pour la désérialisation !

    Ca me semble étrange qu'il n'y ait pas de méthode pour lire les instances directement en mémoire par contre...

    Merci de ton aide !

  8. #8
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Citation Envoyé par rodbeck Voir le message
    Ca me semble étrange qu'il n'y ait pas de méthode pour lire les instances directement en mémoire par contre...
    Je suppose qu'une application basée sur GMF crée bien des objets en mémoire, qui sont sérialisés dès que l'on sauvegarde le modèle (le dessin quoi). Mais je ne sais pas comment accéder à ces objets en mémoire. Par déduction il doit falloir récupérer en premier lieu le contexte de travail courant ou un truc dans le genre. Je ne sais pas non plus où "placer" un tel code pour qu'il soit chargé et exécuté. A creuser... (ça m'intéresse aussi)
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/04/2008, 14h59
  2. Réponses: 2
    Dernier message: 13/02/2008, 11h58
  3. Accéder aux objets de la form1 depuis une class
    Par Jimmy_S dans le forum Windows Forms
    Réponses: 6
    Dernier message: 23/03/2007, 23h47
  4. [VB.NET] Accéder aux objets par MDI
    Par Norin dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/08/2006, 01h19
  5. Réponses: 2
    Dernier message: 15/04/2006, 21h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo