来自TreeViewer的Eclipse SWT Open编辑器

时间:2015-01-07 12:27:08

标签: eclipse-rcp

在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 

1 个答案:

答案 0 :(得分:0)

您需要告诉视图(或编辑)网站您的TreeViewer是该网站的选择提供商。

在ViewPart(或EditorPart)中使用类似:

的内容
getSite().setSelectionProvider(treeViewer);

TreeViewer类实现了ISelectionProvider所需的接口。