2

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

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

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

有没有更聪明、更安全的方法来做到这一点?我不确定为什么没有非内部接口。

4

2 回答 2

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);
}

仅在 eclipse3.1中需要测试实例。

替代文字 http://blogs.zdnet.com/images/Burnette_DSCN0599.JPG

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

JavaUI是 Java UI 插件的中央访问点 (id " org.eclipse.jdt.ui")

您可以看到isJavaEditor()例如在ASTProvider.

这里的识别机制确实是简单的String比较。

无论如何,避免与内部类进行强制比较是明智的:它已被列为插件开发中的 10 个常见错误之一;)。

于 2009-02-21T22:12:05.230 回答
0

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

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

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

于 2009-03-02T18:18:58.193 回答