Package groovy.util
Class ObservableList
- java.lang.Object
-
- groovy.util.ObservableList
-
- All Implemented Interfaces:
Iterable
,Collection
,List
public class ObservableList extends Object implements List
List 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 ObservableList( {!(it instanceof Closure)} ) // skip all properties whose name matches a regex def map = new ObservableList( { 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- ObservableList.ElementAddedEvent - a new element is added to the list
- ObservableList.ElementRemovedEvent - an element is removed from the list
- ObservableList.ElementUpdatedEvent - an element changes value (same as regular PropertyChangeEvent)
- ObservableList.ElementClearedEvent - all elements have been removed from the list
- ObservableList.MultiElementAddedEvent - triggered by calling list.addAll()
- ObservableList.MultiElementRemovedEvent - triggered by calling list.removeAll()/list.retainAll()
Bound properties
- content - read-only.
- size - read-only.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ObservableList.ChangeType
static class
ObservableList.ElementAddedEvent
static class
ObservableList.ElementClearedEvent
static class
ObservableList.ElementEvent
static class
ObservableList.ElementRemovedEvent
static class
ObservableList.ElementUpdatedEvent
static class
ObservableList.MultiElementAddedEvent
static class
ObservableList.MultiElementRemovedEvent
protected class
ObservableList.ObservableIterator
protected class
ObservableList.ObservableListIterator
-
Field Summary
Fields Modifier and Type Field Description static String
CONTENT_PROPERTY
static String
SIZE_PROPERTY
-
Constructor Summary
Constructors Constructor Description ObservableList()
ObservableList(Closure test)
ObservableList(List delegate)
ObservableList(List delegate, Closure test)
-
Method Summary
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
-
Methods inherited from interface java.util.List
replaceAll, sort, spliterator
-
-
-
-
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
-
-
Method Detail
-
getContent
public List getContent()
-
getDelegateList
protected List getDelegateList()
-
getTest
protected Closure getTest()
-
fireElementAddedEvent
protected void fireElementAddedEvent(int index, Object element)
-
fireMultiElementAddedEvent
protected void fireMultiElementAddedEvent(int index, List values)
-
fireElementClearedEvent
protected void fireElementClearedEvent(List values)
-
fireElementRemovedEvent
protected void fireElementRemovedEvent(int index, Object element)
-
fireMultiElementRemovedEvent
protected void fireMultiElementRemovedEvent(List values)
-
fireElementUpdatedEvent
protected void fireElementUpdatedEvent(int index, Object oldValue, Object newValue)
-
fireElementEvent
protected void fireElementEvent(ObservableList.ElementEvent event)
-
fireSizeChangedEvent
protected void fireSizeChangedEvent(int oldValue, int newValue)
-
add
public boolean add(Object o)
- Specified by:
add
in interfaceCollection
- Specified by:
add
in interfaceList
-
addAll
public boolean addAll(Collection c)
- Specified by:
addAll
in interfaceCollection
- Specified by:
addAll
in interfaceList
-
addAll
public boolean addAll(int index, Collection c)
-
clear
public void clear()
- Specified by:
clear
in interfaceCollection
- Specified by:
clear
in interfaceList
-
contains
public boolean contains(Object o)
- Specified by:
contains
in interfaceCollection
- Specified by:
contains
in interfaceList
-
containsAll
public boolean containsAll(Collection c)
- Specified by:
containsAll
in interfaceCollection
- Specified by:
containsAll
in interfaceList
-
equals
public boolean equals(Object o)
-
hashCode
public int hashCode()
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interfaceCollection
- Specified by:
isEmpty
in interfaceList
-
iterator
public Iterator iterator()
-
lastIndexOf
public int lastIndexOf(Object o)
- Specified by:
lastIndexOf
in interfaceList
-
listIterator
public ListIterator listIterator()
- Specified by:
listIterator
in interfaceList
-
listIterator
public ListIterator listIterator(int index)
- Specified by:
listIterator
in interfaceList
-
remove
public boolean remove(Object o)
- Specified by:
remove
in interfaceCollection
- Specified by:
remove
in interfaceList
-
removeAll
public boolean removeAll(Collection c)
- Specified by:
removeAll
in interfaceCollection
- Specified by:
removeAll
in interfaceList
-
retainAll
public boolean retainAll(Collection c)
- Specified by:
retainAll
in interfaceCollection
- Specified by:
retainAll
in interfaceList
-
size
public int size()
- Specified by:
size
in interfaceCollection
- Specified by:
size
in interfaceList
-
getSize
public int getSize()
-
toArray
public Object[] toArray()
- Specified by:
toArray
in interfaceCollection
- Specified by:
toArray
in interfaceList
-
toArray
public Object[] toArray(Object[] a)
- Specified by:
toArray
in interfaceCollection
- Specified by:
toArray
in interfaceList
-
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)
-
-