package fr.openwide.core.wicket.more.markup.repeater.table.toolbar; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.markup.html.border.Border; import fr.openwide.core.jpa.more.business.sort.ISort; import fr.openwide.core.wicket.more.markup.html.sort.TableSortLink; import fr.openwide.core.wicket.more.markup.html.sort.model.CompositeSortModel; import fr.openwide.core.wicket.more.markup.repeater.table.CoreDataTable; import fr.openwide.core.wicket.more.markup.repeater.table.column.ICoreColumn; /** * A component that wraps markup by adding a {@link TableSortLink}. */ public class CoreSortBorder<S extends ISort<?>> extends Border { private static final long serialVersionUID = -5734785070168027755L; public CoreSortBorder(final String id, CoreDataTable<?, S> dataTable, CompositeSortModel<S> sortModel, IColumn<?, S> column) { super(id); addToBorder(newSortLink("sortLink", dataTable, sortModel, column)); } public CoreSortBorder(final String id, CoreDataTable<?, S> dataTable, CompositeSortModel<S> sortModel, ICoreColumn<?, S> column) { super(id); addToBorder(newSortLink("sortLink", dataTable, sortModel, column)); } protected TableSortLink<S> newSortLink(String id, final CoreDataTable<?, S> dataTable, CompositeSortModel<S> sortModel, IColumn<?, S> sortableColumn) { return new TableSortLink<S>(id, sortModel, sortableColumn.getSortProperty(), dataTable) { private static final long serialVersionUID = 1L; @Override protected void refreshOnSort(AjaxRequestTarget target) { target.add(dataTable.getComponentToRefresh()); } }; } protected TableSortLink<S> newSortLink(String id, final CoreDataTable<?, S> dataTable, CompositeSortModel<S> sortModel, ICoreColumn<?, S> sortableColumn) { return new TableSortLink<S>(id, sortModel, sortableColumn.getSortProperty(), dataTable, sortableColumn.getSortTooltipTextModel()) { private static final long serialVersionUID = 1L; @Override protected void refreshOnSort(AjaxRequestTarget target) { target.add(dataTable.getComponentToRefresh()); } } .cycleMode(sortableColumn.getSortCycleMode()) .iconStyle(sortableColumn.getSortIconStyle()); } }