Вопрос

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

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

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

Это было полезно?

Решение

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

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;
  }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top