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.event.dom.client.ScrollEvent; 6 import com.google.gwt.event.dom.client.ScrollHandler; 7 import com.google.gwt.user.client.ui.Button; 8 import com.google.gwt.user.client.ui.Composite; 9 import com.google.gwt.user.client.ui.VerticalPanel; 10 import com.google.gwt.user.client.ui.Widget; 11 12 public class TableDemoPanel extends Composite{ 13 DefaultTableModel tableModel = new DefaultTableModel(); 14 public TableDemoPanel(){ 15 super.initWidget(createDemoPage()); 16 } 17 private Widget createDemoPage(){ 18 VerticalPanel p = new VerticalPanel(); 19 tableModel.setMultipleSelectable(true); 20 final Table table = createTable(); 21 p.add(table); 22 table.getScrollPanel().addScrollHandler(new ScrollHandler(){ 23 @Override 24 public void onScroll(ScrollEvent event) { 25 System.out.println(table.getScrollPanel().getOffsetHeight()); 26 System.out.println(table.getScrollPanel().getScrollPosition()); 27 } 28 }); 29 table.getScrollPanel().setHeight("700px"); 30 Button appendDataButton = new Button("Append Data"); 31 appendDataButton.addClickHandler(new ClickHandler(){ 32 @Override 33 public void onClick(ClickEvent event) { 34 Course c = new Course(); 35 c.setId(1); 36 c.setName("1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 37 tableModel.addRow(new CourseRow(c)); 38 39 c = new Course(); 40 c.setId(2); 41 c.setName("b"); 42 tableModel.addRow(new CourseRow(c)); 43 44 c = new Course(); 45 c.setId(3); 46 c.setName("c"); 47 tableModel.addRow(new CourseRow(c)); 48 49 c = new Course(); 50 c.setId(4); 51 c.setName("d"); 52 tableModel.addRow(new CourseRow(c)); 53 54 c = new Course(); 55 c.setId(4); 56 c.setName("d"); 57 tableModel.addRow(new CourseRow(c)); 58 59 c = new Course(); 60 c.setId(4); 61 c.setName("d"); 62 tableModel.addRow(new CourseRow(c)); 63 64 tableModel.fireTableDataChanged(); 65 } 66 67 }); 68 p.add(appendDataButton); 69 return p; 70 71 } 72 private Table createTable(){ 73 Column col1 = new Column(); 74 col1.setId("id"); 75 col1.setName("ID"); 76 col1.setWidth("100px"); 77 78 col1.setAscendingRowComparator(new CourseIdAscendingRowComparator()); 79 col1.setDescendingRowComparator(new CourseIdDescendingRowComparator()); 80 81 Column col2 = new Column(); 82 col2.setId("name"); 83 col2.setName("Name"); 84 col2.setWidth("300px"); 85 86 Column col3 = new Column(); 87 col3.setId("isFull"); 88 col3.setName("Full"); 89 col3.setWidth("500px"); 90 91 tableModel.installCheckBoxRowHeaderColumn(); 92 93 tableModel.addColumn(col1); 94 tableModel.addColumn(col2); 95 tableModel.addColumn(col3); 96 97 Table table = new Table(); 98 table.setTableModel(tableModel); 99 return table; 100 101 } 102 } 103 class CourseIdAscendingRowComparator extends RowComparator{ 104 @Override 105 public int compare(Row row0, Row row1) { 106 Integer id0 = (Integer)row0.getCellData("id"); 107 Integer id1 = (Integer)row1.getCellData("id"); 108 return id0.compareTo(id1); 109 } 110 111 } 112 class CourseIdDescendingRowComparator extends RowComparator{ 113 @Override 114 public int compare(Row row0, Row row1) { 115 Integer id0 = (Integer)row0.getCellData("id"); 116 Integer id1 = (Integer)row1.getCellData("id"); 117 return id1.compareTo(id0); 118 } 119 120 } 121 class CourseRow extends Row{ 122 private Course course; 123 public CourseRow(Course c){ 124 course = c; 125 } 126 127 @Override 128 public Object getCellData(String columnId) { 129 if ("id".equals(columnId)) { 130 return course.getId(); 131 } else if ("name".equals(columnId)) { 132 return course.getName(); 133 } else if ("isFull".equals(columnId)) { 134 return course.isFull(); 135 } 136 return null; 137 } 138 @Override 139 public void setCellData(String columnId, Object newValue) { 140 if(newValue == null){ 141 newValue = ""; 142 } 143 if ("id".equals(columnId)) { 144 course.setId(Integer.parseInt(newValue.toString())); 145 } else if ("name".equals(columnId)) { 146 course.setName(newValue.toString()); 147 } else if ("isFull".equals(columnId)) { 148 course.setFull((Boolean)newValue); 149 } 150 } 151 @Override 152 public String toString(){ 153 return course.getId()+""; 154 } 155 } 156 157 class Course { 158 private int id; 159 private String name; 160 private boolean isFull; 161 162 public boolean isFull() { 163 return isFull; 164 } 165 166 public void setFull(boolean isFull) { 167 this.isFull = isFull; 168 } 169 170 public int getId() { 171 return id; 172 } 173 174 public void setId(int id) { 175 this.id = id; 176 } 177 178 public String getName() { 179 return name; 180 } 181 182 public void setName(String name) { 183 this.name = name; 184 } 185 public String toString(){ 186 return ""+id; 187 } 188 }