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功能,但"文件>保存"菜单似乎工作方式不同.
非常感谢任何帮助,谢谢
在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.