Как предложение из вопроса Nattable add row command Я попытался зарегистрировать обработчик команды с EventList
.
Но так как Eventlist
обернут FilterList
, который действует как BodyDataProvider
, я не смог создать DataLayer
на основе EventList
, из которого я мог бы зарегистрировать свой CommmandHandler
.
Отправной точкой является предыдущий вопрос для определения BodyLayerStack
со следующим:
class BodyLayerStack extends AbstractLayerTransform {
//AncolabMaterial is the model to show at the natTable
private final EventList<AncolabMaterial> filterList;
private final IDataProvider bodyDataProvider;
private final SelectionLayer selectionLayer;
public BodyLayerStack(List<AncolabMaterial> input_values_list, IColumnPropertyAccessor<AncolabMaterial> columnPropertyAccessor) {
EventList<AncolabMaterial> eventList = GlazedLists.eventList(input_values_list);
TransformedList<?, ?> rowObjectsGlazedList = GlazedLists.threadSafeList(eventList);
SortedList<?> sortedList = new SortedList<>(rowObjectsGlazedList, null);
this.filterList = new FilterList<AncolabMaterial>((EventList<AncolabMaterial>) sortedList);
this.bodyDataProvider = new ListDataProvider<AncolabMaterial>(filterList, columnPropertyAccessor);
DataLayer bodyDataLayer = new DataLayer(getBodyDataProvider());
//Other layers stacked
GlazedListsEventLayer<?> glazedListsEventLayer = new GlazedListsEventLayer<AncolabMaterial>(bodyDataLayer, this.filterList);
this.selectionLayer = new SelectionLayer(glazedListsEventLayer, false);
//...
}
}
Я пробовал следующее:
DataLayer dataLayer = new DataLayer(
new ListDataProvider<AncolabMaterial>(eventList, columnPropertyAccessor));
Но так как DataLayer
охватывает IDataProvider
и служит источником данных для всех остальных слоев, если я установлю EvenList
как IDataProvider
DataLayer
, тогда filterlList
не будет работать должным образом ,
то есть this.filterList
не является основой bodyDataProvider
.
Я не нахожу на nattable_examples -> примеры учебника -> GlazedLists -> Фильтровать любую другую BodyLayerStack
конфигурацию, отличную от указанной выше.