我构建了一个简单的Eclipse插件,用户可以使用TableViewer
数据库资源在任何这些资源上打开编辑器。
因此,用户可能没有正常运行的编辑器实例。
是否有API可用于获取这些编辑器实例的列表?
答案 0 :(得分:10)
您可以通过以下方式获取对所有开放式编辑器的引用:
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().getEditorReferences();
然后检查这些以选择引用编辑器类型实例的那些。
答案 1 :(得分:7)
根据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);
}
}
}
答案 2 :(得分:1)
请注意这样的枚举not respect the tab order
以下是编辑器枚举的示例:
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;
}
}