r97 - trunk/nuiton-gwt/src/main/java/org/nuiton/web/gwt/table
Author: jcouteau Date: 2011-07-30 03:28:16 +0200 (Sat, 30 Jul 2011) New Revision: 97 Url: http://nuiton.org/repositories/revision/nuiton-web/97 Log: #1642 : SortableFlexTable does not update correctly Modified: trunk/nuiton-gwt/src/main/java/org/nuiton/web/gwt/table/SortableFlexTableWithModel.java Modified: trunk/nuiton-gwt/src/main/java/org/nuiton/web/gwt/table/SortableFlexTableWithModel.java =================================================================== --- trunk/nuiton-gwt/src/main/java/org/nuiton/web/gwt/table/SortableFlexTableWithModel.java 2011-07-22 13:41:22 UTC (rev 96) +++ trunk/nuiton-gwt/src/main/java/org/nuiton/web/gwt/table/SortableFlexTableWithModel.java 2011-07-30 01:28:16 UTC (rev 97) @@ -34,6 +34,9 @@ implements TableModelListener, ClickHandler { SortableTableModel model; + + //number of rows for update + int rows = 0; public SortableFlexTableWithModel() { super(); @@ -53,7 +56,7 @@ this.model.removeTableModelListener(this); } this.model = model; - this.model.addTableModelListener(this); + getModel().addTableModelListener(this); } public SortableTableModel getModel() { @@ -66,8 +69,9 @@ int firstColumn = event.getColumn(); int lastColumn = event.getColumn(); int type = event.getType(); - - + + int oldRows = rows; + if (firstColumn == TableModelEvent.ALL_COLUMNS) { firstColumn = 0; lastColumn = getColumnCount() - 1; @@ -96,17 +100,29 @@ if (firstRow == lastRow) { Object value = model.getValueAt(i, firstRow); setValueAt(value, firstRow, i); + rows = 1; } else { - for (int j = firstRow; j <= lastRow; j++) { + for (int j = firstRow; j < lastRow; j++) { if (j < model.getRowCount()) { Object value = model.getValueAt(i, j); setValueAt(value, j, i); + rows = j+1; } else { break; } } } + + } + + for (int i = rows; i < oldRows; i++) { + //remove all rows that are not in model anymore + if ((rows+1) < getRowCount()){ + removeRow(rows+1); + } + } + } }
participants (1)
-
jcouteau@users.nuiton.org