Package groovy.util
Class ObservableSet<E>
java.lang.Object
groovy.util.ObservableSet<E>
- All Implemented Interfaces:
Iterable<E>,Collection<E>,Set<E>
Set 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 set = new ObservableSet( {!(it instanceof Closure)} )
<p/>
// skip all properties whose name matches a regex
def set = new ObservableSet( { 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
- ObservableSet.ElementAddedEvent - a new element is added to the set
- ObservableSet.ElementRemovedEvent - an element is removed from the set
- ObservableSet.ElementUpdatedEvent - an element changes value (same as regular PropertyChangeEvent)
- ObservableSet.ElementClearedEvent - all elements have been removed from the list
- ObservableSet.MultiElementAddedEvent - triggered by calling set.addAll()
- ObservableSet.MultiElementRemovedEvent - triggered by calling set.removeAll()/set.retainAll()
Bound properties
- content - read-only.
- size - read-only.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumEnumerates the specialized set change events.static classEvent fired when one element is added.static classEvent fired when the set is cleared.static classBase event type for observable set content changes.static classEvent fired when one element is removed.static classEvent fired when multiple elements are added.static classEvent fired when multiple elements are removed.protected classIterator wrapper that reports removals as observable set events. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates an observable set backed by aHashSet.ObservableSet(Closure test) Creates an observable set backed by aHashSet.ObservableSet(Set<E> delegate) Creates an observable set backed by the supplied delegate.ObservableSet(Set<E> delegate, Closure test) Creates an observable set backed by the supplied delegate. -
Method Summary
Modifier and TypeMethodDescriptionbooleanbooleanaddAll(Collection<? extends E> c) voidRegisters a listener for all observable set events.voidaddPropertyChangeListener(String propertyName, PropertyChangeListener listener) Registers a listener for a named bound property.voidclear()booleanbooleancontainsAll(Collection<?> objects) protected voidfireElementAddedEvent(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(Object element) Fires a single-element removed event.protected voidfireMultiElementAddedEvent(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.Returns an unmodifiable snapshot view of the backing set.Returns the mutable backing set.Returns listeners registered for all properties.getPropertyChangeListeners(String propertyName) Returns listeners registered for a named property.protected ClosuregetTest()Returns the optional event filter closure.booleanhasListeners(String propertyName) Reports whether listeners are registered for a named property.booleanisEmpty()iterator()booleanbooleanremoveAll(Collection<?> c) voidRemoves a listener registered for all properties.voidremovePropertyChangeListener(String propertyName, PropertyChangeListener listener) Removes a listener registered for a named property.booleanretainAll(Collection<?> c) intsize()Object[]toArray()<T> T[]toArray(T[] ts) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArrayMethods inherited from interface java.util.Set
equals, hashCode, spliterator
-
Field Details
-
SIZE_PROPERTY
Bound property name for set size changes.- See Also:
-
CONTENT_PROPERTY
Bound property name for set content changes.- See Also:
-
-
Constructor Details
-
ObservableSet
public ObservableSet()Creates an observable set backed by aHashSet. -
ObservableSet
Creates an observable set backed by the supplied delegate.- Parameters:
delegate- the backing set
-
ObservableSet
Creates an observable set backed by aHashSet.- Parameters:
test- optional event filter
-
ObservableSet
Creates an observable set backed by the supplied delegate.- Parameters:
delegate- the backing settest- optional event filter
-
-
Method Details
-
getContent
Returns an unmodifiable snapshot view of the backing set.- Returns:
- the set content
-
getDelegateSet
Returns the mutable backing set.- Returns:
- the delegate set
-
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. -
fireElementEvent
Publishes an element event to registered listeners. -
fireSizeChangedEvent
protected void fireSizeChangedEvent(int oldValue, int newValue) Fires the bound size change event. -
addPropertyChangeListener
Registers a listener for all observable set 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
-
size
public int size() -
isEmpty
public boolean isEmpty() -
contains
-
iterator
-
toArray
-
toArray
public <T> T[] toArray(T[] ts) -
add
-
remove
-
containsAll
- Specified by:
containsAllin interfaceCollection<E>- Specified by:
containsAllin interfaceSet<E>
-
addAll
-
retainAll
-
removeAll
-
clear
public void clear()
-