在RCP应用程序中,我试图在用户双击TreeViewer中的节点时打开编辑器。当视图包含TableViewer时,我用于此的策略是在ExecutionEvent中传递当前状态,并在打开的编辑器处理程序中获取选择。与TreeViewer一起使用时,此策略失败,因为getSelectionProvider()返回null。
有关将选择内容传递给处理程序的建议吗?或者从TreeView打开编辑器的最佳实践?
使用TableViewer
// in doubleClick handler of view
ICommandService cmdService = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
Command cmd = cmdService.getCommand("com.easa.acmotor.client.eclipse.motorOpenFromView");
ExecutionEvent eventCmd = new ExecutionEvent(cmd, new HashMap<String, String>(), this,
((IEvaluationService) PlatformUI.getWorkbench().getService(IEvaluationService.class)).getCurrentState());
try {
cmd.executeWithChecks(eventCmd);
} catch (Exception e) {
}
// in open editor handler
public Object execute(ExecutionEvent event) throws ExecutionException {
IStructuredSelection sel = (IStructuredSelection) HandlerUtil.getActiveSite(event).getSelectionProvider().getSelection();
// process selected items here opening an editor for each
答案 0 :(得分:0)
您需要告诉视图(或编辑)网站您的TreeViewer
是该网站的选择提供商。
在ViewPart(或EditorPart)中使用类似:
的内容getSite().setSelectionProvider(treeViewer);
TreeViewer
类实现了ISelectionProvider
所需的接口。