Browse Source

Remove unselected rows from selection on client side (#13008)

When server communicates the selected rows to the client side, client
side datastructure of selected row keys is updated such that also the
keys that has been unselected on server side are removed. This makes
the test MultiSelectWithRemovedRow to pass.

Change-Id: I7b6123436171972ecf345b07ddfb6d9965ca4f0c
tags/7.1.11
Jarno Rantala 10 years ago
parent
commit
f93c870fe9
1 changed files with 12 additions and 0 deletions
  1. 12
    0
      client/src/com/vaadin/client/ui/VScrollTable.java

+ 12
- 0
client/src/com/vaadin/client/ui/VScrollTable.java View File

@@ -1060,6 +1060,8 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
if (uidl.hasVariable("selected")) {
final Set<String> selectedKeys = uidl
.getStringArrayVariableAsSet("selected");
removeUnselectedRowKeys(selectedKeys);

if (scrollBody != null) {
Iterator<Widget> iterator = scrollBody.iterator();
while (iterator.hasNext()) {
@@ -1102,6 +1104,16 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
return keyboardSelectionOverRowFetchInProgress;
}

private void removeUnselectedRowKeys(final Set<String> selectedKeys) {
List<String> unselectedKeys = new ArrayList<String>(0);
for (String key : selectedRowKeys) {
if (!selectedKeys.contains(key)) {
unselectedKeys.add(key);
}
}
selectedRowKeys.removeAll(unselectedKeys);
}

/** For internal use only. May be removed or replaced in the future. */
public void updateSortingProperties(UIDL uidl) {
oldSortColumn = sortColumn;

Loading…
Cancel
Save