diff options
author | Denis Anisimov <denis@vaadin.com> | 2014-08-24 14:48:03 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2014-11-11 09:50:52 +0000 |
commit | 3b0ed7a67553ca48e40f9c78da5655256a1fe5ea (patch) | |
tree | a6719a7fec8b9fcbbad56400660f6510e500ddda /server/src/com/vaadin/ui/AbstractSelect.java | |
parent | deebc28ae7069b54e96b03e4067de63df99b78e0 (diff) | |
download | vaadin-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.java | 19 |
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 |