我正在尝试波纹管片段,但调用的命令是使用空参数map执行的。
ICommandService service = (ICommandService) ((IServiceLocator) PlatformUI.getWorkbench())
.getService(ICommandService.class);
Command command = service.getCommand(Constants.COMMAND_ID);
ExecutionEvent eventWithParam = new ExecutionEvent(command,
Collections.singletonMap(Constants.COMMAND_PARAM, "true"), null, null);
command.execute(eventWithParam);
问题似乎是当它转到兼容性层时,PARM_MAP
方法中的HandlerServiceHanlder.execute
丢失了。
有解决方法吗?
答案 0 :(得分:2)
谢谢@ greg-449,你激励我继续挖掘;)。
最后证明Command.excecute
和Command.executeWithChecks
都不起作用(传递给HandlerServiceHandler
时所有参数都丢失了。)
但这提醒我有类似HandlerService
的东西 - 基本上可以完成这项工作。这是片段:
IHandlerService handlerService = (IHandlerService) ((IServiceLocator) PlatformUI.getWorkbench())
.getService(IHandlerService.class);
Parameterization[] params = new Parameterization[] { new Parameterization(
command.getParameter(Constants.COMMAND_PARAM), "true") };
ParameterizedCommand parametrizedCommand = new ParameterizedCommand(command, params);
handlerService.executeCommand(parametrizedCommand, null);