Coverage Report - org.kuali.student.common.ui.client.widgets.table.scroll.DefaultTableModel
 
Classes in this File Line Coverage Branch Coverage Complexity
DefaultTableModel
0%
0/84
0%
0/34
1.905
DefaultTableModel$1
0%
0/6
0%
0/2
1.905
 
 1  
 package org.kuali.student.common.ui.client.widgets.table.scroll;
 2  
 
 3  
 import com.google.gwt.event.dom.client.ClickEvent;
 4  
 import com.google.gwt.event.dom.client.ClickHandler;
 5  
 import com.google.gwt.user.client.DOM;
 6  
 import com.google.gwt.user.client.ui.CheckBox;
 7  
 
 8  
 import java.util.ArrayList;
 9  
 import java.util.Collections;
 10  
 import java.util.List;
 11  
 
 12  0
 public class DefaultTableModel extends AbstractTableModel {
 13  0
     private ArrayList<Column> columnList = new ArrayList<Column>();
 14  0
     private ArrayList<Row> rowList = new ArrayList<Row>();
 15  0
     private ArrayList<Column> sortedColumnList = new ArrayList<Column>();
 16  0
     private int sortableColumnCount = 1;
 17  0
     private boolean moreData = true;
 18  0
     private boolean multipleSelectable = true;
 19  
     private int currentRowIndex;
 20  
 
 21  
 
 22  0
     Column rowHeader = new Column();
 23  
 
 24  
     public void installCheckBoxRowHeaderColumn() {
 25  0
         columnList.remove(rowHeader);
 26  0
         rowHeader.setId("RowHeader");
 27  0
         rowHeader.setName("RowHeader");
 28  0
         final CheckBox checkBox = new CheckBox();
 29  0
         checkBox.setTabIndex(-1);
 30  0
         checkBox.addClickHandler(new ClickHandler() {
 31  
             @Override
 32  
             public void onClick(ClickEvent event) {
 33  0
                 int count = getRowCount();
 34  0
                 for (int i = 0; i < count; i++) {
 35  0
                     getRow(i).setSelected(checkBox.getValue());
 36  
                 }
 37  0
                 fireTableDataChanged();
 38  0
             }
 39  
         });
 40  0
         DOM.setStyleAttribute(checkBox.getElement(), "style", "padding-right: 0.8em");
 41  0
         rowHeader.setColumnTitleWidget(checkBox);
 42  0
         rowHeader.setWidth("40px");
 43  0
         rowHeader.setVisible(true);
 44  
 
 45  0
         columnList.add(0, rowHeader);
 46  0
     }
 47  
 
 48  
     public void addRow(Row row) {
 49  0
         rowList.add(row);
 50  0
     }
 51  
 
 52  
     public void insertRow(int index, Row row) {
 53  0
         rowList.add(index, row);
 54  0
     }
 55  
 
 56  
     public void addColumn(Column col) {
 57  0
         columnList.add(col);
 58  0
     }
 59  
 
 60  
     public void insertColumn(int index, Column col) {
 61  0
         columnList.add(index, col);
 62  0
     }
 63  
 
 64  
     public boolean isMultipleSelectable() {
 65  0
         return multipleSelectable;
 66  
     }
 67  
 
 68  
     @Override
 69  
     public void setCurrentIndex(int index) {
 70  0
         if (index != currentRowIndex && currentRowIndex != -1){
 71  0
                 if(currentRowIndex < rowList.size()){
 72  0
                         rowList.get(currentRowIndex).setHighlighted(false);
 73  
                 }
 74  
         }
 75  0
         currentRowIndex = index;
 76  0
     }
 77  
 
 78  
     @Override
 79  
     public int getCurrentIndex() {
 80  0
         return currentRowIndex;
 81  
     }
 82  
 
 83  
     @Override
 84  
     public void setSelectedRow(int index) {
 85  0
         for (int rowIndex = 0; rowIndex < getRowCount(); rowIndex++) {
 86  0
             Row currentRow = rowList.get(rowIndex);
 87  0
             if (rowIndex == index) {
 88  0
                 currentRow.setSelected(true);
 89  0
             } else if (!isMultipleSelectable()) {
 90  0
                 currentRow.setSelected(false);
 91  
             }
 92  
         }
 93  0
     }
 94  
 
 95  
     public void setMultipleSelectable(boolean value) {
 96  0
         multipleSelectable = value;
 97  0
     }
 98  
 
 99  
     public void setMoreData(boolean hasMoreData) {
 100  0
         moreData = hasMoreData;
 101  0
     }
 102  
 
 103  
     public boolean getMoreData() {
 104  0
         return moreData;
 105  
     }
 106  
 
 107  
     public int getRowCount() {
 108  0
         return rowList.size();
 109  
     }
 110  
 
 111  
     public void sort(Column column) {
 112  0
         if (column.isSortable() == false) {
 113  0
             return;
 114  
         }
 115  0
         if (sortedColumnList.contains(column) == false) {
 116  0
             if (sortedColumnList.size() >= sortableColumnCount) {
 117  0
                 Column removed = sortedColumnList.remove(0);
 118  0
                 removed.setSortDirection(Column.NotOrdered);
 119  
             }
 120  0
             sortedColumnList.add(column);
 121  
 
 122  
         }
 123  
 
 124  0
         column.changeSortDirection();
 125  0
         RowComparator comparator = column.getComparator();
 126  0
         if (comparator != null) {
 127  0
             Collections.sort(rowList, comparator);
 128  
         }
 129  0
         super.fireTableStructureChanged();
 130  0
     }
 131  
 
 132  
     public Row getRow(int rowIndex) {
 133  0
         return rowList.get(rowIndex);
 134  
     }
 135  
 
 136  
     public List<Row> getSelectedRows() {
 137  0
         ArrayList<Row> selectedRows = new ArrayList<Row>();
 138  0
         for (Row row : rowList) {
 139  0
             if (row.isSelected()) {
 140  0
                 selectedRows.add(row);
 141  
             }
 142  
         }
 143  0
         return selectedRows;
 144  
     }
 145  
 
 146  
     public Column getColumn(int columnIndex) {
 147  0
         ArrayList<Column> list = new ArrayList<Column>();
 148  0
         for (Column col : columnList) {
 149  0
             if (col.isVisible()) {
 150  0
                 list.add(col);
 151  
             }
 152  
         }
 153  0
         return list.get(columnIndex);
 154  
     }
 155  
 
 156  
     public int getColumnCount() {
 157  0
         int count = 0;
 158  0
         for (Column col : columnList) {
 159  0
             if (col.isVisible()) {
 160  0
                 count++;
 161  
             }
 162  
         }
 163  0
         return count;
 164  
     }
 165  
 
 166  
     public void clearRows() {
 167  0
         rowList = new ArrayList<Row>();
 168  0
         super.fireTableDataChanged();
 169  0
     }
 170  
 
 171  
     public void selectFirstRow() {
 172  0
         if (!rowList.isEmpty()) {
 173  0
             currentRowIndex = 0;
 174  0
             rowList.get(0).setHighlighted(true);
 175  
         }
 176  0
     }
 177  
 }