编写 Eclipse 插件时,检查 IEditorPart 是否是 Java 编辑器的正确方法是什么?
我正在为 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该测试 IEditorPart 的 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:
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 inASTProvider
.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 ;) .
一种策略可能是使用 JavaUI.getEditorInputJavaElement(IEditorPart):
如果编辑器输入实际上不是一个,则该方法返回
null
Java 元素。One strategy might be to use JavaUI.getEditorInputJavaElement(IEditorPart):
The method returns
null
if the editor input is not in fact a Java element.