package com.anjlab.eclipse.tapestry5; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IRegion; import org.eclipse.ui.texteditor.ITextEditor; public class SetEditorCaretPositionLineColumn extends TextEditorCallback { private final int line; private final int column; /** * * @param line 0-based line number * @param column 0-based column number */ public SetEditorCaretPositionLineColumn(int line, int column) { this.line = line; this.column = column; } @Override public void editorOpened(ITextEditor textEditor) { if (line < 0) { return; } IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput()); int offset = 0; if (document != null) { try { IRegion lineInfo = document.getLineInformation(line - 1); if (lineInfo != null) { offset = lineInfo.getOffset(); // Check to stay on the same line if (column <= lineInfo.getLength()) { offset += column; } } } catch (BadLocationException e) { // Line not found, open in 0 offset } } textEditor.selectAndReveal(offset, 0); } }