только один редактор за раз? РКП

Мне было интересно, есть ли способ сделать невозможным открытие более 1 редактора одновременно? то, что у меня есть сейчас, это кнопка, которая при каждом нажатии дает новый редактор. Я использую затмение RCP

Спасибо


person jean    schedule 12.08.2011    source источник
comment
Почему вы используете редактор? - Разве ViewPart, который обновляется при нажатии на кнопку, не имеет больше смысла? - Что произойдет, если редактор грязный, что если редактор содержит недопустимые значения?   -  person Tom Seidel    schedule 12.08.2011


Ответы (1)


Вы можете добавить IPartListener к IPartService из IWorkbenchWindow, чтобы закрыть все остальные редакторы при открытии нового редактора. Вы найдете текущий набор редакторов через IWorkbenchPage.getEditorReferences().

person Tonny Madsen    schedule 12.08.2011
comment
Предполагая, что всегда открыт только один редактор, IWorkbenchPage.getActiveEditor() должно быть достаточно;) - person Tom Seidel; 12.08.2011
comment
@Tom Ну, проблема в том, что вы получаете уведомление только после открытия нового редактора, а затем IWorkbenchPage.getActiveEditor() возвращает новый редактор, а не старый редактор. В любом случае, я обычно предпочитаю алгоритмы с как можно меньшим количеством предварительных условий, даже если они немного сложнее... :-) - person Tonny Madsen; 12.08.2011
comment
ты прав. Мой комментарий вводит в заблуждение, getActiveEditor нужно вызывать до открытия нового редактора. В любом случае, вероятно, самым простым было бы IWorkbenchPage.closeAllEditors (сохранить) перед открытием нового :) - person Tom Seidel; 12.08.2011
comment
Согласен... Проблема только в том, как это сделать. AFAIK, для этого нет хука или слушателя :-( - person Tonny Madsen; 13.08.2011
comment
@Tom О, я согласен с использованием представлений, а не редакторов. Любой день! - person Tonny Madsen; 13.08.2011