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)} )
 // 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.
  • Field Details

  • Constructor Details

    • 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 Details

    • 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)
    • fireElementEvent

      protected void fireElementEvent​(ObservableSet.ElementEvent event)
    • 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>