in tapestry-contrib/src/org/apache/tapestry/contrib/table/components/TableView.java [210:260]
protected ITableModel generateTableModel(SimpleTableState objState)
{
// create a new table state if none is passed
if (objState == null)
{
objState = new SimpleTableState();
objState.getSortingState().setSortColumn(getInitialSortColumn(), getInitialSortOrder());
}
// update the page size if set in the parameter
IBinding objPageSizeBinding = getPageSizeBinding();
if (objPageSizeBinding != null)
objState.getPagingState().setPageSize(objPageSizeBinding.getInt());
// get the column model. if not possible, return null.
ITableColumnModel objColumnModel = getTableColumnModel();
if (objColumnModel == null)
return null;
Object objSourceValue = getSource();
if (objSourceValue == null)
return null;
// if the source parameter is of type {@link IBasicTableModel},
// create and return an appropriate wrapper
if (objSourceValue instanceof IBasicTableModel)
return new BasicTableModelWrap(
(IBasicTableModel) objSourceValue,
objColumnModel,
objState);
// otherwise, the source parameter must contain the data to be displayed
ITableDataModel objDataModel = null;
if (objSourceValue instanceof Object[])
objDataModel = new SimpleListTableDataModel((Object[]) objSourceValue);
else if (objSourceValue instanceof List)
objDataModel = new SimpleListTableDataModel((List) objSourceValue);
else if (objSourceValue instanceof Collection)
objDataModel = new SimpleListTableDataModel((Collection) objSourceValue);
else if (objSourceValue instanceof Iterator)
objDataModel = new SimpleListTableDataModel((Iterator) objSourceValue);
if (objDataModel == null)
throw new ApplicationRuntimeException(
TableUtils.format(
"invalid-table-source",
getExtendedId(),
objSourceValue.getClass()));
return new SimpleTableModel(objDataModel, objColumnModel, objState);
}