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

发布于 2024-07-14 04:11:49 字数 270 浏览 10 评论 0原文

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

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

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

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

I am writing Eclipse plugins for Java, and have the following problem:

Given an IEditorPart, I need to check if it is a java editor.

I could do (IEditor instanceof JavaEditor),
but JavaEditor is an org.eclipse.jdt.internal.ui.javaeditor.JavaEditor,
which falls under the JDT's "internal" classes.

Is there a smarter and safer way to do this? I'm not sure why there is no non-internal interface for this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倚栏听风 2024-07-21 04:11:49

您应该测试 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

< a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=84862" rel="nofollow noreferrer">JavaUI 是主要访问点Java 用户界面组件。 它允许您以编程方式打开 Java 元素的编辑器、打开 Java 或 Java 浏览透视图以及打开包和类型提示器对话框。

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

你可以看到那种实用程序函数(“isJavaEditor()”)在 ASTProvider

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

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

You should test the id of the IEditorPart:

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

Testing the instance was only needed in eclipse3.1.

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

JavaUI is the main access point to the Java user interface components. It allows you to programmatically open editors on Java elements, open a Java or Java Browsing perspective, and open package and type prompter dialogs.

JavaUI is the central access point for the Java UI plug-in (id "org.eclipse.jdt.ui")

You can see that kind of utility function ("isJavaEditor()") used for instance in ASTProvider.

The mechanism of identification here is indeed simple String comparison.

Anyway, you are wise to avoid cast comparison with internal class: it has been listed as one of the 10 common errors in plugins development ;) .

笑脸一如从前 2024-07-21 04:11:49

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

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

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

One strategy might be to use JavaUI.getEditorInputJavaElement(IEditorPart):

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

The method returns null if the editor input is not in fact a Java element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文