in tapestry-contrib/src/org/apache/tapestry/contrib/table/components/TableUtils.java [120:189]
public static ITableColumnModel generateTableColumnModel(String strDesc, IComponent objComponent, IComponent objColumnSettingsContainer)
{
if (strDesc == null)
return null;
List arrColumns = new ArrayList();
boolean bFormColumns = false;
while (strDesc.startsWith("*"))
{
strDesc = strDesc.substring(1);
bFormColumns = true;
}
StringTokenizer objTokenizer = new StringTokenizer(strDesc, ",");
while (objTokenizer.hasMoreTokens())
{
String strToken = objTokenizer.nextToken().trim();
if (strToken.startsWith("="))
{
String strColumnExpression = strToken.substring(1);
IResourceResolver objResolver = objColumnSettingsContainer.getPage().getEngine().getResourceResolver();
Object objColumn =
OgnlUtils.get(strColumnExpression, objResolver, objColumnSettingsContainer);
if (!(objColumn instanceof ITableColumn))
throw new ApplicationRuntimeException(
format("not-a-column", objComponent.getExtendedId(), strColumnExpression));
arrColumns.add(objColumn);
continue;
}
boolean bSortable = true;
if (strToken.startsWith("!"))
{
strToken = strToken.substring(1);
bSortable = false;
}
StringTokenizer objColumnTokenizer = new StringTokenizer(strToken, ":");
String strName = "";
if (objColumnTokenizer.hasMoreTokens())
strName = objColumnTokenizer.nextToken();
String strExpression = strName;
if (objColumnTokenizer.hasMoreTokens())
strExpression = objColumnTokenizer.nextToken();
String strDisplayName = strName;
if (objColumnTokenizer.hasMoreTokens())
{
strDisplayName = strExpression;
strExpression = objColumnTokenizer.nextToken();
}
ExpressionTableColumn objColumn =
new ExpressionTableColumn(strName, strDisplayName, strExpression, bSortable);
if (bFormColumns)
objColumn.setColumnRendererSource(SimpleTableColumn.FORM_COLUMN_RENDERER_SOURCE);
if (objColumnSettingsContainer != null)
objColumn.loadSettings(objColumnSettingsContainer);
arrColumns.add(objColumn);
}
return new SimpleTableColumnModel(arrColumns);
}