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 :

[PDE] Récupérer texte mis en surbrillance dans un éditeur


Sujet :

Eclipse Platform

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut [PDE] Récupérer texte mis en surbrillance dans un éditeur
    Bonjour à tous,

    Je voudrais savoir comment récupérer un texte mis en surbrillance dans un éditeur de texte de org.eclipse.ui.editors.
    Ya-t-il une méthode qui le fait ?

    Merci pour votre aide

  2. #2
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    Sur un objet Editeur, tu dois pouvoir faire quelquechose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getSourceViewer().getTextWidget().getSelectionText()
    Sinon, pour d'autres questions dans le même genre, tu peux aller jeter un coup d'oeil du côté de la doc en ligne d'Eclipse :

    http://www.eclipse.org/documentation/html/plugins/org.eclipse.platform.doc.isv/doc/reference/api/

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    J´ai un petit problème pour appliquer cette méthode.
    Voici mon code de la classe de mon éditeur :

    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 class LocalizationEditor extends TextEditor {
     
    	private ColorManager colorManager;
     
    	public LocalizationEditor() {
    		super();
    		colorManager = new ColorManager();
    		setSourceViewerConfiguration(new XMLConfiguration(colorManager));
    		setDocumentProvider(new XMLDocumentProvider());
    	}
    	public void dispose() {
    		colorManager.dispose();
    		super.dispose();
    	}
     
    }
    Quand je fais LocalizationEditor.getSourceViewer() dans une autre classe, il me dit que cette méthode n´est pas visible.
    Sauriez-vous comment remédier à ce problème ?

    Merci

  4. #4
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    Si c'est juste un problème de visibilité, tu peux contourner le problème rapidement : tu crées une méthode publique dans ta classe LocalizationEditor qui te renvoie ton SourceViewer en appelant la méthode protected de TextEditor :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public ISourceViewer getSourceViewer2() {
        return this.getSourceViewer();
    }
    Voilà, j'espère que ca pourra t'aider ...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Oué j´ai tenté ca mais il me mets ce message :

    ISourceViewer cannot be resolved (or is not a valid return type) for the method getSourceViewer2

    Why ???

  6. #6
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    Regarde peut être du côté de tes imports si tout est OK ...

    ISourceViewer cannot be resolved (or is not a valid return type) for the method getSourceViewer2
    Eclipse te proposes quoi comme solution pour résoudre cette erreur ?

    Peux tu envoyer un peu plus de détails de ton code STP ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Alors voilà la déclaration de méthode qui marche bien après bons imports

    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
    package LocalizationPlugin.editors;
     
    import org.eclipse.ui.editors.text.TextEditor;
    import org.eclipse.jface.text.source.ISourceViewer;
     
     
     
    public class LocalizationEditor extends TextEditor {
     
    	private ColorManager colorManager;
     
    	public LocalizationEditor() {
    		super();
    		colorManager = new ColorManager();
    		setSourceViewerConfiguration(new XMLConfiguration(colorManager));
    		setDocumentProvider(new XMLDocumentProvider());
    	}
     
    	public ISourceViewer getSourceViewer2(){
    		return getSourceViewer();
    	}
     
    	public void dispose() {
    		colorManager.dispose();
    		super.dispose();
    	}
     
    }
    Par contre à l´appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private TextField getMarkierteTextField() {
    		if (addMarkierteTextField == null) {
    			addMarkierteTextField = new TextField();
    			addMarkierteTextField.setBounds(184, 43, 272, 23);
    			addMarkierteTextField.setEditable(false);
    			[u]LocalizationEditor.getSourceViewer2();[/u]
    		}
    		return addMarkierteTextField;
    	}
    Il me met cette erreur : The method getSourceViewer2() from the type LocalizationEditor is not static en soulignant en rouge ce que j´ai souligné dans le code. Il m´est impossible de rendre cette méthode static car le getSourceViewer de ma méthode getSourceViewer2 n´est pas static, c´est une méthode final dans le package org.eclipse.ui.texteditor.AbstractTextEditor.

    Voilà où j´en suis
    Merci pour ton aide

  8. #8
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LocalizationEditor.getSourceViewer2();
    Il faut que tu appelles cette méthode sur un Objet de type LocalizationEditor et non pas sur la Classe LocalizationEditor !!!

    Il faut donc que dans ta fonction getMarkierteTextField() tu récupère l'instance de ton éditeur et que tu appelles alors la méthode getSourceViewer2() dessus. Cela devrait marcher ...

    Sinon, elle se trouve où ta méthode getMarkierteTextField() ? (Dans quelle classe).

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Dans une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public class AddTextelementWindow {
    }
    qui contient mes méthodes d´interfaces utilisateur.

    Désolé encore mais comment je récupère l´instance de l´éditeur sur lequel je suis en train de travailler ?

  10. #10
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    C'est vrai qu'au premier abord, l'accès à l'Editeur courant n'est pas évident ! Moi même j'ai mis un peu de temps avant de retrouver comment faire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor()
    Sinon, pour accéder à l'ensemble des Pages de ton Workbench, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbench.getInstance().getActiveWorkbenchWindow().getPages();
    Après tu parcours le résultat et tu peux récupérer la bonne Page !

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup à toi pour ce temps que tu m´as consacré.
    Tu m´as bien aidé.
    J´essaie tout ca et je mets résolu après.

    Merci

  12. #12
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Erf encore une chose pour faire appel à Workbench faut inclure quel package ?

  13. #13
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    import org.eclipse.ui.internal.Workbench;


  14. #14
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Décidémment quand ca veut pas ca veut pas...

    Je peux pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getSourceViewer();
    Y dit : The method getSourceViewer() is undefined for the type IEditorPart

  15. #15
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    C'est normal, il faut que tu castes le résultat de l'appel Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor() dans le type de ton éditeur, c'est à dire LocalizationEditor.

    Ca doit donner un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    LocalizationEditor myEditor = (LocalizationEditor)(Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor());
    ISourceViewer sv = myEditor.getSourceViewer2();
    Attention quand même aux erreurs possibles du genre ClassCastException !
    Tu peux donc faire plutôt un truc dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    IEditorPart activeEditorPart = Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
    if (activeEditorPart instanceof LocalizationEditor){
    LocalizationEditor myEditor = (LocalizationEditor)activeEditorPart;
    ISourceViewer sv = myEditor.getSourceViewer2();
    }
    ...
    Voili voilou !

  16. #16
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Excellent ca fonctionne.
    Un grand merci à toi nin2.


  17. #17
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    Il n'y a pas de quoi !

    Bonne continuation à toi.

    Nin2

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    Salut

    Je viens de tomber sur cette discution alors que je tente également d'accéder à l'éditeur d'Eclipse pour le développement d'un plugin.

    Le problème, c'est que lorsque je réalise l'import suivant :
    import org.eclipse.ui.internal.Workbench;

    Eclipse me met :
    "Discouraged access: The type Workbench in not accessible due to restriction on required library C:\Program Files\Eclipse\plugins\org.eclipse.ui.workbench_3.2.1.M20060906-0800.jar"

    Pouvez-vous m'indiquer comment y remédier ?

    Merci d'avance

  19. #19
    Membre averti Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Points : 340
    Points
    340
    Par défaut
    Juste comme ça, pour récupérer le texte surligné (la sélection courante) d'un éditeur j'aurais utilisé le mécanisme de selectionListener de l'API d'Eclipse. Le provider étant l'éditeur de texte, bien sûr.
    RCP rulez!

  20. #20
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par flexx
    Eclipse me met :
    "Discouraged access: The type Workbench in not accessible due to restriction on required library C:\Program Files\Eclipse\plugins\org.eclipse.ui.workbench_3.2.1.M20060906-0800.jar"

    Pouvez-vous m'indiquer comment y remédier ?
    Bonjour, j'ai le même problème, la réponse est explicitée là : http://dev.eclipse.org/newslists/new.../msg06223.html

    En gros ce que j'en ai compris, c'est qu'on veut faire appel à un package interne et dont il ne garantisse pas la pérénité ou du moins la maintenance et compataibilité entre version.

    La solution : faire autrement (sans ce package) ou passe outre le warning avec les risques d'instabilité si on change de version

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Récupérer texte surligné à la souris dans le clipboard
    Par ovni007 dans le forum C#
    Réponses: 4
    Dernier message: 01/06/2014, 23h35
  2. texte mis en page dans vba (environnement excel)
    Par MDM1986 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/01/2009, 10h13
  3. Enregistrement texte mis en forme dans Blob
    Par cjo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/02/2007, 16h58
  4. [PDE] Problème pour sauvegarder une modif dans un éditeur
    Par simsky dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 11/08/2005, 16h05
  5. Stocker du texte mis en forme dans un document XML
    Par ovh dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 13/02/2003, 11h23

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