覆盖Eclipse文件>保存操作

Abh*_*hit 11 eclipse overriding file save eclipse-rcp

我试图覆盖Eclipse文件>保存菜单操作以添加一些功能.我尝试过以下的事情

a)创建一个新动作并将其添加到全局动作处理程序

actionBars.setGlobalActionHandler(ActionFactory.SAVE.getId(), mySaveAction); actionRegistry.registerAction(action);

b)创建一个新的处理程序并覆盖save命令

<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> 
Run Code Online (Sandbox Code Playgroud)

通过这两种方法,我可以覆盖键盘Ctrl + S功能,但"文件>保存"菜单似乎工作方式不同.

非常感谢任何帮助,谢谢

Pau*_*ter 6

在RCP应用程序中,您可以在ActionBarAdvisor中提供Save操作.这也会记录操作,以便从save命令中获取.

但作为Eclipse IDE中的插件,IDE提供ActionBarAdvisor并在"文件"菜单中连接"保存"操作.因为这在技术上不是命令(Actions是SWT.Selection侦听器上方的一步),这就是为什么你不能覆盖File> Save动作.

但是,每个部分都提供自己的保存实现,因此您可以在MultiPageEditor中执行任何操作.

另一种选择是使用org.eclipse.ui.commands.ICommandService.addExecutionListener(IExecutionListener)和添加IExecutionListener(或IEL2).这可以侦听save命令,声明ID org.eclipse.ui.IWorkbenchCommandConstants.