Pregunta

He construido un sencillo plugin para Eclipse que un usuario puede utilizar un TableViewer de los recursos de base de datos para abrir un editor en cualquiera de esos recursos.

Los usuarios pueden, por tanto, tener cero casos hacia arriba del editor de ejecución.

¿Existe una API disponible para obtener una lista de las instancias del editor?

¿Fue útil?

Solución

Usted puede obtener referencias a todos los editores abiertos con:

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

Y a continuación, comprobar estos para seleccionar las que hacen referencia a instancias de su tipo de editor.

Otros consejos

De acuerdo con el Javadoc para la API de un banco de trabajo puede tener varias ventanas, y una ventana puede tener varias páginas, y no compartir los editores.

Por lo tanto, con el fin de obtener todos y cada editor abierto, que debe hacer algo en este sentido (comprobación de errores, etc excluido):

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);
        }
    }
}

Tenga en cuenta la dicha enumeración será no respetar el orden de tabulación

Aquí es un ejemplo de una enumeración de los editores:

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;
  }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top