Package groovy.util
Class ObservableList
java.lang.Object
groovy.util.ObservableList
- All Implemented Interfaces:
Iterable,Collection,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:
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 ClassesModifier and TypeClassDescriptionstatic enumEnumerates the specialized list change events.static classEvent fired when one element is added.static classEvent fired when the list is cleared.static classBase event type for observable list content changes.static classEvent fired when one element is removed.static classEvent fired when one element is updated.static classEvent fired when multiple elements are added.static classEvent fired when multiple elements are removed.protected classIterator wrapper that reports removals as observable list events.protected classList iterator wrapper that routes mutations throughObservableList. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates an observable list backed by anArrayList.ObservableList(Closure test) Creates an observable list backed by anArrayList.ObservableList(List delegate) Creates an observable list backed by the supplied delegate.ObservableList(List delegate, Closure test) Creates an observable list backed by the supplied delegate. -
Method Summary
Modifier and TypeMethodDescriptionvoidbooleanbooleanaddAll(int index, Collection c) booleanaddAll(Collection c) voidRegisters a listener for all observable list events.voidaddPropertyChangeListener(String propertyName, PropertyChangeListener listener) Registers a listener for a named bound property.voidclear()booleanbooleanbooleanprotected voidfireElementAddedEvent(int index, Object element) Fires a single-element added event.protected voidfireElementClearedEvent(List values) Fires a cleared event containing removed values.protected voidPublishes an element event to registered listeners.protected voidfireElementRemovedEvent(int index, Object element) Fires a single-element removed event.protected voidfireElementUpdatedEvent(int index, Object oldValue, Object newValue) Fires a single-element updated event.protected voidfireMultiElementAddedEvent(int index, List values) Fires a multi-element added event.protected voidfireMultiElementRemovedEvent(List values) Fires a multi-element removed event.protected voidfireSizeChangedEvent(int oldValue, int newValue) Fires the bound size change event.get(int index) Returns an unmodifiable snapshot view of the backing list.protected ListReturns the mutable backing list.Returns listeners registered for all properties.getPropertyChangeListeners(String propertyName) Returns listeners registered for a named property.intgetSize()Returns the current list 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.intbooleanisEmpty()iterator()intlistIterator(int index) remove(int index) booleanbooleanvoidRemoves a listener registered for all properties.voidremovePropertyChangeListener(String propertyName, PropertyChangeListener listener) Removes a listener registered for a named property.booleanintsize()subList(int fromIndex, int toIndex) Object[]toArray()Object[]Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArrayMethods inherited from interface java.util.List
replaceAll, sort, spliterator
-
Field Details
-
SIZE_PROPERTY
Bound property name for list size changes.- See Also:
-
CONTENT_PROPERTY
Bound property name for list content changes.- See Also:
-
-
Constructor Details
-
ObservableList
public ObservableList()Creates an observable list backed by anArrayList. -
ObservableList
Creates an observable list backed by the supplied delegate.- Parameters:
delegate- the backing list
-
ObservableList
Creates an observable list backed by anArrayList.- Parameters:
test- optional event filter
-
ObservableList
Creates an observable list backed by the supplied delegate.- Parameters:
delegate- the backing listtest- optional event filter
-
-
Method Details
-
getContent
Returns an unmodifiable snapshot view of the backing list.- Returns:
- the list content
-
getDelegateList
Returns the mutable backing list.- Returns:
- the delegate list
-
getTest
Returns the optional event filter closure.- Returns:
- the event filter, or
null
-
fireElementAddedEvent
Fires a single-element added event. -
fireMultiElementAddedEvent
Fires a multi-element added event. -
fireElementClearedEvent
Fires a cleared event containing removed values. -
fireElementRemovedEvent
Fires a single-element removed event. -
fireMultiElementRemovedEvent
Fires a multi-element removed event. -
fireElementUpdatedEvent
Fires a single-element updated event. -
fireElementEvent
Publishes an element event to registered listeners. -
fireSizeChangedEvent
protected void fireSizeChangedEvent(int oldValue, int newValue) Fires the bound size change event. -
add
-
add
- Specified by:
addin interfaceCollection- Specified by:
addin interfaceList
-
addAll
- Specified by:
addAllin interfaceCollection- Specified by:
addAllin interfaceList
-
addAll
-
clear
public void clear()- Specified by:
clearin interfaceCollection- Specified by:
clearin interfaceList
-
contains
- Specified by:
containsin interfaceCollection- Specified by:
containsin interfaceList
-
containsAll
- Specified by:
containsAllin interfaceCollection- Specified by:
containsAllin interfaceList
-
equals
-
get
-
hashCode
public int hashCode() -
indexOf
-
isEmpty
public boolean isEmpty()- Specified by:
isEmptyin interfaceCollection- Specified by:
isEmptyin interfaceList
-
iterator
-
lastIndexOf
- Specified by:
lastIndexOfin interfaceList
-
listIterator
- Specified by:
listIteratorin interfaceList
-
listIterator
- Specified by:
listIteratorin interfaceList
-
remove
-
remove
- Specified by:
removein interfaceCollection- Specified by:
removein interfaceList
-
removeAll
- Specified by:
removeAllin interfaceCollection- Specified by:
removeAllin interfaceList
-
retainAll
- Specified by:
retainAllin interfaceCollection- Specified by:
retainAllin interfaceList
-
set
-
size
public int size()- Specified by:
sizein interfaceCollection- Specified by:
sizein interfaceList
-
getSize
public int getSize()Returns the current list size as a bound property value.- Returns:
- the current list size
-
subList
-
toArray
- Specified by:
toArrayin interfaceCollection- Specified by:
toArrayin interfaceList
-
toArray
- Specified by:
toArrayin interfaceCollection- Specified by:
toArrayin interfaceList
-
addPropertyChangeListener
Registers a listener for all observable list 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
-