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 :

Mettre un Listener sur le Workbench


Sujet :

Eclipse Platform

  1. #1
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut Mettre un Listener sur le Workbench
    Bonjour,

    Je voudrais savoir s'il y a un moyen d'écouter Eclipse et de choper toutes les commandes qu'ils executent ?

    Les commandes style "make all" ...

    D'avance merci, je ne sais vraiment pas dans quel sens chercher !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    la méthode addExecutionListener(IExecutionListener listener) de la classe ICommandService. te permettra de faire ça.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Bonjour,

    suite à ta réponse j'ai ajouté un point d'extension org.eclipse.ui.startup:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    public class ActivateListenerCommands implements IStartup {
     
    	@Override
    	public void earlyStartup() {
    		ICommandService commandService = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
    		commandService.addExecutionListener(new IExecutionListener() {
     
    			@Override
    			public void notHandled(String commandId,
    					NotHandledException exception) {
    				System.out.println("notHandled");
     
    			}
     
    			@Override
    			public void postExecuteFailure(String commandId,
    					ExecutionException exception) {
    				System.out.println("postExecuteFailure");
     
    			}
     
    			@Override
    			public void postExecuteSuccess(String commandId, Object returnValue) {
    				System.out.println("postExecuteSuccess");
     
    			}
     
    			@Override
    			public void preExecute(String commandId, ExecutionEvent event) {
    				System.out.println("preExecute");
     
    			}
     
    		});
    	}
     
    }
    Le listener est bien créé au startup de mon appli.
    Mais je ne passe jamais dans les méthodes du listener... une idée ?

    Merci en tout cas !

  4. #4
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    À tester aussi, tu as la classe ExternalActionManager (si jamais tu as un mélange d'actions et de commandes dans ton application RCP). Elle te permettra d'ajouter un listener sur les changements de propriétés des actions. Du coup, il te faut voir les états qui sont renvoyés par ce listener (pas testé pour l'instant).
    Tu aurais donc un code qui ressemble à ça pour tes actions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ExternalActionManager.getInstance().getCallback().addPropertyChangeListener("my.identifier", new IPropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent event) {
            ...
        }
    });
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  5. #5
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par kkt8 Voir le message
    Mais je ne passe jamais dans les méthodes du listener... une idée ?
    !
    oups non ce n'est pas jamais ... j'y passe sur certaines actions ... comme dis Gueritarish, peut-être que celles que je ne chope pas sont des actions.

    Merci je cherche dans ce sens !

    et merci joel.drigo ça fonctionne quand même un peu certainement sur les commands !

  6. #6
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Gueritarish,

    et si je ne connais pas les actions ?
    Parce que ce qui me pose justement problème ce sont les commandes et actions que je n'ai pas développées et que je souhaite tracer quand même.

    Je surcharge un IDE eclipse, donc toutes les actions CDT par exemple j'en hérite .. (build project, clean project...)

    a+

  7. #7
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Ça va être vachement plus délicat...
    Je ne connais pas de mécanismes pour accéder à l'ensemble des actions (ce qui ne veut absolument pas dire qu'un tel mécanisme n'existe pas...).
    Après, ce que tu peux faire c'est parcourir les extensions pour le point d'extension org.eclipse.ui.actionSets et garder ceux qui concerne CDT, mais ça reste un peu bancal (je pense notamment aux actions qui sont ajouté dans le code)...
    J'ai pas mieux pour l'instant
    Pas de questions technique par MP, les forums sont là pour ça.

  8. #8
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 468
    Points : 2 996
    Points
    2 996
    Par défaut
    Si les actions que tu veux monitorer sont des jobs (généralement le cas pour les builds/refactorings & cie), alors tu peux récupérer le JobManager et y installer un JobChangedListener.
    Fais attention en implémentant ce genre de listener globaux, il vont tourner très très très souvent, donc il faut faire attention à ce qu'ils ne soient pas gourmand en temps, surtout si quand ils sont appelés pour rien.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  9. #9
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Gueritarish Voir le message
    Salut,

    À tester aussi, tu as la classe ExternalActionManager (si jamais tu as un mélange d'actions et de commandes dans ton application RCP). Elle te permettra d'ajouter un listener sur les changements de propriétés des actions. Du coup, il te faut voir les états qui sont renvoyés par ce listener (pas testé pour l'instant).
    Tu aurais donc un code qui ressemble à ça pour tes actions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ExternalActionManager.getInstance().getCallback().addPropertyChangeListener("my.identifier", new IPropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent event) {
            ...
        }
    });
    Voilà, à+
    Gueritarish
    J'ai testé et je ne passe dans le propertyChange que lorsque mon focus change de "view" et non sur la sélection de l'action !
    Bizarre ...

    @Mickael_Istria : je regarde du côté des jobs !

  10. #10
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Citation Envoyé par kkt8 Voir le message
    J'ai testé et je ne passe dans le propertyChange que lorsque mon focus change de "view" et non sur la sélection de l'action !
    Bizarre ...
    J'étais de toute façon pas persuadé que ça soit utile
    J'ai regardé ça depuis la javadoc, je peux pas trop tester là.
    Mais bon, ça valait le coup d'essayer...
    Pas de questions technique par MP, les forums sont là pour ça.

  11. #11
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Gueritarish Voir le message
    J'étais de toute façon pas persuadé que ça soit utile
    J'ai regardé ça depuis la javadoc, je peux pas trop tester là.
    Mais bon, ça valait le coup d'essayer...
    Bien sur que ça valait le coup et c'était prometteur ....
    Merci, ton aide est toujours précieuse !!!

  12. #12
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Mickael_Istria Voir le message
    Si les actions que tu veux monitorer sont des jobs (généralement le cas pour les builds/refactorings & cie), alors tu peux récupérer le JobManager et y installer un JobChangedListener.
    Fais attention en implémentant ce genre de listener globaux, il vont tourner très très très souvent, donc il faut faire attention à ce qu'ils ne soient pas gourmand en temps, surtout si quand ils sont appelés pour rien.
    Je récupère bien les jobs de build, clean.... mais je ne récupère que peu d'information sur ce job : Son nom par ex (Rebuilding selected project...), c'est déjà pas mal mais puis-je m'y fier pour récupérer que ceux que je veux logger ?
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(event.getJob().getName().equalsIgnoreCase("Rebuilding selected project...")){
    	//blabla
    }
    en tout cas je vais creuser par là, Merci

  13. #13
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 468
    Points : 2 996
    Points
    2 996
    Par défaut
    Le nom, je ne pense pas qu'il faut s'y fier, d'autant plus que ca ressemble surtout a un label, qui est internationalisable.
    Peut-etre ces actions ont-elles des types specifiques pour leurs job. Auquel cas tu pourrais essayer de regarder le type et de les caster.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  14. #14
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Hello !

    alors oui les jobs ont des types spécifiques, par exemple : AutoBuildJob MAIS ce sont des types non visibles "The type AutoBuildJob is not visible"

    Voilà qui clos le débat je crois !
    Tant pis ! merci pour votre aide quand même

    Chris

  15. #15
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    et en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    org.eclipse.core.resources.ResourcesPlugin.getWorkspace().addResourceChangeListener(new IResourceChangeListener() {
     
    public void resourceChanged(IResourceChangeEvent event) {
         System.out.println(event.getType()); // pour les types d'évenement voir les constantes dans IResourceChangeVent
    }
     
    };
    est-ce que tu ne pourrais pas faire ce que tu cherches à faire ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #16
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Hello Joel !

    Avec ton code, je ne différencie pas le "build" du "rebuild", à la rigueur passe..
    Mais je ne vois pas passer le "clean" par exemple, ni le "build all configurations" par exemple.

    Mais merci

  17. #17
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Avec IResourceChangeEvent.getBuildKind(), tu peux connaitre le type de build (AUTO, FULL, INCREMENTAL, ou suite à un CLEAN) : je ne vois pas trop ce que tu appelles rebuid par contre.

    Je suppose qu'un type PRE_BUILD avec un buildKind CLEAN_BUILD devrait signifier "après clean" : à vérifier...

    le "Build all configurations" doit pouvoir se traiter en trouvant comment récupérer ce qui est buildé (par getResource() je pense) et en le comparant à une liste de projets : à mon avis, tu n'auras pas un type particulier...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  18. #18
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    getBuildKind()
    "Returns the kind of build that caused this event, or 0 if not applicable to this type of event."

    J'ai toujours 0 ...

  19. #19
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par kkt8 Voir le message
    getBuildKind()
    "Returns the kind of build that caused this event, or 0 if not applicable to this type of event."

    J'ai toujours 0 ...
    Mmm... c'est censé vouloir dire qu'il n'y a pas de buildKind ?! Du coups je ne sais pas trop ce que ça signifie.

    En debug, tu pourrais mettre un break point et regarder d'ou vient l'appel (la stacktrace), c'est peut être normal dans ton cas... et tu pourras l'interpréter du coup.

    Si je regardes le code, je vois bien le passage du buildKind adéquate, par exemple pour la build auto.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  20. #20
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Si je regardes le code, je vois bien le passage du buildKind adéquate, par exemple pour la build auto.
    Attention que kkt8 est sur CDT et non JDT...
    J'ai pas encore regardé les jobs de build, mais il est possible qu'ils ne soient pas instanciés "comme il faut".
    Pas de questions technique par MP, les forums sont là pour ça.

Discussions similaires

  1. Mettre un Listener sur bouton Home
    Par jojo_ol76 dans le forum Composants graphiques
    Réponses: 8
    Dernier message: 14/03/2013, 15h29
  2. Réponses: 10
    Dernier message: 28/03/2006, 16h10
  3. [VB6] mettre une image sur un boutton
    Par dim dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/02/2004, 02h28
  4. Réponses: 2
    Dernier message: 19/08/2003, 16h45
  5. Ne jamais mettre le focus sur un tbutton, possible
    Par portu dans le forum Composants VCL
    Réponses: 4
    Dernier message: 03/07/2003, 16h06

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