ColumnSpec.java :  » GWT » gwtoolbox » org » gwtoolbox » widget » client » table » datagrid » column » Java Open Source

Java Open Source » GWT » gwtoolbox 
gwtoolbox » org » gwtoolbox » widget » client » table » datagrid » column » ColumnSpec.java
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 + "'");
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.