2010-05-20 21 views
6

Un qustion de développement Eclipse PDE: J'écrire un petit plugin pour Eclipse et ont la suivante * un org.eclipse.ui.texteditor.ITextEditor * un numéro de ligneEclipe PDE: saut à la ligne X et surligner

Comment puis-je sauter automatiquement cette ligne et le marquer? Il est dommage que l'API semble uniquement prendre en charge les décalages (voir: ITextEditor.selectAndReveal()) dans le document mais pas de numéros de ligne.

Le mieux serait - bien que cela ne fonctionne pas:

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

Il ce possible d'une certaine façon? Je n'ai pas trouvé de solution

Répondre

5

sur la classe DetailsView je trouve la méthode suivante.

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

Même si org.eclipse.ui.texteditor.ITextEditor traite avec décalage, il devrait être en mesure de prendre votre numéro de ligne avec la méthode selectAndReveal().

Voir this thread et this thread.

Essayez quelque chose le long de la ligne de:

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