org.pentaho.pac.ui.gwt.table.ColumnSupport.java Source code

Java tutorial

Introduction

Here is the source code for org.pentaho.pac.ui.gwt.table.ColumnSupport.java

Source

/*
 * This program is free software; you can redistribute it and/or modify it under the 
 * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software 
 * Foundation.
 *
 * You should have received a copy of the GNU Lesser General Public License along with this 
 * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html 
 * or from the Free Software Foundation, Inc., 
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 *
 * Copyright 2008 - 2009 Pentaho Corporation.  All rights reserved.
*/
package org.pentaho.pac.ui.gwt.table;

import java.util.List;

import org.pentaho.pac.ui.gwt.table.model.ColumnModel;
import org.pentaho.pac.ui.gwt.table.model.TableModel;

import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Widget;

public class ColumnSupport {

    private int colCount;

    private int aggregateWidth;
    private int[] columnAbsPos;

    private ColumnModel[] columns;

    private TableModel model;

    public ColumnSupport(TableModel model) {
        this.model = model;
        int colCount = model.getColumnCount();
        this.colCount = colCount;
        columnAbsPos = new int[colCount];
        columns = new ColumnModel[colCount];

        ColumnModel[] mcolumns = model.getColumnModel();

        for (int i = 0; i < mcolumns.length; i++) {
            columns[i] = mcolumns[i];
            columnAbsPos[i] = aggregateWidth;
            aggregateWidth += columns[i].getWidth();
        }
    }

    public int getWidth() {
        return aggregateWidth;
    }

    public int size() {
        return colCount;
    }

    public void addHeaders(AbsolutePanel where) {
        for (int i = 0; i < columns.length; i++) {

            Widget widget = columns[i].getHeader();

            where.add(widget, columnAbsPos[i], 0);
            if (model.getStyles() != null) {
                List<String> styleNames = model.getStyles().getStyleNames(TableStyles.Type.TABLE_HEADER_PANEL);
                if (styleNames != null && styleNames.size() > 0)
                    where.addStyleName(styleNames.get(0));

                List<String> lblstyleNames = model.getStyles().getStyleNames(TableStyles.Type.TABLE_HEADER_TEXT);
                if (lblstyleNames != null && lblstyleNames.size() > 0)
                    widget.addStyleName(lblstyleNames.get(0));

            }
            widget.setPixelSize(columns[i].getWidth(), model.getPixelHeaderHeight());
        }
    }

    public ColumnModel[] getColumns() {
        return columns;
    }

    public int[] getColPos() {
        return columnAbsPos;
    }

    public String[] getColumnNames() {
        String[] names = new String[columns.length];
        for (int i = 0; i < columns.length; i++)
            names[i] = columns[i].getName();

        return names;
    }
}