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 Java Discussion :

événement quand on créer un objet dans un éditeur gef ou gmf


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Par défaut événement quand on créer un objet dans un éditeur gef ou gmf
    bonsoir
    j'ai crée un éditeur gmf, quand je prend un outil de ma palette et que je créer une forme graphique sur mon plan, j'aimerai intercepté la création, donc juste avoir l'événement du clic de souris sur le plan ! ça doit être la même chose sur un éditeur gef ! et je ne trouve pas la bonne classe....
    merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Par défaut
    Bonjour,

    Il faut regarder dans la classe EditPart qui est associée à ta classe modèle faisant office de conteneur (classe racine de ton modèle qui contient tous les objets des composants que tu crées dans l'édteur).

    Dans cette classe EditPart tu regarderas dans la méthode createEditPolicies(), la classe que tu cherches (une classe LayoutEditPolicy) est celle dont l'instance est passée en 2ème paramètre dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    installEditPolicy(EditPolicy.LAYOUT_ROLE, new xxxLayoutEditPolicy());
    Dans cette classe la méthode qui t'intéresseras est getCreateCommand(CreateRequest request), la gestion des évènements souris étant déléguée à l'objet CreateRequest.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Par défaut
    merci beaucoup je vais voir ça !
    mais j'étais pas très loin alors ! j'avais pressenti que c'était dans ce coin !
    j'ai l'impression que Eclipse est une véritable usine à gaz !!! c'est relativement complexe je trouve, y a tellement de possibilités que c'est dur de ci retrouver !

    j'ai une autre question puisque tu as l'air de maitriser le sujet !

    je modifie mon diagram, donc le code xmi de mon éditeur à l'aide d'un template et d'un parseur xml, tout marche bien si ce n'est qu'une fenêtre me demandant d'accepter les modifications s'ouvre ! avec comme titre file changed.
    j'ai donc regarder dans resourceEventListener, mais je n'arrive que à voir que effectivement une resource a changé ! alors que je voudrais qu'il n'y ait pas de fenetre de confirmation !!! je pensais faire les modifications puis remettre le booléen qui dit que le fichier est modifié à false !

    encore merci

    ps:même avec une aide en français, chui pas sûr que je m'en sortirai !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Par défaut
    si tu peux m'indiquer à quoi correspond les différents packages qui se trouve dans le projet de l'éditeur de diagramme ! c cool, je vois à peu près mais c pas très clair !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Par défaut
    Désolé de pas pouvoir t'aider sur ce truc j'ai vu que tu implémente GMF, je maîtrise à peu près GEF mais je suis novice en EMF et j'ai pas encore eu à utiliser GMF.

    En tout cas continues de creuser même si c'est pénible , car en ayant cette démarche, ca te permet d'avoir une meilleure vue sur ces frameworks

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Par défaut
    dans ma classe de conteneur supérieur, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void createDefaultEditPolicies() {
    		super.createDefaultEditPolicies();
    		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,
    				new RacineDocumentItemSemanticEditPolicy());
    		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,
    				new RacineDocumentCanonicalEditPolicy());
    	}
    y a pas de layoutEditPolicy alors je suis allé voir dans celle de semantic_role (RacineDocumentItemSemanticEditPolicy())

    et effectivement y a la méthode dont tu me parles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    protected Command getCreateCommand(CreateElementRequest req) {
    		if (DescripteurElementTypes.ComposantRepresentation_1001 == req
    				.getElementType()) {			
     
    			if (req.getContainmentFeature() == null) {
    				req.setContainmentFeature(DescripteurPackage.eINSTANCE
    						.getracineDocument_ContientComposantRepresentation());
    			}
    			return getMSLWrapper(new CreateComposantRepresentation_1001Command(
    					req));
    		}
    mais je ne vois pas ce que peux faire !!!

    par contre, je suis allé jetez un oeil dans la classe du composant que je souhaite intercepté, et la j'ai bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
    et dans createLayoutEditPolicy() y pas de getCreateCommand ! ceci dit je peux implémenter des listeners dans cette classe !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void handleNotificationEvent(Notification arg0) {
    		super.handleNotificationEvent(arg0);
    		System.out.println("événement!!!!");
    	}
    avec ceci j'obtiens une double trace quand je pose mon composant ! mais je n'arrive pas à arrêter le process pour empêcher la création du composant !

    Si je supprime dans la classe conteneur l'appel de la commande, c'est clair que j'empêche la création !!! mais je ne peux mm plus cliquer sur l'éditeur quand je sélectionne mon outil composant ! or je veux récupérer les coordonnées de la souris quand je clique sur l'éditeur avec ce composant !
    je pense qu'il doit falloir travailler sur les deux classes, conteneur et composant pour arriver à ce que je veux !


Discussions similaires

  1. Créer un objet dans le constructeur
    Par momedalhouma dans le forum Général Java
    Réponses: 2
    Dernier message: 31/03/2013, 23h49
  2. Ecrire dans l'observateur d'évènement quand la source n'existe pas
    Par Tristan Zwingelstein dans le forum Framework .NET
    Réponses: 4
    Dernier message: 02/09/2010, 11h27
  3. Créer de nouveaux objets dans une page
    Par Tronche dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/02/2007, 15h00
  4. Créer un objet dans un objet
    Par poussinphp dans le forum C++
    Réponses: 6
    Dernier message: 10/07/2006, 15h18
  5. J'ai pas les infos des objets dans l'éditeur
    Par mister3957 dans le forum MFC
    Réponses: 3
    Dernier message: 20/02/2006, 19h43

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