我正在做一个测试项目,并遵循Vogella's RCP tutorial。之后,我对其进行了一些更改,例如。创建了一个JFace
TreeView
。现在,我希望如果用户双击TreeView
元素,则会打开另一个Part
。我有命令,但是,我不知道如何调用它。如果您看一下该教程,您可能会注意到它仅使用部件而不使用视图,并且我没有启动工作台的Application.java
类。因此,以下方法对我不起作用:IHandlerService handlerService = (IHandlerService) viewer.getSite().getService(IHandlerService.class);
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IHandlerService handlerService = (IHandlerService)window.getService(IHandlerService.class);
handlerService.executeCommand(cmdID, null);
他们俩都给我NullPointerException
。
最佳答案
这个旧的备用数据库怎么样:
Command command = ((ICommandService)getSite().getService(ICommandService.class)).getCommand(commandId);
...
final Event trigger = new Event();
ExecutionEvent executionEvent = ((IHandlerService)getSite().getService(IHandlerService.class)).createExecutionEvent(command, trigger);
command.executeWithChecks(executionEvent);