Перечислять все мои редакторы 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;
}
}