我已经实现了org.eclipse.ui.edit.delete
命令处理程序,我想用编辑/删除主菜单项来调用它。
由于“删除”操作是一个可重定向的操作,它会调用在每次编辑的上下文中定义的另一个操作,编辑器通常配置为IActionBars.setGlobalAction(String id, IAction action)
where id
="delete"
并且操作是由可重定向的操作调用的自定义操作。
我可以看到以下选项:
- 创建一个将其执行和状态更改监控委托给命令的操作,将现有命令转换为参数
setGlobalAction
,可能是复制org.eclipse.ui.internal.actions.CommandAction
方法。 - 从主菜单中删除现有操作并插入命令贡献项
两种方式看起来都太复杂/肮脏。我错过了什么吗?我可以使用命令而不是操作吗?
编辑:
似乎主菜单不是用 实现的IAction
,而是用实现的CommandContributionItem
。默认命令处理程序调用CommandAction
依次查询RetargetAction
。命令的“更好”处理程序可以覆盖此行为。
虽然我现在可以为删除命令提供处理程序,但问题仍然存在,因为从 GUI 调用命令(例如通过单击按钮)很有用,而且自定义命令并不那么容易调用(它们没有默认的键绑定或可重定向的操作)。