Перечислять все мои редакторы Eclipse?
-
21-08-2019 - |
Вопрос
Я создал простой плагин 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;
}
}