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

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.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);

以上是关于如何以编程方式调用命令传递给它一个参数?的主要内容,如果未能解决你的问题,请参考以下文章

R语言编程时如何传递文件名参数

如何清除片段中的参数?

将命令行参数从 VB 传递到 C# WPF 应用程序

如何以编程方式创建 RAM 磁盘?

以编程方式使用前缀参数的emacs lisp调用函数

以编程方式执行解压缩命令