любимый
У меня есть пользовательский интерфейс, в котором, когда я выбираю элемент (в дереве), а затем нажимаю кнопку «Добавить», я получаю новый редактор. С каждым пунктом я могу получить редактор. (но все имеют одинаковый идентификатор)
Моя цель - закрыть только редактор item1, например, когда я нажимаю «сохранить». Я могу закрыть все редакторы с помощью: getSite (). GetWorkbenchWindow (). GetActivePage (). CloseAllEditors (true);
Но не только тот, который мне нужно закрыть. Мне помогло следующее решение:
// Creating and opening
MyObject item1 = ... //create item1
// open editor
myInput = new MyEditorInput(item1)
IDE.openEditor(workbenchPage, myInput, MY_EDITOR_ID);
// Closing
tmpInput = new MyEditorInput(item1)
IEditorReference[] editorReferences = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage()
.getEditorReferences();
List<IEditorReference> relevantEditors = new ArrayList<IEditorReference>();
for (IEditorReference iEditorReference : editorReferences) {
if (iEditorReference.getEditorInput().equals(tmpInput)) {
relevantEditors.add(iEditorReference);
}
}
PlatformUI
.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.closeEditors(
(IEditorReference[]) relevantEditors.toArray(new IEditorReference[relevantEditors
.size()]), true);
… .но у меня все еще есть некоторые проблемы ... Поскольку я могу открыть много редакторов одновременно, и у всех них есть та же самая кнопка "сохранить", случается, что я нажимаю "сохранить" в редакторе1, но закрываю редактор3 ... На самом деле, я сохраняю последний редактор, который будет открыт (благодаря его "элементу") ... в этом проблема ... Поэтому мне интересно, есть ли способ идентифицировать редактор, в котором существует кнопка, так что я закрываю это ..
Большое спасибо, я ценю любую помощь или подсказку (извините, если мои вопросы выглядят легкими и не стоят того, чтобы их задавать, но я все еще новичок ...)