Eclipse RCP:如何在其他视图中收听 CheckboxTableViewer 选择

Eclipse RCP: How to listen to CheckboxTableViewer selection in other view

我有一个 Eclipse RCP,其视图的控件是 CheckboxTableViewer。

我想使用 WorkbenchPage 的 SelectionService(出于耦合松散的原因)对编辑器视图中的 check/uncheck 操作作出反应。

所以我在视图的 createPartControl() 方法中执行 getSite().setSelectionProvider(myTableViewer);

此外,我在编辑器中创建了一个侦听器字段:

private ISelectionListener mylistener = new ISelectionListener() {
    public void selectionChanged(IWorkbenchPart sourcepart, ISelection selection) {
        System.out.println(((IStructuredSelection) selection).size());
    }
};

不幸的是,我只在控制台打印出选择的的数量,而不是选中元素的数量。我试图以某种方式将 myTableViewer.getCheckedElements() 传递给 SelectionProvider,但找不到访问点 :(.

您可以编写自己的 ISelectionProvider 实现,其中 returns 选中的元素,而不是使用 TableViewer 实现的默认提供程序,其中 returns 选中的元素。