У меня есть RCP Eclipse с представлением, чей элемент управления является 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
который возвращает выбранные элементы.
ISelectionProvider
, а вgetSelection()
я должен вернутьgetCheckedElements()
? Я полагаю, мне нужно будет обернуть отмеченные элементы вISelection
?