Domanda

Ho costruito un semplice plugin di Eclipse in cui un utente può utilizzare un TableViewer delle risorse del database per aprire un editor su uno di tali risorse.

Gli utenti possono quindi avere zero casi verso l'alto del l'editor in esecuzione.

C'è un'API a disposizione per ottenere un elenco di quei casi Editor?

È stato utile?

Soluzione

È possibile ottenere i riferimenti a tutti gli editor aperti con:

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

E quindi controllare questi per selezionare quelli che fanno riferimento a istanze del tipo dell'editor.

Altri suggerimenti

Secondo il Javadoc per l'API un banco di lavoro può avere diverse finestre, e una finestra può avere diverse pagine, e non condividono i redattori.

Quindi, al fine di ottenere ogni e qualsiasi editor open, si dovrebbe fare qualcosa in questo senso (il controllo degli errori, ecc esclusi):

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

Essere consapevoli del tale elencazione sarà non rispettare l'ordine di tabulazione

Ecco un esempio di un'enumerazione di redattori:

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;
  }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top