2012-09-04 67 views
6

我想以編程方式執行上述操作。

我看着How to get cursor position in an eclipse TextEditorEclipse-plugin how to get current text editor corsor position所以我知道如何讓光標偏移當前打開編輯器。但是,我試圖在由我編程打開的新編輯器中設置遊標偏移量。
如何用特定的光標偏移位置打開新的eclipse編輯器

目前我打開我的新的編輯器的方法如下:

IWorkbenchWindow win = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); 
    IWorkbenchPage page = win.getActivePage(); 
    if (page != null) { 
     IEditorPart editor = page.getActiveEditor(); 
     if (editor != null) { 
      IEditorInput input = editor.getEditorInput(); 
      if (input instanceof IFileEditorInput) { 
       String fileLocation = ((IFileEditorInput) input).getFile().getLocation().toOSString(); 
       String newFileLocartion = generateNewFileLocation(fileLocation); 
       File file = new File(newFileLocartion); 
       IFileStore fileStore = EFS.getLocalFileSystem().getStore(file.toURI()); 
       try { 
        IDE.openEditorOnFileStore(page, fileStore); 
       } catch (PartInitException e) { 
        // TODO error handling 
       } 
      } 
     } 
    } 

是否有打開設置新的編輯器在特定的一個偏移開一條(假設我已經知道在偏移提前)?

謝謝!

回答

3

它使用此代碼段導航到文件中的指定行。

public static void navigateToLine(IFile file, Integer line) 
{ 
    HashMap<String, Object> map = new HashMap<String, Object>(); 
    map.put(IMarker.LINE_NUMBER, line); 
    IMarker marker = null; 
    try { 
     marker = file.createMarker(IMarker.TEXT); 
     marker.setAttributes(map); 
     try { 
      IDE.openEditor(getActivePage(), marker); 
     } catch (PartInitException e) { 
      //complain 
     } 
    } catch (CoreException e1) { 
     //complain 
    } finally { 
     try { 
      if (marker != null) 
       marker.delete(); 
     } catch (CoreException e) { 
      //whatever 
     } 
    } 
} 

可能不是你所需要的,但可能是有用的。 (/ /抱怨替換錯誤處理代碼,這是特定於產品的地方使用)

2

我使用了以下內容,這比以前的答案更簡單。假設你有int offsetIWorkbenchPage pageIFile file(而且似乎他們都在OP的問題存在):

ITextEditor editor = (ITextEditor) IDE.openEditor(page, file); 
editor.selectAndReveal(offset, 0); 

我發現瞭如何從this answer.(做到這一點,但通過selectAndReveal的第二個參數設置爲零,沒有文字突出顯示)