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
Nested ClassesModifier and TypeClassDescriptionstatic enumEnumerates the specialized map change events.static classEvent fired when multiple property changes are aggregated.static classEvent fired when a property is added.static classEvent fired when the map is cleared.static classBase event type for observable map changes.static classEvent fired when a property is removed.static classEvent fired when a property value changes. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates an observable map backed by aLinkedHashMap.ObservableMap(Closure test) Creates an observable map backed by aLinkedHashMap.ObservableMap(Map delegate) Creates an observable map backed by the supplied delegate.ObservableMap(Map delegate, Closure test) Creates an observable map backed by the supplied delegate. -
Method Summary
Modifier and TypeMethodDescriptionvoidRegisters a listener for all observable map events.voidaddPropertyChangeListener(String propertyName, PropertyChangeListener listener) Registers a listener for a named bound property.voidclear()booleancontainsKey(Object key) booleancontainsValue(Object value) entrySet()booleanprotected voidFires a multi-property event from an event array.protected voidFires a multi-property event from a list of events.protected voidfirePropertyAddedEvent(Object key, Object value) Fires a property-added event.protected voidfirePropertyClearedEvent(Map values) Fires a map-cleared event.protected voidPublishes a property event to registered listeners.protected voidfirePropertyRemovedEvent(Object key, Object value) Fires a property-removed event.protected voidfirePropertyUpdatedEvent(Object key, Object oldValue, Object newValue) Fires a property-updated event.protected voidfireSizeChangedEvent(int oldValue, int newValue) Fires the bound size change event.Returns an unmodifiable snapshot view of the backing map.protected MapReturns the mutable backing map.Returns listeners registered for all properties.getPropertyChangeListeners(String propertyName) Returns listeners registered for a named property.intgetSize()Returns the current map size as a bound property value.protected ClosuregetTest()Returns the optional event filter closure.inthashCode()booleanhasListeners(String propertyName) Reports whether listeners are registered for a named property.booleanisEmpty()keySet()voidvoidRemoves a listener registered for all properties.voidremovePropertyChangeListener(String propertyName, PropertyChangeListener listener) Removes a listener registered for a named property.intsize()values()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Field Details
-
SIZE_PROPERTY
Bound property name for map size changes.- See Also:
-
CONTENT_PROPERTY
Bound property name for content changes.- See Also:
-
CLEARED_PROPERTY
Bound property name used for clear events.- See Also:
-
-
Constructor Details
-
ObservableMap
public ObservableMap()Creates an observable map backed by aLinkedHashMap. -
ObservableMap
Creates an observable map backed by aLinkedHashMap.- Parameters:
test- optional event filter
-
ObservableMap
Creates an observable map backed by the supplied delegate.- Parameters:
delegate- the backing map
-
ObservableMap
Creates an observable map backed by the supplied delegate.- Parameters:
delegate- the backing maptest- optional event filter
-
-
Method Details
-
getMapDelegate
Returns the mutable backing map.- Returns:
- the delegate map
-
getTest
Returns the optional event filter closure.- Returns:
- the event filter, or
null
-
getContent
Returns an unmodifiable snapshot view of the backing map.- Returns:
- the map content
-
firePropertyClearedEvent
Fires a map-cleared event. -
firePropertyAddedEvent
Fires a property-added event. -
firePropertyUpdatedEvent
Fires a property-updated event. -
fireMultiPropertyEvent
Fires a multi-property event from a list of events. -
fireMultiPropertyEvent
Fires a multi-property event from an event array. -
firePropertyRemovedEvent
Fires a property-removed event. -
firePropertyEvent
Publishes a property event to registered listeners. -
fireSizeChangedEvent
protected void fireSizeChangedEvent(int oldValue, int newValue) Fires the bound size change event. -
clear
public void clear() -
containsKey
- Specified by:
containsKeyin interfaceMap
-
containsValue
- Specified by:
containsValuein interfaceMap
-
entrySet
-
equals
-
get
-
hashCode
public int hashCode() -
isEmpty
public boolean isEmpty() -
keySet
-
put
-
putAll
-
remove
-
size
public int size() -
getSize
public int getSize()Returns the current map size as a bound property value.- Returns:
- the current map size
-
values
-
addPropertyChangeListener
Registers a listener for all observable map events.- Parameters:
listener- the listener to add
-
addPropertyChangeListener
Registers a listener for a named bound property.- Parameters:
propertyName- the property to observelistener- the listener to add
-
getPropertyChangeListeners
Returns listeners registered for all properties.- Returns:
- the registered listeners
-
getPropertyChangeListeners
Returns listeners registered for a named property.- Parameters:
propertyName- the observed property name- Returns:
- the registered listeners
-
removePropertyChangeListener
Removes a listener registered for all properties.- Parameters:
listener- the listener to remove
-
removePropertyChangeListener
Removes a listener registered for a named property.- Parameters:
propertyName- the observed property namelistener- the listener to remove
-
hasListeners
Reports whether listeners are registered for a named property.- Parameters:
propertyName- the property name to inspect- Returns:
trueif listeners are registered
-