Перечислять все мои редакторы Eclipse?

Я построил простой плагин Eclipse, где пользователь может использовать TableViewer ресурсов базы данных, чтобы открыть редактор на любом из этих ресурсов.

Поэтому у пользователей может быть запущен ноль экземпляров вверх.

Есть ли доступный API для получения списка этих экземпляров редактора?

3 ответа

Решение

Вы можете получить ссылки на все открытые редакторы с:

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

А затем отметьте их, чтобы выбрать те, которые ссылаются на экземпляры вашего типа редактора.

Согласно javadoc для API, рабочая среда может иметь несколько окон, а окно может иметь несколько страниц, и они не имеют общих редакторов.

Итак, чтобы получить все открытые редакторы, вы должны сделать что-то вроде этого (проверка ошибок и т. Д. Исключены):

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

Имейте в виду, что такое перечисление не будет соответствовать порядку табуляции

Вот пример перечисления редакторов:

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;
  }
}
Другие вопросы по тегам