Переопределить файл 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 отличается при выборе главного меню в зависимости от нажатия клавиши или с помощью контекстного меню. Вы просматривали другие точки расширения?