RCP 应用程序上下文中缺少当前选择

Current selection missing in RCP application context

为了在命令处理程序中获取当前选定的对象,我这样做

HandlerUtil.getCurrentSelection(event);

从存储在事件中的应用程序上下文中找到当前选择。

但是我正在寻找这个 returns null 的错误,尽管我可以清楚地看到 table.

上的一个选择

我向适当的 table 查看器添加了一个选择监听器:

tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

    @Override
    public void selectionChanged(SelectionChangedEvent event) {
        LOGGER.trace(event);
    }
});

我可以在调用

之前看到日志输出
HandlerUtil.getCurrentSelection(event);

知道为什么选择在命令处理程序中不可用吗?

您必须为您的部分注册一个 'selection provider' 以使选择对命令处理程序(和其他东西)可用。

您在视图或编辑器中执行此操作:

getSite().setSelectionProvider(selectionProvider);

其中 selectionProvider 是实现 ISelectionProvider 的东西。 TableViewerTreeViewer、...等 JFace 查看器实现了此接口。