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

我想使用WorkbenchPage的SelectionService(出于松耦合的原因)对编辑器中视图内的检查/取消检查动作做出反应。

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

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

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


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

最佳答案

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

07-26 00:51