如何以编程方式调用命令传递给它一个参数?

时间:2014-10-13 13:01:14

标签: eclipse eclipse-plugin eclipse-pde

我正在尝试波纹管片段,但调用的命令是使用空参数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丢失了。

有解决方法吗?

1 个答案:

答案 0 :(得分:2)

谢谢@ greg-449,你激励我继续挖掘;)。

最后证明Command.excecuteCommand.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);