Eclipse rcp 如何在TableViewer选择更改时触发@CanExecute方法

Eclipse rcp 如何在TableViewer选择更改时触发@CanExecute方法,eclipse-rcp,e4,Eclipse Rcp,E4,我有一个带有工具栏的部件,还有一个TableViewer。 Int toolbar我有一个“编辑”按钮,只有在选中“表查看器”中的一行时,该按钮才应处于活动状态 我已经在handler的canExecute方法中添加了一个条件。 我可以看到,当我单击某些按钮时,该方法会执行,但当TableViewer中的选择发生更改时,它不会执行,因此它无法识别工具栏中的“编辑”按钮是否应该激活 当TableViewer中的选择发生更改时,也许我可以触发@CanExecute的执行,或者有其他方法?您可以使用以

我有一个带有工具栏的部件,还有一个TableViewer。 Int toolbar我有一个“编辑”按钮,只有在选中“表查看器”中的一行时,该按钮才应处于活动状态

我已经在handler的canExecute方法中添加了一个条件。 我可以看到,当我单击某些按钮时,该方法会执行,但当TableViewer中的选择发生更改时,它不会执行,因此它无法识别工具栏中的“编辑”按钮是否应该激活


当TableViewer中的选择发生更改时,也许我可以触发@CanExecute的执行,或者有其他方法?

您可以使用以下方法执行处理程序:

@Inject
ECommandService命令服务;
@注入
EHandlerService handlerService;
...
ParameterizedCommand=commandService.createCommand(“命令id”,Collections.emptyMap());
if(handlerService.canExecute(命令)){
handlerService.executeHandler(命令);
}
“command id”是处理程序正在处理的命令的id

您可以使用以下方式请求更新工具栏:

@Inject
IEventBroker事件经纪人;
...
发送(UIEvents.REQUEST\u ENABLEMENT\u UPDATE\u主题,UIEvents.ALL\u元素\u ID);

Eclipse向我展示了不鼓励访问并且没有注入任何东西。不鼓励的消息没有问题,e4 API的某些部分没有最终确定,因此您必须抑制警告。您必须在注入的类(如部件)中运行此代码,或将服务作为参数传递给您的代码。好的,您已经编写了如何手动运行canExecute和执行方法,但现在如何刷新工具栏?