Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在EclipseRCP中声明性地设置全局操作处理程序?_Eclipse_Eclipse Plugin_Eclipse Rcp - Fatal编程技术网

如何在EclipseRCP中声明性地设置全局操作处理程序?

如何在EclipseRCP中声明性地设置全局操作处理程序?,eclipse,eclipse-plugin,eclipse-rcp,Eclipse,Eclipse Plugin,Eclipse Rcp,Eclipse在一段时间前引入了命令框架,从那时起,您可以以声明方式配置弹出菜单、工具栏等。看 目前,我使用CommonActionProvider(如建议的)来设置全局操作处理程序。e、 g.对于用户双击“我的视图”中的项目时使用的打开操作 private IAction myAction = ....; public void fillActionBars(IActionBars actionBars){ if(myAction.isEnabled()){

Eclipse在一段时间前引入了命令框架,从那时起,您可以以声明方式配置弹出菜单、工具栏等。看

目前,我使用
CommonActionProvider
(如建议的)来设置全局操作处理程序。e、 g.对于用户双击“我的视图”中的项目时使用的
打开
操作

 private IAction myAction = ....;

 public void fillActionBars(IActionBars actionBars){
      if(myAction.isEnabled()){
           actionBars.setGlobalActionHandler(ICommonActionConstants.OPEN, myAction);
      }
 }
我想改用声明性贡献,因为我可以使用我的命令处理程序,而不需要创建一个操作来钩住全局操作处理程序

这种方法也会更好,因为这样我就可以利用

有人知道怎么做吗

有人知道如何省略将我的命令重新定义为操作的过程吗?
因为我不能将命令设置为全局操作处理程序。

我认为您不能,RetargetAction内容没有声明性贡献。当您将命令贡献给弹出菜单,但您还希望该命令成为打开操作(双击)时,您如何处理这种情况。双击操作通常必须是设置为树/表查看器的代码中的
OpenListener
。“通用导航器”代码可能会为此提供一些其他功能,但由于我没有使用这些功能,因此我无法告诉您是什么。@Rüdigerhermann是的,我对该代码感兴趣。现在我复制了
org.eclipse.ui.internal.actions.CommandAction
并对其进行了修改。它可以工作,但会导致错误日志中出现条目。所以另一个解决方案会很好。@Rüdigerhermann我刚刚创建了一个扩展和一个
GlobalActionProvider
GlobalActionProvider
可以在
org.eclipse.ui.navigator.navigatorContent
配置中用作
actionProvider
。它读取对自己扩展的贡献,并创建
CommandAction
s,当调用
fillActionBars
时,它将其绑定为全局操作处理程序。工作正常,现在它完全是声明性的。:)