如何以编程方式调用命令传递给它一个参数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以编程方式调用命令传递给它一个参数?相关的知识,希望对你有一定的参考价值。
我正在尝试波纹管片段,但调用的命令是使用空参数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
。
有没有解决方法?
答案
谢谢@ 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);
以上是关于如何以编程方式调用命令传递给它一个参数?的主要内容,如果未能解决你的问题,请参考以下文章