in tapestry-contrib/src/org/apache/tapestry/contrib/table/components/TableView.java [269:327]
protected ITableColumnModel getTableColumnModel()
{
Object objColumns = getColumns();
if (objColumns == null)
return null;
if (objColumns instanceof ITableColumnModel)
{
return (ITableColumnModel) objColumns;
}
if (objColumns instanceof Iterator)
{
// convert to List
Iterator objColumnsIterator = (Iterator) objColumns;
List arrColumnsList = new ArrayList();
CollectionUtils.addAll(arrColumnsList, objColumnsIterator);
objColumns = arrColumnsList;
}
if (objColumns instanceof List)
{
// validate that the list contains only ITableColumn instances
List arrColumnsList = (List) objColumns;
int nColumnsNumber = arrColumnsList.size();
for (int i = 0; i < nColumnsNumber; i++)
{
if (!(arrColumnsList.get(i) instanceof ITableColumn))
throw new ApplicationRuntimeException(
TableUtils.format("columns-only-please", getExtendedId()));
}
//objColumns = arrColumnsList.toArray(new ITableColumn[nColumnsNumber]);
return new SimpleTableColumnModel(arrColumnsList);
}
if (objColumns instanceof ITableColumn[])
{
return new SimpleTableColumnModel((ITableColumn[]) objColumns);
}
if (objColumns instanceof String)
{
String strColumns = (String) objColumns;
if (getColumnsBinding().isInvariant())
{
// if the binding is invariant, create the columns only once
if (m_objColumnModel == null)
m_objColumnModel = generateTableColumnModel(strColumns);
return m_objColumnModel;
}
// if the binding is not invariant, create them every time
return generateTableColumnModel(strColumns);
}
throw new ApplicationRuntimeException(
TableUtils.format("invalid-table-columns", getExtendedId(), objColumns.getClass()));
}