我正在为Java编写Eclipse插件,并且存在以下问题:
鉴于IEditorPart,我需要检查它是否是一个java编辑器。
我可以做(IEditor instanceof JavaEditor), 但是JavaEditor是一个org.eclipse.jdt.internal.ui.javaeditor.JavaEditor, 属于JDT的“内部”课程。
有更聪明,更安全的方法吗?我不确定为什么没有非内部接口。
答案 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
。