groovy.util
Class ObservableMap

java.lang.Object
  extended by 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:

 // 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

Bound properties


Nested Class Summary
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,V>
 
Field Summary
static java.lang.String CLEARED_PROPERTY
           
static java.lang.String CONTENT_PROPERTY
           
static java.lang.String SIZE_PROPERTY
           
 
Constructor Summary
ObservableMap()
           
ObservableMap(Closure test)
           
ObservableMap(java.util.Map delegate)
           
ObservableMap(java.util.Map delegate, Closure test)
           
 
Method Summary
 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(java.util.List<ObservableMap.PropertyEvent> events)
           
protected  void fireMultiPropertyEvent(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
 

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
Constructor Detail

ObservableMap

public ObservableMap()

ObservableMap

public ObservableMap(Closure test)

ObservableMap

public ObservableMap(java.util.Map delegate)

ObservableMap

public ObservableMap(java.util.Map delegate,
                     Closure test)
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:
clear in interface java.util.Map

containsKey

public boolean containsKey(java.lang.Object key)
Specified by:
containsKey in interface java.util.Map

containsValue

public boolean containsValue(java.lang.Object value)
Specified by:
containsValue in interface java.util.Map

entrySet

public java.util.Set entrySet()
Specified by:
entrySet in interface java.util.Map

equals

public boolean equals(java.lang.Object o)
Specified by:
equals in interface java.util.Map
Overrides:
equals in class java.lang.Object

get

public java.lang.Object get(java.lang.Object key)
Specified by:
get in interface java.util.Map

hashCode

public int hashCode()
Specified by:
hashCode in interface java.util.Map
Overrides:
hashCode in class java.lang.Object

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Map

keySet

public java.util.Set keySet()
Specified by:
keySet in interface java.util.Map

put

public java.lang.Object put(java.lang.Object key,
                            java.lang.Object value)
Specified by:
put in interface java.util.Map

putAll

public void putAll(java.util.Map map)
Specified by:
putAll in interface java.util.Map

remove

public java.lang.Object remove(java.lang.Object key)
Specified by:
remove in interface java.util.Map

size

public int size()
Specified by:
size in interface java.util.Map

getSize

public int getSize()

values

public java.util.Collection values()
Specified by:
values in interface java.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)