我有两个编辑器注册了一个文件扩展名,并且在其中一个编辑器中打开了一个带有该扩展名的文件。我现在想在另一个编辑器中以编程方式打开这个文件,但不必知道它的id。是否可以检索为一个文件扩展名注册的编辑器列表,或者是否有更好的方法可以执行此操作?
答案 0 :(得分:1)
您可以使用编辑器注册表执行此操作。获取注册表:
IEditorRegistry registry = PlatformUI.getWorkbench().getEditorRegistry();
注册表有许多查找编辑器的方法,例如:
IEditorDescriptor [] desc = registry.getEditors("file name");
返回将处理文件名的编辑器。还有一些方法可以获取与文件内容类型相关联的默认编辑器和编辑器。
IEditorDescriptor
包含您可以传递给openEditor
IWorkbenchPage
IWorkbenchPage
方法的编辑器ID。
更新
如果您想同时在两个编辑器中打开同一个文件,则必须使用具有“匹配标志”选项的openEditor
public IEditorPart openEditor(final IEditorInput input,
final String editorId, final boolean activate, final int matchFlags)
调用版本:
IWorkbenchPage.MATCH_NONE
指定matchFlags
作为{{1}}以停止搜索现有的开放式编辑器。