package org.gwtoolbox.widget.client.table.datagrid.column;
import java.util.ArrayList;
import java.util.List;
import org.gwtoolbox.widget.client.data.DataType;
import org.gwtoolbox.widget.client.table.datagrid.column.CellRenderer;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
/**
* @author Uri Boness
*/
public class ColumnSpec {
private List<Column> columns;
public ColumnSpec() {
this(new ArrayList<Column>());
}
public ColumnSpec(List<Column> columns) {
this.columns = columns;
}
public <T> ColumnSpec addFieldColumn(String name, String fieldName, DataType<T> type) {
return addFieldColumn(name, fieldName, type, HasHorizontalAlignment.ALIGN_LEFT);
}
public <T> ColumnSpec addFieldColumn(String name, String fieldName, DataType<T> type, HasHorizontalAlignment.HorizontalAlignmentConstant alignment) {
return addFieldColumn(name, fieldName, type, null, alignment);
}
public <T> ColumnSpec addFieldColumn(String name, String fieldName, DataType<T> type, String width) {
return addColumn(new FieldColumn<T>(name, fieldName, type, width));
}
public <T> ColumnSpec addFieldColumn(String name, String fieldName, DataType<T> type, String width, HasHorizontalAlignment.HorizontalAlignmentConstant alignment) {
Column columnDefinition = new FieldColumn<T>(name, fieldName, type, width);
columnDefinition.setHorizontalAlignment(alignment);
return addColumn(columnDefinition);
}
public <T> ColumnSpec addFieldColumn(String name, String fieldName, String width, DataType<T> type, CellRenderer<T> cellRenderer) {
Column<T> definition = new FieldColumn<T>(name, fieldName, type, width, cellRenderer);
return addColumn(definition);
}
public ColumnSpec addColumn(Column column) {
columns.add(column);
return this;
}
public List<Column> getColumns() {
return columns;
}
public Column getColumn(String fieldName) {
int index = getColumnIndex(fieldName);
return getColumn(index);
}
public Column getColumn(int index) {
return columns.get(index);
}
public int getColumnIndex(String fieldName) {
int index = 0;
for (Column column : columns) {
if ((column instanceof FieldColumn) && ((FieldColumn) column).getFieldName().equals(fieldName)) {
return index;
}
index++;
}
throw new IllegalArgumentException("Unknown field name '" + fieldName + "'");
}
}
|