3

我已经实现了org.eclipse.ui.edit.delete 命令处理程序,我想用编辑/删除主菜单项来调用它。

由于“删除”操作是一个可重定向的操作,它会调用在每次编辑的上下文中定义的另一个操作,编辑器通常配置为IActionBars.setGlobalAction(String id, IAction action)where id="delete"并且操作是由可重定向的操作调用的自定义操作。

我可以看到以下选项:

  1. 创建一个将其执行和状态更改监控委托给命令的操作,将现有命令转换为参数setGlobalAction,可能是复制org.eclipse.ui.internal.actions.CommandAction方法。
  2. 从主菜单中删除现有操作并插入命令贡献项

两种方式看起来都太复杂/肮脏。我错过了什么吗?我可以使用命令而不是操作吗?

编辑:

似乎主菜单不是用 实现的IAction,而是用实现的CommandContributionItem。默认命令处理程序调用CommandAction依次查询RetargetAction。命令的“更好”处理程序可以覆盖此行为。

虽然我现在可以为删除命令提供处理程序,但问题仍然存在,因为从 GUI 调用命令(例如通过单击按钮)很有用,而且自定义命令并不那么容易调用(它们没有默认的键绑定或可重定向的操作)。

4

0 回答 0