Package groovy.util
Class ObservableMap
- java.lang.Object
-
- groovy.util.ObservableMap
-
- All Implemented Interfaces:
Map
public class ObservableMap extends Object implements 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:// 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
-
Field Summary
Fields Modifier and Type Field Description static String
CLEARED_PROPERTY
static String
CONTENT_PROPERTY
static String
SIZE_PROPERTY
-
Constructor Summary
Constructors Constructor Description ObservableMap()
ObservableMap(Closure test)
ObservableMap(Map delegate)
ObservableMap(Map delegate, Closure test)
-
Method Summary
-
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 Detail
-
SIZE_PROPERTY
public static final String SIZE_PROPERTY
- See Also:
- Constant Field Values
-
CONTENT_PROPERTY
public static final String CONTENT_PROPERTY
- See Also:
- Constant Field Values
-
CLEARED_PROPERTY
public static final String CLEARED_PROPERTY
- See Also:
- Constant Field Values
-
-
Method Detail
-
getMapDelegate
protected Map getMapDelegate()
-
getTest
protected Closure getTest()
-
getContent
public Map getContent()
-
firePropertyClearedEvent
protected void firePropertyClearedEvent(Map values)
-
firePropertyUpdatedEvent
protected void firePropertyUpdatedEvent(Object key, Object oldValue, Object newValue)
-
fireMultiPropertyEvent
protected void fireMultiPropertyEvent(List<ObservableMap.PropertyEvent> events)
-
fireMultiPropertyEvent
protected void fireMultiPropertyEvent(ObservableMap.PropertyEvent[] events)
-
firePropertyEvent
protected void firePropertyEvent(ObservableMap.PropertyEvent event)
-
fireSizeChangedEvent
protected void fireSizeChangedEvent(int oldValue, int newValue)
-
containsKey
public boolean containsKey(Object key)
- Specified by:
containsKey
in interfaceMap
-
containsValue
public boolean containsValue(Object value)
- Specified by:
containsValue
in interfaceMap
-
equals
public boolean equals(Object o)
-
hashCode
public int hashCode()
-
getSize
public int getSize()
-
values
public Collection values()
-
addPropertyChangeListener
public void addPropertyChangeListener(PropertyChangeListener listener)
-
addPropertyChangeListener
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
-
getPropertyChangeListeners
public PropertyChangeListener[] getPropertyChangeListeners()
-
getPropertyChangeListeners
public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
-
removePropertyChangeListener
public void removePropertyChangeListener(PropertyChangeListener listener)
-
removePropertyChangeListener
public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
-
hasListeners
public boolean hasListeners(String propertyName)
-
-