001/**
002 * Copyright 2010 The Kuali Foundation Licensed under the
003 * Educational Community License, Version 2.0 (the "License"); you may
004 * not use this file except in compliance with the License. You may
005 * obtain a copy of the License at
006 *
007 * http://www.osedu.org/licenses/ECL-2.0
008 *
009 * Unless required by applicable law or agreed to in writing,
010 * software distributed under the License is distributed on an "AS IS"
011 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
012 * or implied. See the License for the specific language governing
013 * permissions and limitations under the License.
014 */
015
016package org.kuali.student.common.ui.client.widgets.table;
017
018import java.util.ArrayList;
019import java.util.List;
020
021import com.google.gwt.user.client.DOM;
022import com.google.gwt.user.client.Element;
023import com.google.gwt.user.client.ui.Composite;
024import com.google.gwt.user.client.ui.FlexTable;
025import com.google.gwt.user.client.ui.Widget;
026
027public class SimpleWidgetTable extends Composite{
028        private FlexTable simpleTable = new FlexTable();
029        private int rowCount = 0;
030        public List<String> columnList = new ArrayList<String>();
031        
032        private static class TableRow{
033
034                public List<Widget> widgetList = new ArrayList<Widget>();
035                public List<Widget> getWidgetList() {
036                        return widgetList;
037                }
038                public void setWidgetList(List<Widget> widgetList) {
039                        this.widgetList = widgetList;
040                }
041                public TableRow(List<Widget> widgetList){
042                        this.widgetList = widgetList;
043                }
044        }
045
046        public SimpleWidgetTable(List<String> columnNames){
047                Element thead = DOM.createElement("thead");
048                Element tr = DOM.createTR();
049                int columnPercentage = 100/columnNames.size();
050                
051                
052                Element table = simpleTable.getElement();
053                 DOM.appendChild(thead,tr); 
054                 for (String columnName: columnNames) {
055                         Element th = DOM.createTH(); 
056                         DOM.appendChild(tr,th);
057                         DOM.setInnerText(th,columnName);
058                         th.setAttribute("width",  columnPercentage + "%");
059                 }
060
061                DOM.insertChild(table,thead,0);
062
063                simpleTable.setWidth("100%");
064                simpleTable.setStyleName("ks-table-plain");
065                this.initWidget(simpleTable);
066                
067        }
068        
069        public void addRow(List<Widget> widgets){
070                int columnNum = 0;
071                TableRow row = new TableRow(widgets);
072                for(Widget w: row.getWidgetList()){
073                        simpleTable.setWidget(rowCount, columnNum, w);
074                        columnNum++;
075                }
076                rowCount++;
077        }
078        
079        public void clear(){
080                rowCount = 0;
081                for(int i=0; i < simpleTable.getRowCount(); i++){
082                        simpleTable.removeRow(i);
083                }
084        }
085}