summaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/ui/AbstractSelect.java
diff options
context:
space:
mode:
authorDenis Anisimov <denis@vaadin.com>2014-08-24 14:48:03 +0300
committerVaadin Code Review <review@vaadin.com>2014-11-11 09:50:52 +0000
commit3b0ed7a67553ca48e40f9c78da5655256a1fe5ea (patch)
treea6719a7fec8b9fcbbad56400660f6510e500ddda /server/src/com/vaadin/ui/AbstractSelect.java
parentdeebc28ae7069b54e96b03e4067de63df99b78e0 (diff)
downloadvaadin-framework-3b0ed7a67553ca48e40f9c78da5655256a1fe5ea.tar.gz
vaadin-framework-3b0ed7a67553ca48e40f9c78da5655256a1fe5ea.zip
Update selection after changes in underlying data source (#13580).
Change-Id: I6354d85bd6bc37b1cbb69f388559278d5a163256
Diffstat (limited to 'server/src/com/vaadin/ui/AbstractSelect.java')
-rw-r--r--server/src/com/vaadin/ui/AbstractSelect.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/server/src/com/vaadin/ui/AbstractSelect.java b/server/src/com/vaadin/ui/AbstractSelect.java
index b083db3183..2c4dd5be5d 100644
--- a/server/src/com/vaadin/ui/AbstractSelect.java
+++ b/server/src/com/vaadin/ui/AbstractSelect.java
@@ -1675,6 +1675,8 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
// Clears the item id mapping table
itemIdMapper.removeAll();
+ adjustSelection();
+
// Notify all listeners
fireItemSetChange();
}
@@ -1713,6 +1715,23 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
}
/**
+ * Removes orphaned ids from selection.
+ */
+ protected void adjustSelection() {
+ Object value = getValue();
+ if (isMultiSelect() && (value instanceof Collection)) {
+ Collection<?> collection = (Collection<?>) value;
+ for (Object id : collection) {
+ if (!containsId(id)) {
+ unselect(id);
+ }
+ }
+ } else if (!containsId(value)) {
+ unselect(value);
+ }
+ }
+
+ /**
* Implementation of item set change event.
*/
private static class ItemSetChangeEvent extends EventObject implements