Aufzählen alle meine Eclipse-Editoren?
-
21-08-2019 - |
Frage
Ich habe eine einfache Eclipse-Plugin gebaut, wo ein Benutzer eine TableViewer
von Datenbank-Ressourcen verwenden einen Editor auf jede dieser Ressourcen zu öffnen.
Benutzer daher Null aufwärts Instanzen des Editors laufen kann.
Gibt es eine API zur Verfügung, eine Liste der Editor-Instanzen zu bekommen?
Lösung
Sie können Verweise auf alle geöffneten Editoren erhalten mit:
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().getEditorReferences();
Und dann überprüfen Sie diese diejenigen auszuwählen, die Instanzen des Editor-Typ verweisen.
Andere Tipps
Nach dem javadoc für die API eine Werkbank mehrere Fenster haben kann, und ein Fenster kann mehrere Seiten haben, und sie haben nicht Editoren teilen.
Also, um alle und jeden offenen Editor zu erhalten, sollten Sie etwas in dieser Richtung (Fehlerprüfung usw. ausgenommen) tun:
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);
}
}
}
Beachten Sie die eine solche Aufzählung wird nicht die Tab-Reihenfolge einhalten
Hier ist ein Beispiel einer Aufzählung von Editoren:
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;
}
}