编写Eclipse插件时,检查IEditorPart是否为Java编辑器的正确方法是什么?

时间:2009-02-21 21:53:00

标签: eclipse eclipse-jdt

我正在为Java编写Eclipse插件,并且存在以下问题:

鉴于IEditorPart,我需要检查它是否是一个java编辑器。

我可以做(IEditor instanceof JavaEditor), 但是JavaEditor是一个org.eclipse.jdt.internal.ui.javaeditor.JavaEditor, 属于JDT的“内部”课程。

有更聪明,更安全的方法吗?我不确定为什么没有非内部接口。

2 个答案:

答案 0 :(得分:4)

您应该测试IEditorPart的ID:

private boolean isJavaEditor(IWorkbenchPartReference ref) {
    if (ref == null) {
        return false; }

    String JavaDoc id= ref.getId();
    return JavaUI.ID_CF_EDITOR.equals(id) || JavaUI.ID_CU_EDITOR.equals(id);
}

测试实例是only needed in eclipse3.1

alt text http://blogs.zdnet.com/images/Burnette_DSCN0599.JPG

JavaUI是Java用户界面组件的主要访问点。它允许您以编程方式在Java元素上打开编辑器,打开Java或Java Browsing透视图,以及打开包和类型提示符对话框。

JavaUI是Java UI插件的中心访问点(id“org.eclipse.jdt.ui”)

你可以看到ASTProvider中使用的那种效用函数(“isJavaEditor()”)。

这里的识别机制确实是简单的字符串比较。

无论如何,你明智地避免与内部类进行比较:它已被列为one of the 10 common errors in plugins development;)。

答案 1 :(得分:0)

一种策略可能是使用JavaUI.getEditorInputJavaElement(IEditorPart)

// given IEditorPart editor
IJavaElement elt = JavaUI.getEditorInputJavaElement(editor.getEditorInput());
if (elt != null) {
    // editor is a Java editor
}

如果编辑器输入实际上不是Java元素,则该方法返回null