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 :

Fermer la parenthèse automatiquement ?


Sujet :

Eclipse Platform

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    Par défaut Fermer la parenthèse automatiquement ?
    Bonjour,

    J'ai fait un editor pour un type de fichier particulier, avec coloration syntaxique et complétion automatique.
    Je voudrais ajouter la fermeture des parenthèses et crochés après qu'une parenthèse ouvrante ou un croché ouvrant ait été tapé.

    Je n'ai aucune idée dans quel sens chercher ?
    Je pensais que c'était du même ordre que l'autocomplétion mais je trouve pas

    une piste ?

    Merci

  2. #2
    Membre éclairé 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
    Par défaut suite: bouger le cursor ?
    Pour ça, j'ai implémenter une classe IAutoEditStrategy inspirée de org.eclipse.jface.text.IAutoEditStrategy :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    public class ACFDefaultIndentLineAutoEditStrategy implements IAutoEditStrategy {
     
        /**
         * Creates a new indent line auto edit strategy which can be installed on
         * text viewers.
         */
        public ACFDefaultIndentLineAutoEditStrategy() {
        }
     
        private void closeBracket(IDocument d, DocumentCommand c) {
            if (c.offset == -1 || d.getLength() == 0)
                return;
     
            try {
                // find start of line
                int p= (c.offset == d.getLength() ? c.offset  - 1 : c.offset);
                IRegion info= d.getLineInformationOfOffset(p);
                int start= info.getOffset();
     
                // find white spaces
                int end= findEndOfWhiteSpace(d, start, c.offset);
     
                StringBuffer buf= new StringBuffer(c.text);
     
                if (end >= start) {
                    buf.append('}');
                }
     
                c.text= buf.toString();
     
            } catch (BadLocationException excp) {
                // stop work
            }
        }
     
        /*
         * @see org.eclipse.jface.text.IAutoEditStrategy#customizeDocumentCommand(org.eclipse.jface.text.IDocument, org.eclipse.jface.text.DocumentCommand)
         */
        public void customizeDocumentCommand(IDocument d, DocumentCommand c) {
            if (c.length == 0){
                if(c.text.equalsIgnoreCase("{"))
                    closeBracket(d, c);
     
            }
        }
    }
    Par contre, si vous savez comment repositionner mon curseur au milieu des {} ?
    Là il se place d'office à la fin.

    Merci d'avance.

  3. #3
    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 : 41
    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
    Par défaut
    Salut,

    Je ne sais pas si ton problème est toujours d'actualité, mais pour ceux qui passerait ici à l'avenir, la solution pourrait les intéresser...
    Donc, dans l'objet DocumentCommand tu as le champ shiftsCaret qui pourrait t'intéresser. Ce champ public indique à la commande si le curseur doit être déplacé par la commande. Sinon, voir du côté du champ caretOffset qui indique la position du curseur.

    Voilà, à+
    Gueritarish

  4. #4
    Membre éclairé 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
    Par défaut
    Salut Gueritarish !
    oui le problème est toujours d'actualité, je vais regarder du coté du shiftsCaret ou du caretOffset, je te tiens au courant dès que c'est testé (je ne le ferais pas tout de suite).
    Merci

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Par défaut
    J'ai eu le même problème résolue par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c.shiftsCaret=false;
    c.caretOffset=c.offset+1;
    Merci pour l'aide!

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

Discussions similaires

  1. Fermer un formulaire automatiquement
    Par Sniper Fou dans le forum IHM
    Réponses: 4
    Dernier message: 29/06/2007, 11h37
  2. Comment fermer les accolades automatiquement
    Par _LVEB_ dans le forum Visual C++
    Réponses: 3
    Dernier message: 18/02/2007, 22h47
  3. Réponses: 2
    Dernier message: 08/09/2006, 13h18
  4. Fermer une forme automatiquement
    Par MiJack dans le forum Delphi
    Réponses: 4
    Dernier message: 02/08/2006, 09h19
  5. peut on fermer une JFrame automatiquement?
    Par zorm dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 22/11/2005, 16h12

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