package fr.openwide.core.basicapp.web.application.referencedata.component; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.model.ResourceModel; import com.google.common.base.Supplier; import fr.openwide.core.basicapp.core.util.binding.Bindings; import fr.openwide.core.basicapp.web.application.referencedata.form.AbstractGenericListItemPopup; import fr.openwide.core.basicapp.web.application.referencedata.form.SimpleGenericListItemPopup; import fr.openwide.core.basicapp.web.application.referencedata.model.AbstractGenericListItemDataProvider; import fr.openwide.core.basicapp.web.application.referencedata.model.SimpleGenericListItemDataProvider; import fr.openwide.core.jpa.more.business.generic.model.GenericListItem; import fr.openwide.core.jpa.more.business.generic.model.search.GenericListItemSort; import fr.openwide.core.wicket.more.markup.html.sort.SortIconStyle; import fr.openwide.core.wicket.more.markup.html.sort.TableSortLink.CycleMode; import fr.openwide.core.wicket.more.markup.repeater.table.builder.DataTableBuilder; import fr.openwide.core.wicket.more.markup.repeater.table.builder.state.IAddedCoreColumnState; public class SimpleGenericListItemListPanel<T extends GenericListItem<? super T>> extends AbstractGenericListItemListPanel<T, GenericListItemSort, AbstractGenericListItemDataProvider<T, GenericListItemSort>> { private static final long serialVersionUID = -2165029373966420708L; protected Supplier<T> supplier; /** * @param id The wicket id * @param supplier A supplier for newly-created items * @param dataProvider The data provider. See {@link SimpleGenericListItemDataProvider} for ready-to-use implementations. */ public SimpleGenericListItemListPanel(String id, Supplier<T> supplier, AbstractGenericListItemDataProvider<T, GenericListItemSort> dataProvider) { super(id, dataProvider, dataProvider.getSortModel()); this.supplier = supplier; setOutputMarkupId(true); } @Override protected T getNewInstance() { return this.supplier.get(); } @Override protected AbstractGenericListItemPopup<T> createPopup(String wicketId) { return new SimpleGenericListItemPopup<T>(wicketId) { private static final long serialVersionUID = 1L; @Override protected void refresh(AjaxRequestTarget target) { target.add(resultats); } }; } @Override protected IAddedCoreColumnState<T, GenericListItemSort> addColumns(DataTableBuilder<T, GenericListItemSort> builder) { return builder .addLabelColumn(new ResourceModel("business.listItem.label"), Bindings.genericListItem().label()) .withSort(GenericListItemSort.LABEL, SortIconStyle.ALPHABET, CycleMode.NONE_DEFAULT_REVERSE) .withClass("text text-md"); } @Override protected Component createSearchForm(String wicketId, AbstractGenericListItemDataProvider<T, GenericListItemSort> dataProvider, Component table) { return new SimpleGenericListItemSearchPanel<T>(wicketId, dataProvider, table); } }