如何通过代码在Eclipse插件中打开文件?

9

我在开发一个Eclipse插件,需要从项目浏览器中打开文件。假设我有一个名为ABC的项目,右键单击该项目后,我可以使用我的插件工具运行。处理后,我会得到某些结果,例如“检查文件xyz.java”。

现在我想通过代码在IDE中打开此文件。

我正在使用以下代码:

File absolute = new File("/Decider.java");  
File file = new File("/Decider.java");
IFileStore fileOnLocalDisk = EFS.getLocalFileSystem().getStore(absolute.toURI() );

FileStoreEditorInput editorInput = new FileStoreEditorInput(fileOnLocalDisk);

IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();

 try {  
    page.openEditor(editorInput, "org.eclipse.ui.DefaultTextEditor");         

    page.openEditor(editorInput, "MyEditor.editor");          

        IFileStore fileStore = EFS.getLocalFileSystem().getStore(absolute.toURI() );
        IDE.openEditorOnFileStore( page, fileStore );

      } catch (PartInitException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    try {
        System.out.println(file.getCanonicalPath());
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }


    IPath path = new Path(" /DirectoryReader.java");
    IFile sampleFile =  ResourcesPlugin.getWorkspace().getRoot().getFile(path);

    IEditorInput editorInput1 = new FileEditorInput(sampleFile);
    IWorkbenchWindow window1=PlatformUI.getWorkbench().getActiveWorkbenchWindow();
    IWorkbenchPage page1 = window1.getActivePage();
    try {
        page1.openEditor(editorInput1, "org.eclipse.ui.DefaultTextEdtior");
    } catch (PartInitException e1) {

        e1.printStackTrace();
    } 

这里创建了一个名为decider的新文件,位于C盘根目录下,这意味着它获取了错误的路径。

但是当我使用路径代码作为普通的JAVA项目中的某个独立java文件时,它获取到了正确的路径。


我不清楚你在问什么。你只是想打开项目文件的默认编辑器,还是特定的编辑器或其他什么? - greg-449
我只想像代码中所提到的那样打开默认的Eclipse编辑器,其名称为"org.eclipse.ui.DefaultTextEditor"。 - user2379020
这个问题就像当我运行插件时,在Eclipse的控制台视图中显示一些错误。现在我想打开有缺陷的文件。我们有一个文件名,如您可以在绝对变量中看到。我想打开这个文件,但是通过上面的代码它会在新位置创建一个新文件。 - user2379020
这是用于开发的Eclipse编辑器。 - user2379020
1个回答

8

在工作区中处理文件时,应使用IFile。如果从项目资源管理器或其他视图中选择一个文件,它应该已经是一个IFile或可以适配为IFile

如果只有工作区相对路径,请使用ResourcesPlugin.getWorkspace().getRoot().getFile(path)(path将包括一个项目)。

要打开文件内容的默认编辑器,请使用

IDE.openEditor(page, file, true);

要打开特定的编辑器,请使用:

IDE.openEditor(page, file, "editor id");

IDE指的是org.eclipse.ui.ide.IDE。


一般来说,你不能打开一个特定行的编辑器 - 有些编辑器甚至没有行的概念。IDE.openEditor 返回被打开的 IEditorPart,实现了 ITextEditor 的编辑器有一个 selectAndReveal 方法,可以显示文件中的偏移量。 - greg-449

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接