2009-08-11 9 views
2

s'il vous plaît pouvez-vous me aider à attraper le texte présent en mémoire tampon dans l'éditeur, j'ai ce code.Eclipse Editor Plugin: s'il vous plaît comment obtenir le texte brut appelant somthing comme .getActiveEditor() getEditorInput()

System.out.println(Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getTitle()); 
System.out.println(Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getEditorInput()); 

Je ne peux pas suivre le chemin indiqué par la première ligne et relire le fichier de manière pragmatique car j'ai besoin du tampon de texte.

Dans la deuxième ligne à la place que je reçois toujours un chemin de la classe org.eclipse.ui.examples.rcp.texteditor.editors.PathEditorInput casted (que je ne veux pas @runtime inclure dans mon application)

S'il vous plaît aidez-moi, TNX

Répondre

5

IEditorPart.getEditorInput() retourne un IEditorInput représentant l'entrée de l'éditeur. Si l'éditeur actif utilise PathEditorInput comme entrée, vous devrez soit l'assembler, soit le refactoriser pour ne pas utiliser l'exemple d'entrée de l'éditeur rcp - le PathEditorInput mentionné est un exemple rcp.

Par exemple, vous pouvez utiliser l'un des éditeurs standard comme org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor ou org.eclipse.ui.editors.text.TextEditor et un org.eclipse.ui.part. FileEditorInput. Avez-vous créé votre projet avec un exemple d'assistant? Si c'est le cas, cela expliquerait d'où vient l'exemple d'utilisation.

En ce qui concerne l'obtention du texte, l'extrait suivant obtiendra l'éditeur s'il s'agit d'une instance de AbstractTextEditor, puis extraira le contenu du document. Remarquez qu'il y a quelques accès découragés dans cet appel, si vous vous enregistrez en tant qu'auditeur sur le SelectionService, vous pouvez garder une trace de la sélection active et éviter d'avoir à interroger le workbench pour l'éditeur actif.

AbstractTextEditor part = (AbstractTextEditor) Workbench.getInstance() 
     .getActiveWorkbenchWindow().getActivePage().getActiveEditor() 
     .getAdapter(AbstractTextEditor.class); 

if (part != null) { 

    IDocument document = part.getDocumentProvider().getDocument(
      part.getEditorInput()); 

    String content = document.get(); 

    //do something with the text 
}