2010-03-07 3 views
6

Ich entwickle ein Eclipse-Plug-in, wo das Plug-in auf Knopfdruck den ausgewählten Text im Java-Editor übernimmt und in ein Textfeld einfügt.Greifen Sie ausgewählten Text aus Eclipse Java-Editor

Mein Code sieht wie folgt aus: Ich habe es von hier: http://dev.eclipse.org/newslists/news.eclipse.newcomer/msg02200.html

private ITextSelection getSelection(ITextEditor editor) { 
    ISelection selection = editor.getSelectionProvider() 
      .getSelection(); 
    return (ITextSelection) selection; 
} 

private String getSelectedText(ITextEditor editor) { 
    return getSelection(editor).getText(); 
} 

Das Problem ist, wie kann ich die ITextEditor des Java-Editor erhalten angezeigt. Zufälligerweise ist es die nächste Frage im Thread in dem Link, den ich gepostet, aber es ist offen :(

+0

Wenn Sie sagen, „Text ausgewählt,“ Meinen Sie wirklich hervorgehoben, oder nur das aktuelle Schlüsselwort, das der Cursor auf ist? – StockB

Antwort

7

Sie für die ActiveEditor fragen konnte, wie in this thread:

IEditorPart part; 

part = 
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().get 
ActiveEditor(); 

if(part instanceof ITextEditor){ 
    ITextEditor editor = (ITextEditor)part; 
    IDocumentProvider provider = editor.getDocumentProvider(); 
    IDocument document = provider.getDocument(editor.getEditorInput()); 

Das OP Krt_Malta dieses blog entry "Programmatically query current text selection" erwähnt, das ist ähnlich zu diesem anderen SO Antwort (geschrieben vor der Blog-Eintrag)

+0

Siehe auch SO Frage http://Stackoverflow.com/questions/1694748/Adding-item-to-eclipse-text-viewer-context-menu mit einem ähnlichen Problem – VonC

+0

Danke :) Kurz nachdem ich die Frage eingereicht habe, entschied ich zu geben Die Methoden, die ich früher gepostet habe, suchen bei Google, nur um zu sehen, ob irgendwelche Übereinstimmungen auftauchen. Einer der Treffer war http://usayadis.wordpress.com/2009/10/20/programmatisch-query-current-text-selection/ was genau das tat, wonach ich suchte. Dank und Grüße, Krt_Malta –

1

Ich möchte hinzufügen, o ne Sache an VonCs antwort. Die Technik, die er beschreibt, um die Auswahl zu treffen, ist für alle Arten von Text-Editoren nützlich, nicht nur für Java-Editoren, wie es diese Fragen sind. Aber seine Lösung funktioniert nicht in dem Fall, dass der Arbeitsbereichsteil ein MultiPageEditorPart ist, da das kein ITextEditor ist.

Aber in vielen Fällen (zum Beispiel mit dem Standard-XML-Editor) hat eine MultiPageEditorPart Seiten, die ITextEditor s sind. In diesen Fällen können Sie die aktive Seite von einer MultiPageEditorPart abrufen und die Auswahl daraus erhalten.

Dies kann mit dem folgenden Code erfolgen:

ITextEditor editor = null; 

if (part instanceof ITextEditor) { 
    editor = (ITextEditor) part; 
} else if (part instanceof MultiPageEditorPart) { 
    Object page = ((MultiPageEditorPart) part).getSelectedPage(); 
    if (page instanceof ITextEditor) editor = (ITextEditor) page; 
} 

if (editor != null) { 
    IDocumentProvider provider = editor.getDocumentProvider(); 
    IDocument document = provider.getDocument(editor.getEditorInput()); 
} 
+0

Guter Punkt, zusätzlich zu meiner (alten) Antwort. +1 – VonC

Verwandte Themen