Package groovy.util

# Class ObservableList

java.lang.Object
groovy.util.ObservableList

All Implemented Interfaces:
  `java.lang.Iterable`, `java.util.Collection`, `java.util.List`

    public class ObservableList
    extends java.lang.Object
    implements java.util.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:

     // 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 Classes
  Modifier and Type | Class | Description
  --- | --- | ---
  `static class` | `ObservableList.ChangeType` |
  `static class` | `ObservableList.ElementAddedEvent` |
  `static class` | `ObservableList.ElementClearedEvent` |
  `static class` | `ObservableList.ElementEvent` |
  `static class` | `ObservableList.ElementRemovedEvent` |
  `static class` | `ObservableList.ElementUpdatedEvent` |
  `static class` | `ObservableList.MultiElementAddedEvent` |
  `static class` | `ObservableList.MultiElementRemovedEvent` |
  `protected class` | `ObservableList.ObservableIterator` |
  `protected class` | `ObservableList.ObservableListIterator` |

- ## 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
  --- | ---
  `ObservableList()` |
  `ObservableList​(Closure test)` |
  `ObservableList​(java.util.List delegate)` |
  `ObservableList​(java.util.List delegate, Closure test)` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `void` | `add​(int index, java.lang.Object element)` |
  `boolean` | `add​(java.lang.Object o)` |
  `boolean` | `addAll​(int index, java.util.Collection c)` |
  `boolean` | `addAll​(java.util.Collection 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 c)` |
  `boolean` | `equals​(java.lang.Object o)` |
  `protected void` | `fireElementAddedEvent​(int index, java.lang.Object element)` |
  `protected void` | `fireElementClearedEvent​(java.util.List values)` |
  `protected void` | `fireElementEvent​(ObservableList.ElementEvent event)` |
  `protected void` | `fireElementRemovedEvent​(int index, java.lang.Object element)` |
  `protected void` | `fireElementUpdatedEvent​(int index, java.lang.Object oldValue, java.lang.Object newValue)` |
  `protected void` | `fireMultiElementAddedEvent​(int index, java.util.List values)` |
  `protected void` | `fireMultiElementRemovedEvent​(java.util.List values)` |
  `protected void` | `fireSizeChangedEvent​(int oldValue, int newValue)` |
  `java.lang.Object` | `get​(int index)` |
  `java.util.List` | `getContent()` |
  `protected java.util.List` | `getDelegateList()` |
  `java.beans.PropertyChangeListener[]` | `getPropertyChangeListeners()` |
  `java.beans.PropertyChangeListener[]` | `getPropertyChangeListeners​(java.lang.String propertyName)` |
  `int` | `getSize()` |
  `protected Closure` | `getTest()` |
  `int` | `hashCode()` |
  `boolean` | `hasListeners​(java.lang.String propertyName)` |
  `int` | `indexOf​(java.lang.Object o)` |
  `boolean` | `isEmpty()` |
  `java.util.Iterator` | `iterator()` |
  `int` | `lastIndexOf​(java.lang.Object o)` |
  `java.util.ListIterator` | `listIterator()` |
  `java.util.ListIterator` | `listIterator​(int index)` |
  `java.lang.Object` | `remove​(int index)` |
  `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)` |
  `java.lang.Object` | `set​(int index, java.lang.Object element)` |
  `int` | `size()` |
  `java.util.List` | `subList​(int fromIndex, int toIndex)` |
  `java.lang.Object[]` | `toArray()` |
  `java.lang.Object[]` | `toArray​(java.lang.Object[] a)` |

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, 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.List

  `replaceAll, sort, 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

  - ### ObservableList

    public ObservableList()

  - ### ObservableList

    public ObservableList​(java.util.List delegate)

  - ### ObservableList

    public ObservableList​(Closure test)

  - ### ObservableList

    public ObservableList​(java.util.List delegate, Closure test)

- ## Method Details

  - ### getContent

    public java.util.List getContent()

  - ### getDelegateList

    protected java.util.List getDelegateList()

  - ### getTest

    protected Closure getTest()

  - ### fireElementAddedEvent

    protected void fireElementAddedEvent​(int index, java.lang.Object element)

  - ### fireMultiElementAddedEvent

    protected void fireMultiElementAddedEvent​(int index, java.util.List values)

  - ### fireElementClearedEvent

    protected void fireElementClearedEvent​(java.util.List values)

  - ### fireElementRemovedEvent

    protected void fireElementRemovedEvent​(int index, java.lang.Object element)

  - ### fireMultiElementRemovedEvent

    protected void fireMultiElementRemovedEvent​(java.util.List values)

  - ### fireElementUpdatedEvent

    protected void fireElementUpdatedEvent​(int index, java.lang.Object oldValue, java.lang.Object newValue)

  - ### fireElementEvent

    protected void fireElementEvent​(ObservableList.ElementEvent event)

  - ### fireSizeChangedEvent

    protected void fireSizeChangedEvent​(int oldValue, int newValue)

  - ### add

    public void add​(int index, java.lang.Object element)
    Specified by:
      `add` in interface `java.util.List`

  - ### add

    public boolean add​(java.lang.Object o)
    Specified by:
      `add` in interface `java.util.Collection`
    Specified by:
      `add` in interface `java.util.List`

  - ### addAll

    public boolean addAll​(java.util.Collection c)
    Specified by:
      `addAll` in interface `java.util.Collection`
    Specified by:
      `addAll` in interface `java.util.List`

  - ### addAll

    public boolean addAll​(int index, java.util.Collection c)
    Specified by:
      `addAll` in interface `java.util.List`

  - ### clear

    public void clear()
    Specified by:
      `clear` in interface `java.util.Collection`
    Specified by:
      `clear` in interface `java.util.List`

  - ### contains

    public boolean contains​(java.lang.Object o)
    Specified by:
      `contains` in interface `java.util.Collection`
    Specified by:
      `contains` in interface `java.util.List`

  - ### containsAll

    public boolean containsAll​(java.util.Collection c)
    Specified by:
      `containsAll` in interface `java.util.Collection`
    Specified by:
      `containsAll` in interface `java.util.List`

  - ### equals

    public boolean equals​(java.lang.Object o)
    Specified by:
      `equals` in interface `java.util.Collection`
    Specified by:
      `equals` in interface `java.util.List`
    Overrides:
      `equals` in class `java.lang.Object`

  - ### get

    public java.lang.Object get​(int index)
    Specified by:
      `get` in interface `java.util.List`

  - ### hashCode

    public int hashCode()
    Specified by:
      `hashCode` in interface `java.util.Collection`
    Specified by:
      `hashCode` in interface `java.util.List`
    Overrides:
      `hashCode` in class `java.lang.Object`

  - ### indexOf

    public int indexOf​(java.lang.Object o)
    Specified by:
      `indexOf` in interface `java.util.List`

  - ### isEmpty

    public boolean isEmpty()
    Specified by:
      `isEmpty` in interface `java.util.Collection`
    Specified by:
      `isEmpty` in interface `java.util.List`

  - ### iterator

    public java.util.Iterator iterator()
    Specified by:
      `iterator` in interface `java.util.Collection`
    Specified by:
      `iterator` in interface `java.lang.Iterable`
    Specified by:
      `iterator` in interface `java.util.List`

  - ### lastIndexOf

    public int lastIndexOf​(java.lang.Object o)
    Specified by:
      `lastIndexOf` in interface `java.util.List`

  - ### listIterator

    public java.util.ListIterator listIterator()
    Specified by:
      `listIterator` in interface `java.util.List`

  - ### listIterator

    public java.util.ListIterator listIterator​(int index)
    Specified by:
      `listIterator` in interface `java.util.List`

  - ### remove

    public java.lang.Object remove​(int index)
    Specified by:
      `remove` in interface `java.util.List`

  - ### remove

    public boolean remove​(java.lang.Object o)
    Specified by:
      `remove` in interface `java.util.Collection`
    Specified by:
      `remove` in interface `java.util.List`

  - ### removeAll

    public boolean removeAll​(java.util.Collection c)
    Specified by:
      `removeAll` in interface `java.util.Collection`
    Specified by:
      `removeAll` in interface `java.util.List`

  - ### retainAll

    public boolean retainAll​(java.util.Collection c)
    Specified by:
      `retainAll` in interface `java.util.Collection`
    Specified by:
      `retainAll` in interface `java.util.List`

  - ### set

    public java.lang.Object set​(int index, java.lang.Object element)
    Specified by:
      `set` in interface `java.util.List`

  - ### size

    public int size()
    Specified by:
      `size` in interface `java.util.Collection`
    Specified by:
      `size` in interface `java.util.List`

  - ### getSize

    public int getSize()

  - ### subList

    public java.util.List subList​(int fromIndex, int toIndex)
    Specified by:
      `subList` in interface `java.util.List`

  - ### toArray

    public java.lang.Object[] toArray()
    Specified by:
      `toArray` in interface `java.util.Collection`
    Specified by:
      `toArray` in interface `java.util.List`

  - ### toArray

    public java.lang.Object[] toArray​(java.lang.Object[] a)
    Specified by:
      `toArray` in interface `java.util.Collection`
    Specified by:
      `toArray` in interface `java.util.List`

  - ### 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)