我有一个带工具栏的零件,还有一个TableViewer。 Int工具栏我有一个编辑按钮,只有在选择了表查看器中的行时才应该激活。
我已经为处理程序的canExecute方法添加了一个条件。 我可以看到这个方法在我点击某些按钮时执行,但是当TableViewer中的选择被更改时它不会执行,所以它不会识别工具栏中的编辑按钮应该激活。
当TableViewer中的选择被更改或者可能有其他方式时,我可以触发@CanExecute的执行吗?
答案 0 :(得分:2)
您可以使用以下命令执行处理程序:
@Inject
ECommandService commandService;
@Inject
EHandlerService handlerService;
...
ParameterizedCommand command = commandService.createCommand("command id", Collections.emptyMap());
if (handlerService.canExecute(command)) {
handlerService.executeHandler(command);
}
“command id”是处理程序正在处理的命令的id。
您可以使用以下命令请求更新工具栏:
@Inject
IEventBroker eventBroker;
...
eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, UIEvents.ALL_ELEMENT_ID);