Package: groovy.util

## [Java] Enum ChangeType

- groovy.util.ObservableSet.ChangeType

- - ### Enum Constants Summary

    Enum constants classes
    Enum constant | Description
    --- | ---
    `ADDED` |
    `CLEARED` |
    `MULTI_ADD` |
    `MULTI_REMOVE` |
    `NONE` |
    `REMOVED` |

  - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static Object` | `newValue` |
    `static Object` | `oldValue` | Set decorator that will trigger PropertyChangeEvents when a value changes.

  - ### Inherited Methods Summary

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

- - ### Enum Constant Detail

    - #### ObservableSet.ChangeType ADDED

    - #### ObservableSet.ChangeType CLEARED

    - #### ObservableSet.ChangeType MULTI_ADD

    - #### ObservableSet.ChangeType MULTI_REMOVE

    - #### ObservableSet.ChangeType NONE

    - #### ObservableSet.ChangeType REMOVED

  - ### Field Detail

    - #### public static final Object newValue

    - #### public static final Object oldValue

      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.
      Authors:
        Andres Almiray