groovy.util
Class ObservableMap

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

Bound properties

Author:
Andres Almiray

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
Map.Entry<K,V>
 
Field Summary
static String CLEARED_PROPERTY
           
static String CONTENT_PROPERTY
           
static String SIZE_PROPERTY
           
 
Constructor Summary
ObservableMap()
           
ObservableMap(Closure test)
           
ObservableMap(Map delegate)
           
ObservableMap(Map delegate, Closure test)
           
 
Method Summary
 void addPropertyChangeListener(PropertyChangeListener listener)
           
 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
           
 void clear()
           
 boolean containsKey(Object key)
           
 boolean containsValue(Object value)
           
 Set entrySet()
           
 boolean equals(Object o)
           
protected  void fireMultiPropertyEvent(List<ObservableMap.PropertyEvent> events)
           
protected  void fireMultiPropertyEvent(ObservableMap.PropertyEvent[] events)
           
protected  void firePropertyAddedEvent(Object key, Object value)
           
protected  void firePropertyClearedEvent(Map values)
           
protected  void firePropertyEvent(ObservableMap.PropertyEvent event)
           
protected  void firePropertyRemovedEvent(Object key, Object value)
           
protected  void firePropertyUpdatedEvent(Object key, Object oldValue, Object newValue)
           
protected  void fireSizeChangedEvent(int oldValue, int newValue)
           
 Object get(Object key)
           
 Map getContent()
           
protected  Map getMapDelegate()
           
 PropertyChangeListener[] getPropertyChangeListeners()
           
 PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
           
 int getSize()
           
protected  Closure getTest()
           
 int hashCode()
           
 boolean hasListeners(String propertyName)
           
 boolean isEmpty()
           
 Set keySet()
           
 Object put(Object key, Object value)
           
 void putAll(Map map)
           
 Object remove(Object key)
           
 void removePropertyChangeListener(PropertyChangeListener listener)
           
 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
           
 int size()
           
 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 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
Constructor Detail

ObservableMap

public ObservableMap()

ObservableMap

public ObservableMap(Closure test)

ObservableMap

public ObservableMap(Map delegate)

ObservableMap

public ObservableMap(Map delegate,
                     Closure test)
Method Detail

getMapDelegate

protected Map getMapDelegate()

getTest

protected Closure getTest()

getContent

public Map getContent()

firePropertyClearedEvent

protected void firePropertyClearedEvent(Map values)

firePropertyAddedEvent

protected void firePropertyAddedEvent(Object key,
                                      Object value)

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)

firePropertyRemovedEvent

protected void firePropertyRemovedEvent(Object key,
                                        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 Map

containsKey

public boolean containsKey(Object key)
Specified by:
containsKey in interface Map

containsValue

public boolean containsValue(Object value)
Specified by:
containsValue in interface Map

entrySet

public Set entrySet()
Specified by:
entrySet in interface Map

equals

public boolean equals(Object o)
Specified by:
equals in interface Map
Overrides:
equals in class Object

get

public Object get(Object key)
Specified by:
get in interface Map

hashCode

public int hashCode()
Specified by:
hashCode in interface Map
Overrides:
hashCode in class Object

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface Map

keySet

public Set keySet()
Specified by:
keySet in interface Map

put

public Object put(Object key,
                  Object value)
Specified by:
put in interface Map

putAll

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

remove

public Object remove(Object key)
Specified by:
remove in interface Map

size

public int size()
Specified by:
size in interface Map

getSize

public int getSize()

values

public Collection values()
Specified by:
values in interface Map

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)

Copyright © 2003-2012 The Codehaus. All rights reserved.