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.MapMap 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 classObservableMap.ChangeTypestatic classObservableMap.MultiPropertyEventstatic classObservableMap.PropertyAddedEventstatic classObservableMap.PropertyClearedEventstatic classObservableMap.PropertyEventstatic classObservableMap.PropertyRemovedEventstatic classObservableMap.PropertyUpdatedEvent
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCLEARED_PROPERTYstatic java.lang.StringCONTENT_PROPERTYstatic java.lang.StringSIZE_PROPERTY
-
Constructor Summary
Constructors Constructor Description ObservableMap()ObservableMap(Closure test)ObservableMap(java.util.Map delegate)ObservableMap(java.util.Map delegate, Closure test)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddPropertyChangeListener(java.beans.PropertyChangeListener listener)voidaddPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)voidclear()booleancontainsKey(java.lang.Object key)booleancontainsValue(java.lang.Object value)java.util.SetentrySet()booleanequals(java.lang.Object o)protected voidfireMultiPropertyEvent(ObservableMap.PropertyEvent[] events)protected voidfireMultiPropertyEvent(java.util.List<ObservableMap.PropertyEvent> events)protected voidfirePropertyAddedEvent(java.lang.Object key, java.lang.Object value)protected voidfirePropertyClearedEvent(java.util.Map values)protected voidfirePropertyEvent(ObservableMap.PropertyEvent event)protected voidfirePropertyRemovedEvent(java.lang.Object key, java.lang.Object value)protected voidfirePropertyUpdatedEvent(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)protected voidfireSizeChangedEvent(int oldValue, int newValue)java.lang.Objectget(java.lang.Object key)java.util.MapgetContent()protected java.util.MapgetMapDelegate()java.beans.PropertyChangeListener[]getPropertyChangeListeners()java.beans.PropertyChangeListener[]getPropertyChangeListeners(java.lang.String propertyName)intgetSize()protected ClosuregetTest()inthashCode()booleanhasListeners(java.lang.String propertyName)booleanisEmpty()java.util.SetkeySet()java.lang.Objectput(java.lang.Object key, java.lang.Object value)voidputAll(java.util.Map map)java.lang.Objectremove(java.lang.Object key)voidremovePropertyChangeListener(java.beans.PropertyChangeListener listener)voidremovePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)intsize()java.util.Collectionvalues()
-
-
-
Field Detail
-
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
-
-
Method Detail
-
getMapDelegate
protected java.util.Map getMapDelegate()
-
getTest
protected Closure 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
protected void fireMultiPropertyEvent(java.util.List<ObservableMap.PropertyEvent> events)
-
fireMultiPropertyEvent
protected void fireMultiPropertyEvent(ObservableMap.PropertyEvent[] events)
-
firePropertyRemovedEvent
protected void firePropertyRemovedEvent(java.lang.Object key, java.lang.Object value)
-
firePropertyEvent
protected void firePropertyEvent(ObservableMap.PropertyEvent event)
-
fireSizeChangedEvent
protected void fireSizeChangedEvent(int oldValue, int newValue)
-
clear
public void clear()
- Specified by:
clearin interfacejava.util.Map
-
containsKey
public boolean containsKey(java.lang.Object key)
- Specified by:
containsKeyin interfacejava.util.Map
-
containsValue
public boolean containsValue(java.lang.Object value)
- Specified by:
containsValuein interfacejava.util.Map
-
entrySet
public java.util.Set entrySet()
- Specified by:
entrySetin interfacejava.util.Map
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equalsin interfacejava.util.Map- Overrides:
equalsin classjava.lang.Object
-
get
public java.lang.Object get(java.lang.Object key)
- Specified by:
getin interfacejava.util.Map
-
hashCode
public int hashCode()
- Specified by:
hashCodein interfacejava.util.Map- Overrides:
hashCodein classjava.lang.Object
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmptyin interfacejava.util.Map
-
keySet
public java.util.Set keySet()
- Specified by:
keySetin interfacejava.util.Map
-
put
public java.lang.Object put(java.lang.Object key, java.lang.Object value)- Specified by:
putin interfacejava.util.Map
-
putAll
public void putAll(java.util.Map map)
- Specified by:
putAllin interfacejava.util.Map
-
remove
public java.lang.Object remove(java.lang.Object key)
- Specified by:
removein interfacejava.util.Map
-
size
public int size()
- Specified by:
sizein interfacejava.util.Map
-
getSize
public int getSize()
-
values
public java.util.Collection values()
- Specified by:
valuesin 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)
-
-