Eclipse SWT 从 TreeViewer 打开编辑器

Eclipse SWT Open editor from TreeViewer

在 RCP 应用程序中,我试图在用户双击 TreeViewer 中的节点时打开编辑器。当视图包含 TableViewer 时,我为此使用的策略是在 ExecutionEvent 中传递当前状态,并在打开的编辑器处理程序中获取选择。当与 TreeViewer 一起使用时,此策略失败,因为 getSelectionProvider() returns 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 

您需要告诉查看(或编辑)网站您的 TreeViewer 是该网站的选择提供者。

在您的 ViewPart(或 EditorPart)中使用如下内容:

getSite().setSelectionProvider(treeViewer);

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