Question

Je l'ai construit un plugin simple Eclipse où un utilisateur peut utiliser une des ressources de TableViewer base de données pour ouvrir un éditeur sur l'une de ces ressources.

Les utilisateurs peuvent donc avoir zéro cas plus de l'éditeur cours d'exécution.

Y at-il une API disponible pour obtenir une liste de ces instances de l'éditeur?

Était-ce utile?

La solution

Vous pouvez obtenir des références à tous les éditeurs ouverts avec:

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

Et puis vérifiez ces options pour sélectionner ceux qui font référence à des instances de votre type d'éditeur.

Autres conseils

Selon le javadoc pour l'API un plan de travail peut avoir plusieurs fenêtres et une fenêtre peut avoir plusieurs pages, et ils ne partagent pas les éditeurs.

Alors, afin d'obtenir tous et chaque éditeur ouvert, vous devez faire quelque chose le long de ces lignes (vérification d'erreurs, etc. exclus):

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

Sachez le cette énumération sera respecte pas l'ordre de tabulation

Voici un exemple d'une énumération des rédacteurs en chef:

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;
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top