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?

War es hilfreich?

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;
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top