Package: groovy.util

## [Java] Class ObservableList

- groovy.util.ObservableList

- All Implemented Interfaces and Traits:
    List

      public class ObservableList
      extends Object
      implements 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
    Modifiers | Name | Description
    --- | --- | ---
    `enum` | `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
    Modifiers | Name | Description
    --- | --- | ---
    `static String` | `CONTENT_PROPERTY` |
    `static String` | `SIZE_PROPERTY` |

  - ### Constructor Summary

    Constructors
    Constructor and description
    `ObservableList()`
    `ObservableList(List delegate)`
    `ObservableList(Closure test)`
    `ObservableList(List delegate, Closure test)`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `add(int index, Object element)`
    `` | `public boolean` | `add(Object o)`
    `` | `public boolean` | `addAll(Collection c)`
    `` | `public boolean` | `addAll(int index, Collection c)`
    `` | `public void` | `addPropertyChangeListener(PropertyChangeListener listener)`
    `` | `public void` | `addPropertyChangeListener(String propertyName, PropertyChangeListener listener)`
    `` | `public void` | `clear()`
    `` | `public boolean` | `contains(Object o)`
    `` | `public boolean` | `containsAll(Collection c)`
    `` | `public boolean` | `equals(Object o)`
    `` | `protected void` | `fireElementAddedEvent(int index, Object element)`
    `` | `protected void` | `fireElementClearedEvent(List values)`
    `` | `protected void` | `fireElementEvent(ElementEvent event)`
    `` | `protected void` | `fireElementRemovedEvent(int index, Object element)`
    `` | `protected void` | `fireElementUpdatedEvent(int index, Object oldValue, Object newValue)`
    `` | `protected void` | `fireMultiElementAddedEvent(int index, List values)`
    `` | `protected void` | `fireMultiElementRemovedEvent(List values)`
    `` | `protected void` | `fireSizeChangedEvent(int oldValue, int newValue)`
    `` | `public Object` | `get(int index)`
    `` | `public List` | `getContent()`
    `` | `protected List` | `getDelegateList()`
    `` | `public PropertyChangeListener[]` | `getPropertyChangeListeners()`
    `` | `public PropertyChangeListener[]` | `getPropertyChangeListeners(String propertyName)`
    `` | `public int` | `getSize()`
    `` | `protected Closure` | `getTest()`
    `` | `public boolean` | `hasListeners(String propertyName)`
    `` | `public int` | `hashCode()`
    `` | `public int` | `indexOf(Object o)`
    `` | `public boolean` | `isEmpty()`
    `` | `public Iterator` | `iterator()`
    `` | `public int` | `lastIndexOf(Object o)`
    `` | `public ListIterator` | `listIterator()`
    `` | `public ListIterator` | `listIterator(int index)`
    `` | `public Object` | `remove(int index)`
    `` | `public boolean` | `remove(Object o)`
    `` | `public boolean` | `removeAll(Collection c)`
    `` | `public void` | `removePropertyChangeListener(PropertyChangeListener listener)`
    `` | `public void` | `removePropertyChangeListener(String propertyName, PropertyChangeListener listener)`
    `` | `public boolean` | `retainAll(Collection c)`
    `` | `public Object` | `set(int index, Object element)`
    `` | `public int` | `size()`
    `` | `public List` | `subList(int fromIndex, int toIndex)`
    `` | `public Object[]` | `toArray()`
    `` | `public Object[]` | `toArray(Object[] a)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Field Detail

    - #### public static final String CONTENT_PROPERTY

    - #### public static final String SIZE_PROPERTY

  - ### Constructor Detail

    - #### public ObservableList()

    - #### public ObservableList(List delegate)

    - #### public ObservableList(Closure test)

    - #### public ObservableList(List delegate, Closure test)

  - ### Method Detail

    - #### @Override
      public void add(int index, Object element)

    - #### @Override
      public boolean add(Object o)

    - #### @Override
      public boolean addAll(Collection c)

    - #### @Override
      public boolean addAll(int index, Collection c)

    - #### public void addPropertyChangeListener(PropertyChangeListener listener)

    - #### public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)

    - #### @Override
      public void clear()

    - #### @Override
      public boolean contains(Object o)

    - #### @Override
      public boolean containsAll(Collection c)

    - #### @Override
      public boolean equals(Object o)

    - #### protected void fireElementAddedEvent(int index, Object element)

    - #### protected void fireElementClearedEvent(List values)

    - #### protected void fireElementEvent(ElementEvent event)

    - #### protected void fireElementRemovedEvent(int index, Object element)

    - #### protected void fireElementUpdatedEvent(int index, Object oldValue, Object newValue)

    - #### protected void fireMultiElementAddedEvent(int index, List values)

    - #### protected void fireMultiElementRemovedEvent(List values)

    - #### protected void fireSizeChangedEvent(int oldValue, int newValue)

    - #### @Override
      public Object get(int index)

    - #### public List getContent()

    - #### protected List getDelegateList()

    - #### public PropertyChangeListener[] getPropertyChangeListeners()

    - #### public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)

    - #### public int getSize()

    - #### protected Closure getTest()

    - #### public boolean hasListeners(String propertyName)

    - #### @Override
      public int hashCode()

    - #### @Override
      public int indexOf(Object o)

    - #### @Override
      public boolean isEmpty()

    - #### @Override
      public Iterator iterator()

    - #### @Override
      public int lastIndexOf(Object o)

    - #### @Override
      public ListIterator listIterator()

    - #### @Override
      public ListIterator listIterator(int index)

    - #### @Override
      public Object remove(int index)

    - #### @Override
      public boolean remove(Object o)

    - #### @Override
      public boolean removeAll(Collection c)

    - #### public void removePropertyChangeListener(PropertyChangeListener listener)

    - #### public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)

    - #### @Override
      public boolean retainAll(Collection c)

    - #### @Override
      public Object set(int index, Object element)

    - #### @Override
      public int size()

    - #### @Override
      public List subList(int fromIndex, int toIndex)

    - #### @Override
      public Object[] toArray()

    - #### @Override
      public Object[] toArray(Object[] a)