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
所需的接口。
在 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
所需的接口。