【发布时间】: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