2010-05-20 4 views
6

A qustion über Eclipse-PDE Entwicklung: Ich habe ein kleines Plugin für Eclipse schreiben und haben folgende * ein org.eclipse.ui.texteditor.ITextEditor * eine ZeilennummerEclipe PDE: Gehe zu Zeile X und markieren Sie es

Wie kann ich automatisch springen diese Linie und markieren Sie es? Es ist schade, dass die API scheinbar nur Offsets (siehe: ITextEditor.selectAndReveal()) innerhalb des Dokuments, aber keine Zeilennummern unterstützt.

Am besten wäre es - auch wenn dies nicht funktioniert:

ITextEditor editor = (ITextEditor)IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), file, true); 
editor.goto(line); 
editor.markLine(line); 

Es dies möglich in irgendeiner Weise? Ich habe keine Lösung gefunden

Antwort

5

auf der Klasse DetailsView fand ich die folgende Methode.

private static void goToLine(IEditorPart editorPart, int lineNumber) { 
    if (!(editorPart instanceof ITextEditor) || lineNumber <= 0) { 
    return; 
    } 
    ITextEditor editor = (ITextEditor) editorPart; 
    IDocument document = editor.getDocumentProvider().getDocument(
    editor.getEditorInput()); 
    if (document != null) { 
    IRegion lineInfo = null; 
    try { 
     // line count internaly starts with 0, and not with 1 like in 
     // GUI 
     lineInfo = document.getLineInformation(lineNumber - 1); 
    } catch (BadLocationException e) { 
     // ignored because line number may not really exist in document, 
     // we guess this... 
    } 
    if (lineInfo != null) { 
     editor.selectAndReveal(lineInfo.getOffset(), lineInfo.getLength()); 
    } 
    } 
} 
1

Auch wenn org.eclipse.ui.texteditor.ITextEditor mit Offset behandelt, sollte es in der Lage sein, Ihre Zeilennummer mit der selectAndReveal() Methode zu nehmen.

Siehe this thread und this thread.

versuchen, etwas auf der Linie:

((ITextEditor)org.eclipse.jdt.ui.JavaUI.openInEditor(compilationUnit)).selectAndReveal(int, int); 
Verwandte Themen