Переопределить файл Eclipse> Сохранить действие
Я пытаюсь переопределить действие Eclipse File > Save, чтобы добавить некоторые функции.
Я пробовал следующие вещи
a) Создайте новое действие и добавьте его в глобальный обработчик действий
actionBars.setGlobalActionHandler(ActionFactory.SAVE.getId(), mySaveAction);
actionRegistry.registerAction(action);
b) Создайте новый обработчик и отмените команду сохранения
<extension point="org.eclipse.ui.handlers">
<handler commandId="org.eclipse.ui.file.save"
class="com.diagrams.ui.SaveFileHandler">
<enabledWhen>
<with variable="activePartId">
<equals
value="com.diagrams.editors.MultiPageEditor" />
</with>
</enabledWhen>
<activeWhen>
<with variable="activePartId">
<equals
value="com.diagrams.editors.MultiPageEditor" />
</with>
</activeWhen>
</handler>
</extension>
С обоими этими подходами я смог переопределить функциональность клавиатуры Ctrl + S, но меню "Файл" > "Сохранить", похоже, работает по-другому.
Поистине оцените любую помощь, спасибо
Ответы
Ответ 1
В приложении RCP вы можете внести вклад в действие "Сохранить" в своем ActionBarAdvisor. Это также регистрирует действие, поэтому оно доступно из команды сохранения.
Но как плагин в Eclipse IDE, среда IDE предоставляет ActionBarAdvisor и подключает действие "Сохранить" в меню "Файл". Поскольку это не технически команда (Действия являются шагом выше слушателя SWT.Selection), почему вы не можете переопределить действие File > Save.
Однако каждая часть обеспечивает собственную реализацию сохранения, поэтому вы можете делать все, что хотите, в своем MultiPageEditor.
Другой вариант - использовать org.eclipse.ui.commands.ICommandService.addExecutionListener(IExecutionListener)
и добавить IExecutionListener (или IEL2). Это может прослушивать команду сохранения, идентификатор объявляется в org.eclipse.ui.IWorkbenchCommandConstants
.
Ответ 2
Возможно, это связано с тем, что activePartId отличается при выборе главного меню в зависимости от нажатия клавиши или с помощью контекстного меню. Вы просматривали другие точки расширения?