枚举我所有的Eclipse编辑器?

时间:2009-02-05 16:37:42

标签: eclipse eclipse-rcp jface eclipse-pde

我构建了一个简单的Eclipse插件,用户可以使用TableViewer数据库资源在任何这些资源上打开编辑器。

因此,用户可能没有正常运行的编辑器实例。

是否有API可用于获取这些编辑器实例的列表?

3 个答案:

答案 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;
  }
}