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
的东西。 TableViewer
、TreeViewer
、...等 JFace 查看器实现了此接口。
为了在命令处理程序中获取当前选定的对象,我这样做
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
的东西。 TableViewer
、TreeViewer
、...等 JFace 查看器实现了此接口。