package org.nocket.component.table; import java.io.Serializable; import java.util.Arrays; /** * This class serves as a parameter object for the {@link GenericDataTablePanel} * as the latter one gets more and more flexibility which is difficult to * express by discrete constructor parameters. The configurator provides a * fluent API for convenient access to the various flex points. * * @author less02 */ public class GenericDataTableConfigurator<T extends Serializable> { protected TableSortType sortType = TableSortType.AJAX; protected GenericDataTableColumnConfigurator<T> columnConfigurator; protected int rowsPerPage = 20; protected ColumnSortOrder initialSortOrder = ColumnSortOrder.UP; protected String initialSortColumn; protected String[] columns; protected String[] sortColumns; protected Class<?> rowItemClass; protected TableItemPosition navigationbarPosition = TableItemPosition.bottom; public GenericDataTableConfigurator<T> withSortType(TableSortType sortType) { this.sortType = sortType; return this; } public GenericDataTableConfigurator<T> withColumnConfigurator( GenericDataTableColumnConfigurator<T> columnConfigurator) { this.columnConfigurator = columnConfigurator; return this; } public GenericDataTableConfigurator<T> withRowItemClass(Class rowItemClass) { this.rowItemClass = rowItemClass; return this; } public GenericDataTableConfigurator<T> withRowsPerPage(int rowsPerPage) { this.rowsPerPage = rowsPerPage; return this; } public GenericDataTableConfigurator<T> withInitialSortOrder(ColumnSortOrder initialSortOrder) { this.initialSortOrder = initialSortOrder; return this; } public GenericDataTableConfigurator<T> withInitialSortColumn(String initialSortColumn) { this.initialSortColumn = initialSortColumn; return this; } public GenericDataTableConfigurator<T> withColumns(String... columns) { this.columns = columns; return this; } public GenericDataTableConfigurator<T> withSortColumns(String... sortColumns) { this.sortColumns = sortColumns; return this; } public GenericDataTableColumnConfigurator<T> getColumnConfigurator() { if (columnConfigurator != null) return columnConfigurator; if (columns != null) return new GenericDataTableColumnConfigurator<T>(Arrays.asList(columns), Arrays.asList(sortColumns)); return null; } public GenericDataTableConfigurator<T> withNavigationBar(TableItemPosition navigationbarPosition) { this.navigationbarPosition = navigationbarPosition; return this; } }