Package groovy.util
Class ObservableMap
java.lang.Object
groovy.util.ObservableMap
- All Implemented Interfaces:
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
Modifier and TypeClassDescriptionstatic enum
static class
static class
static class
static class
static class
static class
-
Field Summary
-
Constructor Summary
ConstructorDescriptionObservableMap
(Closure test) ObservableMap
(Map delegate) ObservableMap
(Map delegate, Closure test) -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
addPropertyChangeListener
(String propertyName, PropertyChangeListener listener) void
clear()
boolean
containsKey
(Object key) boolean
containsValue
(Object value) entrySet()
boolean
protected void
protected void
protected void
firePropertyAddedEvent
(Object key, Object value) protected void
firePropertyClearedEvent
(Map values) protected void
protected void
firePropertyRemovedEvent
(Object key, Object value) protected void
firePropertyUpdatedEvent
(Object key, Object oldValue, Object newValue) protected void
fireSizeChangedEvent
(int oldValue, int newValue) protected Map
getPropertyChangeListeners
(String propertyName) int
getSize()
protected Closure
getTest()
int
hashCode()
boolean
hasListeners
(String propertyName) boolean
isEmpty()
keySet()
void
void
void
removePropertyChangeListener
(String propertyName, PropertyChangeListener listener) int
size()
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
- See Also:
-
CONTENT_PROPERTY
- See Also:
-
CLEARED_PROPERTY
- See Also:
-
-
Constructor Details
-
ObservableMap
public ObservableMap() -
ObservableMap
-
ObservableMap
-
ObservableMap
-
-
Method Details
-
getMapDelegate
-
getTest
-
getContent
-
firePropertyClearedEvent
-
firePropertyAddedEvent
-
firePropertyUpdatedEvent
-
fireMultiPropertyEvent
-
fireMultiPropertyEvent
-
firePropertyRemovedEvent
-
firePropertyEvent
-
fireSizeChangedEvent
protected void fireSizeChangedEvent(int oldValue, int newValue) -
clear
public void clear() -
containsKey
- Specified by:
containsKey
in interfaceMap
-
containsValue
- Specified by:
containsValue
in interfaceMap
-
entrySet
-
equals
-
get
-
hashCode
public int hashCode() -
isEmpty
public boolean isEmpty() -
keySet
-
put
-
putAll
-
remove
-
size
public int size() -
getSize
public int getSize() -
values
-
addPropertyChangeListener
-
addPropertyChangeListener
-
getPropertyChangeListeners
-
getPropertyChangeListeners
-
removePropertyChangeListener
-
removePropertyChangeListener
-
hasListeners
-