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
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
Sur un objet Editeur, tu dois pouvoir faire quelquechose comme ca :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part getSourceViewer().getTextWidget().getSelectionText()
http://www.eclipse.org/documentation/html/plugins/org.eclipse.platform.doc.isv/doc/reference/api/
J´ai un petit problème pour appliquer cette méthode.
Voici mon code de la classe de mon éditeur :
Quand je fais LocalizationEditor.getSourceViewer() dans une autre classe, il me dit que cette méthode n´est pas visible.
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(); } }
Sauriez-vous comment remédier à ce problème ?
Merci
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 :
Voilà, j'espère que ca pourra t'aider ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public ISourceViewer getSourceViewer2() { return this.getSourceViewer(); }
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 ???
Regarde peut être du côté de tes imports si tout est OK ...
Eclipse te proposes quoi comme solution pour résoudre cette erreur ?ISourceViewer cannot be resolved (or is not a valid return type) for the method getSourceViewer2
Peux tu envoyer un peu plus de détails de ton code STP ?
Alors voilà la déclaration de méthode qui marche bien après bons imports
Par contre à l´appel :
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(); } }
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.
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; }
Voilà où j´en suis
Merci pour ton aide
Il faut que tu appelles cette méthode sur un Objet de type LocalizationEditor et non pas sur la Classe LocalizationEditor !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part LocalizationEditor.getSourceViewer2();
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).
Dans une classe :
qui contient mes méthodes d´interfaces utilisateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public class AddTextelementWindow { }
Désolé encore mais comment je récupère l´instance de l´éditeur sur lequel je suis en train de travailler ?
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 ...
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().getActivePage().getActiveEditor()
Après tu parcours le résultat et tu peux récupérer la bonne Page !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Workbench.getInstance().getActiveWorkbenchWindow().getPages();
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
Erf encore une chose pour faire appel à Workbench faut inclure quel package ?
import org.eclipse.ui.internal.Workbench;
Décidémment quand ca veut pas ca veut pas...
Je peux pas faire :
Y dit : The method getSourceViewer() is undefined for the type IEditorPart
Code : Sélectionner tout - Visualiser dans une fenêtre à part Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getSourceViewer();
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 :
Attention quand même aux erreurs possibles du genre ClassCastException !
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();
Tu peux donc faire plutôt un truc dans ce genre :
Voili voilou !
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(); } ...
Excellent ca fonctionne.
Un grand merci à toi nin2.
Il n'y a pas de quoi !
Bonne continuation à toi.
Nin2
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
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!
Bonjour, j'ai le même problème, la réponse est explicitée là : http://dev.eclipse.org/newslists/new.../msg06223.htmlEnvoyé par flexx
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager