diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2014-09-19 12:30:57 +0300 |
---|---|---|
committer | Johannes Dahlström <johannesd@vaadin.com> | 2014-09-19 16:40:24 +0300 |
commit | 48e208c78e1ca2227d422985e4084a8b1ed7304f (patch) | |
tree | 63e283d543bf6bf8037ce31c79b77711f37aae80 /server/src/com | |
parent | bb286a0c177551269a9d1eccc02978beeb71a4ee (diff) | |
download | vaadin-framework-48e208c78e1ca2227d422985e4084a8b1ed7304f.tar.gz vaadin-framework-48e208c78e1ca2227d422985e4084a8b1ed7304f.zip |
Add Property and Item change notifiers for generated properties (#13334)
Change-Id: I35a212b7f32f7c75333ee394f6dc102802d4d46e
Diffstat (limited to 'server/src/com')
-rw-r--r-- | server/src/com/vaadin/data/util/GeneratedPropertyContainer.java | 80 |
1 files changed, 76 insertions, 4 deletions
diff --git a/server/src/com/vaadin/data/util/GeneratedPropertyContainer.java b/server/src/com/vaadin/data/util/GeneratedPropertyContainer.java index 979f622300..4dd190908e 100644 --- a/server/src/com/vaadin/data/util/GeneratedPropertyContainer.java +++ b/server/src/com/vaadin/data/util/GeneratedPropertyContainer.java @@ -39,8 +39,9 @@ import com.vaadin.ui.components.grid.sort.SortOrder; * @since * @author Vaadin Ltd */ -public class GeneratedPropertyContainer implements Container.Indexed, - Container.Sortable, Container.Filterable { +public class GeneratedPropertyContainer extends AbstractContainer implements + Container.Indexed, Container.Sortable, Container.Filterable, + Container.PropertySetChangeNotifier, Container.ItemSetChangeNotifier { private final Container.Indexed wrappedContainer; private final Map<Object, PropertyValueGenerator<?>> propertyGenerators; @@ -148,15 +149,43 @@ public class GeneratedPropertyContainer implements Container.Indexed, public GeneratedPropertyContainer(Container.Indexed container) { wrappedContainer = container; propertyGenerators = new HashMap<Object, PropertyValueGenerator<?>>(); + if (wrappedContainer instanceof Sortable) { sortableContainer = (Sortable) wrappedContainer; } + if (wrappedContainer instanceof Filterable) { activeFilters = new HashMap<Filter, List<Filter>>(); filterableContainer = (Filterable) wrappedContainer; } else { activeFilters = null; } + + // ItemSetChangeEvents + if (wrappedContainer instanceof ItemSetChangeNotifier) { + ((ItemSetChangeNotifier) wrappedContainer) + .addItemSetChangeListener(new ItemSetChangeListener() { + + @Override + public void containerItemSetChange( + ItemSetChangeEvent event) { + fireItemSetChange(); + } + }); + } + + // PropertySetChangeEvents + if (wrappedContainer instanceof PropertySetChangeNotifier) { + ((PropertySetChangeNotifier) wrappedContainer) + .addPropertySetChangeListener(new PropertySetChangeListener() { + + @Override + public void containerPropertySetChange( + PropertySetChangeEvent event) { + fireContainerPropertySetChange(); + } + }); + } } /* Functions related to generated properties */ @@ -174,7 +203,7 @@ public class GeneratedPropertyContainer implements Container.Indexed, public void addGeneratedProperty(Object propertyId, PropertyValueGenerator<?> generator) { propertyGenerators.put(propertyId, generator); - // TODO: Fire event + fireContainerPropertySetChange(); } /** @@ -187,7 +216,7 @@ public class GeneratedPropertyContainer implements Container.Indexed, public void removeGeneratedProperty(Object propertyId) { if (propertyGenerators.containsKey(propertyId)) { propertyGenerators.remove(propertyId); - // TODO: Fire event + fireContainerPropertySetChange(); } } @@ -218,6 +247,49 @@ public class GeneratedPropertyContainer implements Container.Indexed, } } + /* Listener functionality */ + + @Override + public void addItemSetChangeListener(ItemSetChangeListener listener) { + super.addItemSetChangeListener(listener); + } + + @Override + public void addListener(ItemSetChangeListener listener) { + super.addListener(listener); + } + + @Override + public void removeItemSetChangeListener(ItemSetChangeListener listener) { + super.removeItemSetChangeListener(listener); + } + + @Override + public void removeListener(ItemSetChangeListener listener) { + super.removeListener(listener); + } + + @Override + public void addPropertySetChangeListener(PropertySetChangeListener listener) { + super.addPropertySetChangeListener(listener); + } + + @Override + public void addListener(PropertySetChangeListener listener) { + super.addListener(listener); + } + + @Override + public void removePropertySetChangeListener( + PropertySetChangeListener listener) { + super.removePropertySetChangeListener(listener); + } + + @Override + public void removeListener(PropertySetChangeListener listener) { + super.removeListener(listener); + } + /* Filtering functionality */ @Override |