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 :

Listener sur un éditeur


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
    Octobre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 91
    Par défaut Listener sur un éditeur
    Bonjour,

    je voudrais savoir comment implanter une sorte de listener sur un éditeur d'éclipse.

    J'ai créé un plugin comportant un éditeur XML. Cet éditeur propose une auto complétion utilisant d'autres fichiers. Lorsque l'utilisateur utilise l'auto-complétion pour créer une balise celle ci est créée de cette façon:


    Ainsi si cette balise ne contient qu'une ligne il suffit d'ajouter le texte entre les deux balises. Par contre si la balise doit contenir elle même des balises j'aimerais la mettre sous cette forme :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <balise>
        | (curseur)
    </balise>

    J'aimerais passer de la première forme à la seconde uniquement en appuyant une fois sur la touche entré alors que le curseur est entre les deux balises.

    Pour ce faire je pense qu'il faut que je regarde systématiquement ce que l'utilisateur entre au clavier. Si il appuie sur entré alors je regarde où est le curseur et si je suis dans le bon cas j'ajoute un retour chariot et une tabulation.

    Ceci ressemble donc à un listener sur un texte sauf que je ne pense pas pouvoir utiliser un listener sur l'éditeur. J'aimerais donc savoir comment je dois m'y prendre, je sais que l'opération est possible j'ai déjà vu des choses similaire se faire.

    Merci.

  2. #2
    Membre expérimenté
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Par défaut
    Bonjour,

    je pense que tu peux mettre en place un listener sur le document de ton éditeur XML, comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    IDocument document = xmlEditor.getDocumentProvider().getDocument(xmlEditor.getEditorInput());
    document.addDocumentListener(new IDocumentListener() {
     
         public void documentChanged(DocumentEvent event) {
         //ta gestion paticulière pour ta balise
         }
     
         public void documentAboutToBeChanged(DocumentEvent event) {}
    }
    En espérant répondre à ta question.
    David.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 91
    Par défaut
    Merci pour ta réponse, je n'ai pas le temps d'essayer maintenant mais je te tiendrais au courant =)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 91
    Par défaut
    Je viens enfin d'avoir le temps de tester ce que tu m'a proposé.

    Ca marche mais je ne sais pas vraiment où ajouter ce listener, j'ai essayé dans le constructeur de mon éditeur. Mais ça ne marche pas :/

    Actuellement je le fais dans la méthode computeCompletionProposal de la classe TemplateCompletionProcessor mais ce n'est que provisoire pour test car dans ce cas le listener ne marche qu'après que l'utilisateur ai eu recours à l'auto-complétion.

    Si quelqu'un connaît un bon endroit pour mettre ce listener en place çà serai cool =)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Par défaut
    Ajouter un listener dans le constructeur ? Fais-le dans createPartControl(Composite) à la place et ça devrait pouvoir marcher.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 91
    Par défaut
    Je viens d'essayer en réécrivant la méthode createPartControl(Composite parent)

    J'avais déjà essayé dans le constructeur mais j'avais une erreur, je crois qu'il ne trouvait pas le document.

    Par contre je n'ai pas ce problème dans cette méthode donc tout marche parfaitement merci beaucoup!

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

Discussions similaires

  1. Listener sur JTable
    Par calypso dans le forum Composants
    Réponses: 3
    Dernier message: 05/02/2009, 16h27
  2. Language]Listener sur booléen
    Par harris_macken dans le forum Langage
    Réponses: 9
    Dernier message: 12/06/2005, 00h25
  3. [LISTENER] sur l'insertion de cd
    Par divxdede dans le forum Multimédia
    Réponses: 2
    Dernier message: 03/07/2004, 11h28
  4. [JSlider] listener sur Jslider
    Par Garion dans le forum Composants
    Réponses: 4
    Dernier message: 31/05/2004, 13h33
  5. Listener sur un JPanel
    Par ptitelfe dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 27/03/2004, 13h14

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