summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2014-07-09 11:03:08 +0300
committerTeemu Suo-Anttila <teemusa@vaadin.com>2014-07-10 10:27:41 +0300
commitefa97eafaed3a6803535ecb867b1dd90792d233b (patch)
treea8058db74f3ddb147a4a17503bec7d611daba28a /server
parentc3026bec50d371d9fe172f76fd11528e95ffa88e (diff)
downloadvaadin-framework-efa97eafaed3a6803535ecb867b1dd90792d233b.tar.gz
vaadin-framework-efa97eafaed3a6803535ecb867b1dd90792d233b.zip
Server-side sorting updates data on client-side (#13334)
Change-Id: If4576ed8605c4795d6edaa2f6d36cdb2eb9e8440
Diffstat (limited to 'server')
-rw-r--r--server/src/com/vaadin/data/RpcDataProviderExtension.java16
1 files changed, 11 insertions, 5 deletions
diff --git a/server/src/com/vaadin/data/RpcDataProviderExtension.java b/server/src/com/vaadin/data/RpcDataProviderExtension.java
index 801b925e2a..f731e4575d 100644
--- a/server/src/com/vaadin/data/RpcDataProviderExtension.java
+++ b/server/src/com/vaadin/data/RpcDataProviderExtension.java
@@ -583,11 +583,17 @@ public class RpcDataProviderExtension extends AbstractExtension {
}
else {
- // TODO no diff info available, redraw everything
- throw new UnsupportedOperationException("bare "
- + "ItemSetChangeEvents are currently "
- + "not supported, use a container that "
- + "uses AddItemEvents and RemoveItemEvents.");
+ Range visibleRows = activeRowHandler.activeRange;
+ List<?> itemIds = container.getItemIds(visibleRows.getStart(),
+ visibleRows.length());
+
+ keyMapper.removeActiveRows(keyMapper.activeRange);
+ keyMapper.addActiveRows(visibleRows, visibleRows.getStart(),
+ itemIds);
+
+ pushRows(visibleRows.getStart(), itemIds);
+ activeRowHandler.setActiveRows(visibleRows.getStart(),
+ visibleRows.length());
}
}
};