2009-02-05 4 views
4

J'ai construit un plugin Eclipse simple où un utilisateur peut utiliser un tableViewer de ressources de base de données pour ouvrir un éditeur sur l'une de ces ressources.Enumérer tous mes éditeurs Eclipse?

Les utilisateurs peuvent donc avoir zéro instance ascendante de l'éditeur en cours d'exécution.

Existe-t-il une API disponible pour obtenir une liste de ces instances d'éditeur?

M.

Répondre

10

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.

1

Sachez le une telle énumération sera not respect the tab order

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; 
    } 
} 
+0

Y at-il une raison pour laquelle vous sauter le dernier éditeur dans le tableau ? Pour trouver tous les éléments dans un tableau, vous devriez faire 'for (int i = 0; i <éditeurs.length; i ++)' – Erk

+0

@Erk Pas sûr. Il y a sept ans, cet exemple venait de https://www.eclipse.org/forums/index.php/t/106220/ – VonC

5

Selon le Javadoc de 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.

Ainsi, 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); 
     } 
    } 
} 
+0

Je crois que toutes les versions récentes de l'atelier n'auront jamais plus d'une page, mais je ne suis pas sûr de ça. –

+0

Je pense que WorkbenchPage est ce que vous obtenez si vous faites glisser un éditeur sur "le côté" des autres éditeurs en faisant éclipse diviser la zone de l'éditeur en deux sections distinctes avec leur propre zone pour les onglets de l'éditeur ... – Erk

Questions connexes