Перечислять все мои редакторы Eclipse? - PullRequest
5 голосов
/ 05 февраля 2009

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

Таким образом, пользователи могут иметь ноль и более запущенных экземпляров редактора.

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

Ответы [ 3 ]

10 голосов
/ 05 февраля 2009

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

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

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

7 голосов
/ 28 апреля 2011

Согласно 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);
        }
    }
}
1 голос
/ 06 февраля 2009

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

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

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