我构建了一个简单的 Eclipse 插件,用户可以在其中使用TableViewer
数据库资源打开任何这些资源的编辑器。
因此,用户可能有零个向上运行的编辑器实例。
是否有 API 可用于获取这些编辑器实例的列表?
我构建了一个简单的 Eclipse 插件,用户可以在其中使用TableViewer
数据库资源打开任何这些资源的编辑器。
因此,用户可能有零个向上运行的编辑器实例。
是否有 API 可用于获取这些编辑器实例的列表?
您可以通过以下方式获取对所有打开编辑器的引用:
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().getEditorReferences();
然后检查这些以选择引用编辑器类型实例的那些。
根据 API 的 javadoc,一个工作台可以有多个窗口,一个窗口可以有多个页面,并且它们不共享编辑器。
因此,为了获得所有打开的编辑器,您应该按照以下方式执行操作(排除错误检查等):
List<IEditorReference> editors = new ArrayList<IEditorReference>();
for (IWorkbenchWindow window : PlatformUI.getWorkbench().getWorkbenchWindows()) {
for (IWorkbenchPage page : window.getPages()) {
for (IEditorReference editor : page.getEditorReferences()) {
editors.add(editor);
}
}
}
请注意,这样的枚举不会尊重标签顺序
以下是编辑器枚举的示例:
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
IWorkbenchPage page = window.getActivePage();
IEditorPart actEditor = page.getActiveEditor();
IEditorReference[] editors = page.getEditorReferences();
for (int i=0; i<editors.length-1; i++) {
if (editors[i].getEditor(true) == actEditor) {
page.activate(editors[i+1].getEditor(true));
return null;
}
}