Package groovy.util
Class ObservableMap
java.lang.Object
groovy.util.ObservableMap
- All Implemented Interfaces:
java.util.Map
public class ObservableMap
extends java.lang.Object
implements java.util.Map
Map decorator that will trigger PropertyChangeEvents when a value changes.
An optional Closure may be specified and will work as a filter, if it returns true the property will trigger an event (if the value indeed changed), otherwise it won't. The Closure may receive 1 or 2 parameters, the single one being the value, the other one both the key and value, for example:
An optional Closure may be specified and will work as a filter, if it returns true the property will trigger an event (if the value indeed changed), otherwise it won't. The Closure may receive 1 or 2 parameters, the single one being the value, the other one both the key and value, for example:
// skip all properties whose value is a closure def map = new ObservableMap( {!(it instanceof Closure)} ) // skip all properties whose name matches a regex def map = new ObservableMap( { name, value -> !(name =~ /[A-Z+]/) } )The current implementation will trigger specialized events in the following scenarios, you need not register a different listener as those events extend from PropertyChangeEvent
- ObservableMap.PropertyAddedEvent - a new property is added to the map
- ObservableMap.PropertyRemovedEvent - a property is removed from the map
- ObservableMap.PropertyUpdatedEvent - a property changes value (same as regular PropertyChangeEvent)
- ObservableMap.PropertyClearedEvent - all properties have been removed from the map
- ObservableMap.MultiPropertyEvent - triggered by calling map.putAll(), contains Added|Updated events
Bound properties
- content - read-only.
- size - read-only.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ObservableMap.ChangeType
static class
ObservableMap.MultiPropertyEvent
static class
ObservableMap.PropertyAddedEvent
static class
ObservableMap.PropertyClearedEvent
static class
ObservableMap.PropertyEvent
static class
ObservableMap.PropertyRemovedEvent
static class
ObservableMap.PropertyUpdatedEvent
Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry<K extends java.lang.Object,V extends java.lang.Object>
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CLEARED_PROPERTY
static java.lang.String
CONTENT_PROPERTY
static java.lang.String
SIZE_PROPERTY
-
Constructor Summary
Constructors Constructor Description ObservableMap()
ObservableMap(Closure test)
ObservableMap(java.util.Map delegate)
ObservableMap(java.util.Map delegate, Closure test)
-
Method Summary
Modifier and Type Method Description void
addPropertyChangeListener(java.beans.PropertyChangeListener listener)
void
addPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
void
clear()
boolean
containsKey(java.lang.Object key)
boolean
containsValue(java.lang.Object value)
java.util.Set
entrySet()
boolean
equals(java.lang.Object o)
protected void
fireMultiPropertyEvent(ObservableMap.PropertyEvent[] events)
protected void
fireMultiPropertyEvent(java.util.List<ObservableMap.PropertyEvent> events)
protected void
firePropertyAddedEvent(java.lang.Object key, java.lang.Object value)
protected void
firePropertyClearedEvent(java.util.Map values)
protected void
firePropertyEvent(ObservableMap.PropertyEvent event)
protected void
firePropertyRemovedEvent(java.lang.Object key, java.lang.Object value)
protected void
firePropertyUpdatedEvent(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)
protected void
fireSizeChangedEvent(int oldValue, int newValue)
java.lang.Object
get(java.lang.Object key)
java.util.Map
getContent()
protected java.util.Map
getMapDelegate()
java.beans.PropertyChangeListener[]
getPropertyChangeListeners()
java.beans.PropertyChangeListener[]
getPropertyChangeListeners(java.lang.String propertyName)
int
getSize()
protected Closure
getTest()
int
hashCode()
boolean
hasListeners(java.lang.String propertyName)
boolean
isEmpty()
java.util.Set
keySet()
java.lang.Object
put(java.lang.Object key, java.lang.Object value)
void
putAll(java.util.Map map)
java.lang.Object
remove(java.lang.Object key)
void
removePropertyChangeListener(java.beans.PropertyChangeListener listener)
void
removePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
int
size()
java.util.Collection
values()
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Field Details
-
SIZE_PROPERTY
public static final java.lang.String SIZE_PROPERTY- See Also:
- Constant Field Values
-
CONTENT_PROPERTY
public static final java.lang.String CONTENT_PROPERTY- See Also:
- Constant Field Values
-
CLEARED_PROPERTY
public static final java.lang.String CLEARED_PROPERTY- See Also:
- Constant Field Values
-
-
Constructor Details
-
ObservableMap
public ObservableMap() -
ObservableMap
-
ObservableMap
public ObservableMap(java.util.Map delegate) -
ObservableMap
-
-
Method Details
-
getMapDelegate
protected java.util.Map getMapDelegate() -
getTest
-
getContent
public java.util.Map getContent() -
firePropertyClearedEvent
protected void firePropertyClearedEvent(java.util.Map values) -
firePropertyAddedEvent
protected void firePropertyAddedEvent(java.lang.Object key, java.lang.Object value) -
firePropertyUpdatedEvent
protected void firePropertyUpdatedEvent(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue) -
fireMultiPropertyEvent
-
fireMultiPropertyEvent
-
firePropertyRemovedEvent
protected void firePropertyRemovedEvent(java.lang.Object key, java.lang.Object value) -
firePropertyEvent
-
fireSizeChangedEvent
protected void fireSizeChangedEvent(int oldValue, int newValue) -
clear
public void clear()- Specified by:
clear
in interfacejava.util.Map
-
containsKey
public boolean containsKey(java.lang.Object key)- Specified by:
containsKey
in interfacejava.util.Map
-
containsValue
public boolean containsValue(java.lang.Object value)- Specified by:
containsValue
in interfacejava.util.Map
-
entrySet
public java.util.Set entrySet()- Specified by:
entrySet
in interfacejava.util.Map
-
equals
public boolean equals(java.lang.Object o)- Specified by:
equals
in interfacejava.util.Map
- Overrides:
equals
in classjava.lang.Object
-
get
public java.lang.Object get(java.lang.Object key)- Specified by:
get
in interfacejava.util.Map
-
hashCode
public int hashCode()- Specified by:
hashCode
in interfacejava.util.Map
- Overrides:
hashCode
in classjava.lang.Object
-
isEmpty
public boolean isEmpty()- Specified by:
isEmpty
in interfacejava.util.Map
-
keySet
public java.util.Set keySet()- Specified by:
keySet
in interfacejava.util.Map
-
put
public java.lang.Object put(java.lang.Object key, java.lang.Object value)- Specified by:
put
in interfacejava.util.Map
-
putAll
public void putAll(java.util.Map map)- Specified by:
putAll
in interfacejava.util.Map
-
remove
public java.lang.Object remove(java.lang.Object key)- Specified by:
remove
in interfacejava.util.Map
-
size
public int size()- Specified by:
size
in interfacejava.util.Map
-
getSize
public int getSize() -
values
public java.util.Collection values()- Specified by:
values
in interfacejava.util.Map
-
addPropertyChangeListener
public void addPropertyChangeListener(java.beans.PropertyChangeListener listener) -
addPropertyChangeListener
public void addPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener) -
getPropertyChangeListeners
public java.beans.PropertyChangeListener[] getPropertyChangeListeners() -
getPropertyChangeListeners
public java.beans.PropertyChangeListener[] getPropertyChangeListeners(java.lang.String propertyName) -
removePropertyChangeListener
public void removePropertyChangeListener(java.beans.PropertyChangeListener listener) -
removePropertyChangeListener
public void removePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener) -
hasListeners
public boolean hasListeners(java.lang.String propertyName)
-