Package groovy.util
Class ObservableSet<E>
java.lang.Object
groovy.util.ObservableSet<E>
- All Implemented Interfaces:
java.lang.Iterable<E>
,java.util.Collection<E>
,java.util.Set<E>
public class ObservableSet<E>
extends java.lang.Object
implements java.util.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 Classes Modifier and Type Class Description static class
ObservableSet.ChangeType
static class
ObservableSet.ElementAddedEvent
static class
ObservableSet.ElementClearedEvent
static class
ObservableSet.ElementEvent
static class
ObservableSet.ElementRemovedEvent
static class
ObservableSet.MultiElementAddedEvent
static class
ObservableSet.MultiElementRemovedEvent
protected class
ObservableSet.ObservableIterator<E>
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CONTENT_PROPERTY
static java.lang.String
SIZE_PROPERTY
-
Constructor Summary
Constructors Constructor Description ObservableSet()
ObservableSet(Closure test)
ObservableSet(java.util.Set<E> delegate)
ObservableSet(java.util.Set<E> delegate, Closure test)
-
Method Summary
Modifier and Type Method Description boolean
add(E e)
boolean
addAll(java.util.Collection<? extends E> c)
void
addPropertyChangeListener(java.beans.PropertyChangeListener listener)
void
addPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
void
clear()
boolean
contains(java.lang.Object o)
boolean
containsAll(java.util.Collection<?> objects)
protected void
fireElementAddedEvent(java.lang.Object element)
protected void
fireElementClearedEvent(java.util.List values)
protected void
fireElementEvent(ObservableSet.ElementEvent event)
protected void
fireElementRemovedEvent(java.lang.Object element)
protected void
fireMultiElementAddedEvent(java.util.List values)
protected void
fireMultiElementRemovedEvent(java.util.List values)
protected void
fireSizeChangedEvent(int oldValue, int newValue)
java.util.Set<E>
getContent()
protected java.util.Set<E>
getDelegateSet()
java.beans.PropertyChangeListener[]
getPropertyChangeListeners()
java.beans.PropertyChangeListener[]
getPropertyChangeListeners(java.lang.String propertyName)
protected Closure
getTest()
boolean
hasListeners(java.lang.String propertyName)
boolean
isEmpty()
java.util.Iterator<E>
iterator()
boolean
remove(java.lang.Object o)
boolean
removeAll(java.util.Collection<?> c)
void
removePropertyChangeListener(java.beans.PropertyChangeListener listener)
void
removePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
boolean
retainAll(java.util.Collection<?> c)
int
size()
java.lang.Object[]
toArray()
<T> T[]
toArray(T[] ts)
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
Methods inherited from interface java.lang.Iterable
forEach
Methods inherited from interface java.util.Set
equals, hashCode, spliterator
-
Field Details
-
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
-
-
Constructor Details
-
ObservableSet
public ObservableSet() -
ObservableSet
-
ObservableSet
-
ObservableSet
-
-
Method Details
-
getContent
-
getDelegateSet
-
getTest
-
fireElementAddedEvent
protected void fireElementAddedEvent(java.lang.Object element) -
fireMultiElementAddedEvent
protected void fireMultiElementAddedEvent(java.util.List values) -
fireElementClearedEvent
protected void fireElementClearedEvent(java.util.List values) -
fireElementRemovedEvent
protected void fireElementRemovedEvent(java.lang.Object element) -
fireMultiElementRemovedEvent
protected void fireMultiElementRemovedEvent(java.util.List values) -
fireElementEvent
-
fireSizeChangedEvent
protected void fireSizeChangedEvent(int oldValue, int newValue) -
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) -
size
public int size() -
isEmpty
public boolean isEmpty() -
contains
public boolean contains(java.lang.Object o) -
iterator
-
toArray
public java.lang.Object[] toArray() -
toArray
public <T> T[] toArray(T[] ts) -
add
-
remove
public boolean remove(java.lang.Object o) -
containsAll
public boolean containsAll(java.util.Collection<?> objects) -
addAll
-
retainAll
public boolean retainAll(java.util.Collection<?> c) -
removeAll
public boolean removeAll(java.util.Collection<?> c) -
clear
public void clear()
-