summaryrefslogtreecommitdiffstats
path: root/server/src/com
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2014-09-19 12:30:57 +0300
committerJohannes Dahlström <johannesd@vaadin.com>2014-09-19 16:40:24 +0300
commit48e208c78e1ca2227d422985e4084a8b1ed7304f (patch)
tree63e283d543bf6bf8037ce31c79b77711f37aae80 /server/src/com
parentbb286a0c177551269a9d1eccc02978beeb71a4ee (diff)
downloadvaadin-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.java80
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