Package groovy.util

Class 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:
     // 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.
    • Constructor Detail

      • ObservableSet

        public ObservableSet()
      • ObservableSet

        public ObservableSet​(java.util.Set<E> delegate)
      • ObservableSet

        public ObservableSet​(Closure test)
      • ObservableSet

        public ObservableSet​(java.util.Set<E> delegate,
                             Closure test)
    • Method Detail

      • getContent

        public java.util.Set<E> getContent()
      • getDelegateSet

        protected java.util.Set<E> getDelegateSet()
      • getTest

        protected Closure 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)
      • 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()
        Specified by:
        size in interface java.util.Collection<E>
        Specified by:
        size in interface java.util.Set<E>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface java.util.Collection<E>
        Specified by:
        isEmpty in interface java.util.Set<E>
      • contains

        public boolean contains​(java.lang.Object o)
        Specified by:
        contains in interface java.util.Collection<E>
        Specified by:
        contains in interface java.util.Set<E>
      • iterator

        public java.util.Iterator<E> iterator()
        Specified by:
        iterator in interface java.util.Collection<E>
        Specified by:
        iterator in interface java.lang.Iterable<E>
        Specified by:
        iterator in interface java.util.Set<E>
      • toArray

        public java.lang.Object[] toArray()
        Specified by:
        toArray in interface java.util.Collection<E>
        Specified by:
        toArray in interface java.util.Set<E>
      • toArray

        public <T> T[] toArray​(T[] ts)
        Specified by:
        toArray in interface java.util.Collection<E>
        Specified by:
        toArray in interface java.util.Set<E>
      • add

        public boolean add​(E e)
        Specified by:
        add in interface java.util.Collection<E>
        Specified by:
        add in interface java.util.Set<E>
      • remove

        public boolean remove​(java.lang.Object o)
        Specified by:
        remove in interface java.util.Collection<E>
        Specified by:
        remove in interface java.util.Set<E>
      • containsAll

        public boolean containsAll​(java.util.Collection<?> objects)
        Specified by:
        containsAll in interface java.util.Collection<E>
        Specified by:
        containsAll in interface java.util.Set<E>
      • addAll

        public boolean addAll​(java.util.Collection<? extends E> c)
        Specified by:
        addAll in interface java.util.Collection<E>
        Specified by:
        addAll in interface java.util.Set<E>
      • retainAll

        public boolean retainAll​(java.util.Collection<?> c)
        Specified by:
        retainAll in interface java.util.Collection<E>
        Specified by:
        retainAll in interface java.util.Set<E>
      • removeAll

        public boolean removeAll​(java.util.Collection<?> c)
        Specified by:
        removeAll in interface java.util.Collection<E>
        Specified by:
        removeAll in interface java.util.Set<E>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Collection<E>
        Specified by:
        clear in interface java.util.Set<E>