@Inject
public ListPresenter(
ComponentProvider componentProvider,
ContentViewDefinition<T> definition,
FormFieldFactory formFieldFactory,
AvailabilityChecker availabilityChecker,
@DatasourceComponent DataProvider<T, DataFilter> dataProvider,
@DatasourceComponent PropertySetFactory<T> propertySetFactory) {
this.availabilityChecker = availabilityChecker;
this.definition = definition;
this.dataProvider = dataProvider;
this.componentProvider = componentProvider;
this.columns = definition
.getColumns().stream()
.collect(toMap(identity(), this::createRenderer, (e1, e2) -> e1, LinkedHashMap::new));
this.formFieldFactory = formFieldFactory;
this.propertySet = propertySetFactory.withProperties(columns.entrySet().stream().collect(toMap(e -> e.getKey().getName(), e -> e.getValue().getPresentationType())));
}