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 :

Le focus ne se remet pas dans le Project Explorer


Sujet :

Eclipse Platform

  1. #1
    Membre habitué
    Le focus ne se remet pas dans le Project Explorer
    Bonjour,

    J'ai créé une vue qui charge des informations à partir d'un binaire séléctionné dans la Project Explorer view.
    Click droit sur le fichier dans la Project Explorer view, menu contextuel qui ouvre ma vue.
    Je voudrais qu'au changement de sélection, si c'est un nouveau fichier binaire que la vue soit raffraichie avec les nouvelles info.

    Ma vue étend viewPart et implémente ISelectionListener
    Dans le createPartControl j'ajoute le listener:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    getSite().getPage().addSelectionListener("org.eclipse.ui.navigator.ProjectExplorer", this);

    et une fonction selectionChanged qui fait le traitement

    Ma vue s'ouvre, je change de sélection dans la Project Explorer view et rien de se passe, je ne passe pas dans ma méthode selectionChanged.
    En fait que je me suis aperçue que dans la Project Explorer view ne récupérait pas le focus lorsque l'on recliquait dessus et qu'il restait sur la vue.
    Si je clique ailleurs, n'importe où et que je reviens sur la Project Explorer view, c'est bon le selectionChanged est détecté et le focus se met effectivement sur la Project Explorer view !!!

    Une idée du pourquoi ???
    Merci d'avance
    Chris

  2. #2
    Modérateur

    Salut,

    D'après la documentation, la vue source de l'événement n'a pas besoin d'être active pour recevoir l'événement. Serait-ce un bug ? As-tu essayé d'enregistrer l'écouteur sans préciser l'identifiant (la méthode à un paramètre), en testant éventuellment l'id du IWorkbenchPart, pour voir si tu recevais les évenements ?
    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é
    alors j'ai testé plusieurs choses dans ce sens là, et là seule qui marche c'est de mettre un secondaryId (alors que ma vue n'est pas multiple) :
    memoryView = (MemorySizeView) page.showView(viewId, "1", org.eclipse.ui.IWorkbenchPage.VIEW_VISIBLE);

    et ça marche !

    Mais vraiment je ne comprends pas pourquoi ...

  4. #4
    Modérateur

    J'avoue ne pas trop comprendre non plus. Et, surtout, je n'ai jamais eu ce problème. J'ai eu des problèmes qui pouvaient y ressembler toutefois avec des éditeurs en MRU, ou avec certaines vues stackées mais non visible (donc non passée active, donc non encore construite, donc forcément, l'écouteur ne pouvait pas être enregistré).
    Est-ce que tu retires bien le listener au dispose de la vue (je sais pas, je dis ça comme ça des fois que ça pourrait être lié) ?
    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.

  5. #5
    Membre habitué
    alors oui oui, j'ai fait tout dans les règles de l'art
    bah c'est comme ça ...
    Je me contente de ma "correction" et le mystère restera entier !

    bon we et merci à toi !