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]Ajouter des zônes colorées dans un TextEditor


Sujet :

Eclipse Platform

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Points : 37
    Points
    37
    Par défaut [Plugin]Ajouter des zônes colorées dans un TextEditor
    Bonjour à toutes, tous,

    je souhaiterais me faire aider pour la chose suivante, qui me pose problème
    depuis qq temps :

    j'aimerais pouvoir ajouter des zônes colorées avec des ToolTipText
    (l'idéal serait d'ajouter directement des StyleRange) dans
    les éditeurs existants d'Eclipse.

    En gros, je récupère sans problème un EditorPart avec lequel je ne peux
    rien faire directement, j'ai aussi dans ma musette un TextEditor avec une
    super méthode : getSourceViewer() que je ne peux pas utiliser, et enfin j'aurais
    bien aussi un objet TextViewer avec lequel je pourrais faire ce que je veux mais
    impossible de caster quoi que ce soit vers cet objet ...

    Une solution serait bien sûr de créer un nouvel éditeur étendant TextEditor
    et déclarer publique la méthode qui me renverrait le SourceViewer!
    Mais j'aimerais bien garder les éditeurs C, Java et autres tels qu'ils sont
    et surtout, pouvoir faire ce que je veux sans avoir à réinventer la roue


    QQn a-t-il une solution à me proposer?

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    Je mets qq lignes de code pour illustrer mon propos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // ouverture de mon programme avec son éditeur par défaut
    IEditorPart iPart = IDE.openEditor(myWorkbenchPage, myFile, true);
     
    EditorPart part = (EditorPart)iPart;
    TextEditor text = (TextEditor)part;
    //text.getSourceViewer()  -- this method is not visible!
     
    TextViewer viewer = (TextViewer)ipart;            // ClassCastException when running !!!
    StyledText stxt = viewer.getTextWidget();         // dommage :'(

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    J'ai donc finalement réussi à trouver une solution que je pense être convenable!


    Voici le détail pour ceux que cela pourrait intéresser un jour :

    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
    int a; //indice du début de mon texte à surligner
    int l; //longueur de mon texte à surligner
     
    IEditorPart editor = IDE.openEditor(myWorkbenchPage, myFfile, true);
    EditorPart part = (EditorPart)editor;
    Color bColor = new Color(null, 144, 162, 219); //un bleu par exemple
    ISourceViewer source = null;
    StyledText text = null;
     
    if(part instanceof CompilationUnitEditor) { //éditeur JAVA
     
    	CompilationUnitEditor cue = (CompilationUnitEditor)editor;
    	source = cue.getViewer();
    	text = source.getTextWidget();
    }
    else if(part instanceof CEditor) { //editeur C
     
    	CEditor edit = (CEditor)part;
    	source = edit.getCSourceViewer();
    	text = source.getTextWidget();
    }
     
    if(text != null) {
    	//on récupère les StyleRange existants et on change le background.
    	//ne pas créer de nouveau StyleRange permet de ne rien écraser
    	StyleRange[] sr = text.getStyleRanges(a, l);
    	for(int g=0; g<sr.length; g++) {
    		sr[g].background = bColor;
    		text.setStyleRange(sr[g]);
    	}
     
    	//on place le curseur à la fin de ce qu'on vient de colorer...
    	ISelection select = new TextSelection(a+l, 0);
    	editor.getEditorSite().getSelectionProvider().setSelection(select);	
    }

    @++

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    Nouveau problème parce qu'on aime les challenges :


    Je voudrais aussi pouvoir ajouter des ToolTipText par dessus !!!
    Je sais je sais, encore un PB à la c.. venant de qqn qui passe son temps à se
    compliquer la vie mais que voulez vous, on ne se refait pas


    Donc si qqn connaît une astuce pour faire ça, suis preneur

    Merci !

Discussions similaires

  1. Ajouter des sous titres dans une combo box
    Par Djaiffe dans le forum VB.NET
    Réponses: 5
    Dernier message: 24/05/2018, 16h55
  2. Ajouter des nouvelles données dans une table
    Par Lingo dans le forum Access
    Réponses: 7
    Dernier message: 27/10/2006, 13h58
  3. ajouter des dates délémitées dans INSERT INTO ?
    Par samlepiratepaddy dans le forum Access
    Réponses: 8
    Dernier message: 27/09/2005, 08h12
  4. [plugins] Equivalent des Live Templates dans Intellij
    Par rozwel dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/02/2005, 06h37
  5. [MFC] Ajout des fichiers récents dans un menu
    Par Choupinou dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2004, 16h47

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