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 :

[Plugin] Récupérer la position du curseur


Sujet :

Eclipse Platform

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 84
    Points : 80
    Points
    80
    Par défaut [Plugin] Récupérer la position du curseur
    Bonjour à tous,
    Je développe un plugin XHTML pour Eclipse dans le cadre de mes études.
    J'aimerai récupérer la position du curseur dans mon fichier d'édition. J'ai cherché un moment mais n'ai toujours pas trouvé.

    Le but, à terme :
    - mettre le curseur à un endroit quelconque, "Insertion > Balise form", et çà insère "<form>
    - c'est de sélectionner du texte, faire "Insertion > gras", et que çà ajoute deux balises "<b>" autour du texte sélectionné.

    J'ai trouvé comment modifier le document, ajouter du texte à partir de tel ou tel offset sur telle ou telle longueur, mais je ne sais pas récupérer la position de ce cher curseur. Donc voilà, c'est çà qu'il me faudrait.

    Merci d'avance beaucoup, beaucoup. ++

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    j'ai galeré pour trouver car en fait il ne faut pas utiliser la notion de caret mais celle de highleted Text. le caret etant en fait un cas limite de highlighted text vide. (il y a meme un mec qui explique que le caret ne sert a rien dans les editeur , du point de vue programmatique)

    voici mon code :

    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
    public void insertCodeInActiveWindow(String _codeToBeAdded) throws BadLocationException {
    	IWorkbenchPage activePage=this.getWorkbench().getActiveWorkbenchWindow().getActivePage();
    	IEditorPart activeEditor = activePage.getActiveEditor();
    	if (!(activeEditor instanceof AbstractTextEditor)) {
    		return;
    	}
    	ITextEditor editor = (ITextEditor)activeEditor;
    	IDocumentProvider documentProvider= editor.getDocumentProvider();
    	IEditorInput editorInput = editor.getEditorInput();
    	IDocument document = documentProvider.getDocument(editorInput);
     
    	IRegion highlithRange = editor.getHighlightRange();
    	int caret = highlithRange.getOffset();
     
    	document.replace(caret, 0, _codeToBeAdded);
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Je suis désolé de déterrer ce sujet.

    Je cherche moi aussi à obtenir la position de mon curseur dans mon éditeur. Je fais un plugins éclipse pour faire, en autres, un éditeurs d'un langage basé sur XML, et je souhaite pouvoir insérer des portions de XML.

    J'ai essayé avec le code proposé par matjap juste au dessus, mais j'ai un soucis, la méthode getHighlightRange() de mon éditeur me renvoie null.

    Quelqu'un a t'il déja eu ce problème, quelqu'un connait il une solution.

    Je n'ai trouvé aucune autre méthode pour obtenir la position du curseur.

    D'avance merci,

    Guillaume

  4. #4
    Membre éclairé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 471
    Points : 831
    Points
    831
    Par défaut
    Bonjour à tous

    peut être une piste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    selection = (ITextSelection) editor.getSite().getSelectionProvider().getSelection();
    int selectOffset = selection.getOffset();
    Page sur Developpez : http://pbriand.developpez.com

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    ok ça marche.
    J'avais explorer la piste du selectionProvider mais je n'avais pas casté en ITextSelection, et donc je n'avais pas accès aux méthodes getOffset et getLength, mais seulement à isEmpty. Je te remercie.

    Je met le code de mon action (inspirée du tuto sur l'éditeur xHTML) au cas où quelqu'un chercherait à faire quelque chose de similaire

    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
     
    public void run(IAction action) {
    //		on descend dans la hiérarchie des conteneurs
    //		à partir de la racine.
    		IWorkbench monWB = PlatformUI.getWorkbench();
    		IWorkbenchWindow monWBwindow = monWB.getActiveWorkbenchWindow();
    		IWorkbenchPage page = monWBwindow.getActivePage();
    		IEditorPart monEditeur = page.getActiveEditor();
    //		on sait que notre éditeur est une éditeur de texte,
    //		on transtype.
    		ITextEditor monTXTEditeur = (ITextEditor) monEditeur;
    //		ce qui nous permet de récupérer le fournisseur de document
    //		associé à cet éditeur.
    		IDocumentProvider monDocumentProvider = monTXTEditeur.getDocumentProvider();
    //		puis de créer un document qui y est associé.
    		IDocument monDocument = monDocumentProvider.getDocument(monTXTEditeur.getEditorInput());
     
    		//on souhaite obtenir les positions de selection
     
    		ITextSelection selection = (ITextSelection) monEditeur.getSite().getSelectionProvider().getSelection();
     
    		try {
    			monDocument.replace(selection.getOffset(), selection.getLength(), "texte à inserer");
    		} catch (BadLocationException e) {
    			e.printStackTrace();
    		}
     
    	}

Discussions similaires

  1. Récupérer la position du curseur
    Par Luke spywoker dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/11/2011, 14h40
  2. récupérer la position du curseur
    Par yababas dans le forum Débuter
    Réponses: 2
    Dernier message: 16/06/2008, 10h33
  3. [PDE] Récupérer position du curseur dans un éditeur
    Par simsky dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 05/07/2005, 15h50

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