列举我所有的Eclipse编辑器?

列举我所有的Eclipse编辑器?,eclipse,eclipse-rcp,jface,eclipse-pde,Eclipse,Eclipse Rcp,Jface,Eclipse Pde,我构建了一个简单的Eclipse插件,用户可以使用数据库资源的TableViewer打开这些资源的编辑器 因此,用户可能没有运行编辑器的实例 是否有API可用于获取这些编辑器实例的列表?您可以通过以下方式获取对所有打开编辑器的引用: PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().getEditorReferences(); 然后选中这些以选择引用编辑器类型实例的实例。请注意,这样的枚举将 下面

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

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


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

您可以通过以下方式获取对所有打开编辑器的引用:

PlatformUI.getWorkbench().getActiveWorkbenchWindow()
    .getActivePage().getEditorReferences();

然后选中这些以选择引用编辑器类型实例的实例。

请注意,这样的枚举将

下面是一个编辑器枚举示例:

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;
  }
}
IWorkbenchWindow=HandlerUtil.getActiveWorkbenchWindowChecked(事件);
IWorkbenchPage=window.getActivePage();
IEditorPart actEditor=page.getActiveEditor();
IEditorReference[]editors=page.getEditorReferences();

对于(inti=0;i根据javadocfortheapi,一个工作台可以有几个窗口,一个窗口可以有几个页面,它们不共享编辑器

因此,为了获得所有和每一个打开的编辑器,您应该按照以下方式进行操作(错误检查等除外):

List editors=new ArrayList();
对于(IWorkbenchWindow:PlatformUI.getWorkbench().getWorkbenchWindow()){
对于(IWorkbenchPage:window.getPages()){
对于(IEditorReference编辑器:page.getEditorReferences()){
editors.add(editor);
}
}
}

我相信所有最新版本的工作台都不会有一个以上的页面,但我不确定这一点。我认为如果将编辑器拖到“一边”,就会得到WorkbenchPage制作eclipse的其他编辑器将编辑器区域分割为两个单独的部分,每个部分都有各自的编辑器选项卡区域……您跳过数组中的最后一个编辑器有什么原因吗?要查找数组中的所有元素,您应该执行
for(int i=0;i@Erk不确定。七年前,这个例子来自
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);
        }
    }
}