我有一个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
实现的默认提供程序,该默认提供程序返回选定的元素。