【问题标题】:How to find which file is open in eclipse editor without using IEditorPart?如何在不使用 IEditorPart 的情况下查找在 Eclipse 编辑器中打开的文件?
【发布时间】:2014-08-25 12:24:52
【问题描述】:

我想知道在eclipse编辑器中打开了哪个文件(甚至项目就足够了)?我知道一旦我们从 doSetInput 方法中获得 IEditorPart,我们就可以做到这一点,

IFile file = ((IFileEditorInput) iEditorPart).getFile();

但我想要文件名而不使用 IEditorPart,我该怎么做?
在项目资源管理器中检查哪个是选定的文件并没有多大帮助,因为用户可以一次选择多个文件并同时打开所有文件,我无法区分哪个文件在什么时间打开。
添加更多信息:
我为特定类型的文件指定了一个编辑器,现在每次打开它时,在初始化编辑器期间,我都需要根据项目属性进行一些操作。
在初始化编辑器时,我需要文件句柄(用户打开/双击的文件句柄)或相应的项目句柄。 我的编辑器是这样的:

public class MyEditor extends TextEditor{
    @Override
    protected void initializeEditor() {
        setSourceViewerConfiguration(new MySourceViewerConfiguration(
            CDTUITools.getColorManager(), store,
            "MyPartitions", this));
    }

    //other required methods

    @Override
    protected void doSetInput(IEditorInput input) throws CoreException {
        if(input instanceof IFileEditorInput)
        {
            IFile file = ((IFileEditorInput) input).getFile();
        }
    }
}

正如我在 doSetInput() 方法中所做的那样,我想要文件句柄(即使是项目句柄也足够了)。但问题在于 initializeEditor() 函数中没有对 editorInput 的引用,因此我无法获取文件句柄。
在源代码查看器配置文件中,我设置了代码扫描器,这需要一些项目特定的信息来设置相应的规则。

【问题讨论】:

  • 在doSetInput()中无法实现的initializeEditor()中需要做什么
  • 我正在添加代码扫描器,这需要项目特定的信息。编辑了源代码。
  • 在调用initializeEditor 时,此信息根本不可用。 public void init(IEditorSite site, IEditorInput input) 是编辑器知道输入的最早点。
  • 嗨,格雷格,我终于把我的代码移到了编辑器的 doSetInput 函数中。请发布您的答案,以便我将其标记为已接受。

标签: java eclipse eclipse-plugin editor


【解决方案1】:

您永远无法保证(即使使用IFileEditorInput)知道哪些文件是由编辑器“打开”的。

甚至没有“打开的文件”的定义,例如显示多个文件内容的编辑器(如 PDE 的插件清单编辑器)。其他编辑器仅显示 URI 的内容(可能本地)

您能解释一下您要解决的问题吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2015-04-09
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多