Pergunta

Eu construí um simples Eclipse plug-in onde um usuário pode usar um TableViewer de recursos de banco de dados para abrir um editor em qualquer desses recursos.

Os usuários podem, portanto, ter zero para cima instâncias do editor de execução.

Existe uma API disponível para obter uma lista das instâncias do editor?

Foi útil?

Solução

Você pode obter referências a todos os editores abertos com:

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

E, em seguida, verifique estes para selecionar as que casos de referência de seu tipo de editor.

Outras dicas

De acordo com o javadoc para a API uma bancada pode ter várias janelas, e uma janela pode ter várias páginas, e eles não editores de acções.

Assim, a fim de obter todas e cada editor aberto, você deve fazer algo nesse sentido (verificação de erros etc excluídos):

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

Esteja ciente a uma enumeração como vai não respeitar a ordem de tabulação

Aqui está um exemplo de uma enumeração de editores:

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;
  }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top