Как предложение из вопроса команда Nattable добавить строку, я попытался зарегистрировать обработчик команд с помощью 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
, отличной от приведенной выше.