L'enumerazione tutti gli editor mia Eclipse?
-
21-08-2019 - |
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?
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;
}
}