Search in sources :

Example 1 with EditPosition

use of org.eclipse.ui.internal.texteditor.EditPosition in project eclipse.platform.text by eclipse.

the class GotoLastEditPositionAction method run.

@Override
public void run() {
    EditPosition editPosition = TextEditorPlugin.getDefault().getLastEditPosition();
    if (editPosition == null)
        return;
    final Position pos = editPosition.getPosition();
    if (pos == null || pos.isDeleted)
        return;
    IWorkbenchWindow window = getWindow();
    if (window == null)
        return;
    IWorkbenchPage page = window.getActivePage();
    IEditorPart editor;
    try {
        editor = page.openEditor(editPosition.getEditorInput(), editPosition.getEditorId());
    } catch (PartInitException ex) {
        // $NON-NLS-1$
        IStatus status = new Status(IStatus.ERROR, TextEditorPlugin.PLUGIN_ID, IStatus.OK, "Go to Last Edit Location failed", ex);
        TextEditorPlugin.getDefault().getLog().log(status);
        return;
    }
    // Optimization - could also use else branch
    if (editor instanceof ITextEditor) {
        ITextEditor textEditor = (ITextEditor) editor;
        textEditor.selectAndReveal(pos.offset, pos.length);
        return;
    }
    /*
		 * Workaround: send out a text selection
		 * XXX: Needs to be improved, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=32214
		 */
    if (editor != null) {
        IEditorSite site = editor.getEditorSite();
        if (site == null)
            return;
        ISelectionProvider provider = editor.getEditorSite().getSelectionProvider();
        if (provider == null)
            return;
        provider.setSelection(new TextSelection(pos.offset, pos.length));
    }
}
Also used : Status(org.eclipse.core.runtime.Status) IStatus(org.eclipse.core.runtime.IStatus) IWorkbenchWindow(org.eclipse.ui.IWorkbenchWindow) IStatus(org.eclipse.core.runtime.IStatus) ISelectionProvider(org.eclipse.jface.viewers.ISelectionProvider) EditPosition(org.eclipse.ui.internal.texteditor.EditPosition) EditPosition(org.eclipse.ui.internal.texteditor.EditPosition) Position(org.eclipse.jface.text.Position) TextSelection(org.eclipse.jface.text.TextSelection) IWorkbenchPage(org.eclipse.ui.IWorkbenchPage) IEditorPart(org.eclipse.ui.IEditorPart) PartInitException(org.eclipse.ui.PartInitException) IEditorSite(org.eclipse.ui.IEditorSite)

Aggregations

IStatus (org.eclipse.core.runtime.IStatus)1 Status (org.eclipse.core.runtime.Status)1 Position (org.eclipse.jface.text.Position)1 TextSelection (org.eclipse.jface.text.TextSelection)1 ISelectionProvider (org.eclipse.jface.viewers.ISelectionProvider)1 IEditorPart (org.eclipse.ui.IEditorPart)1 IEditorSite (org.eclipse.ui.IEditorSite)1 IWorkbenchPage (org.eclipse.ui.IWorkbenchPage)1 IWorkbenchWindow (org.eclipse.ui.IWorkbenchWindow)1 PartInitException (org.eclipse.ui.PartInitException)1 EditPosition (org.eclipse.ui.internal.texteditor.EditPosition)1