Package: groovy.util

## [Java] Enum ChangeType

- groovy.util.ObservableList.ChangeType

- - ### Enum Constants Summary

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

  - ### Field Summary

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

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `static ChangeType` | `resolve(int ordinal)`

  - ### Inherited Methods Summary

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

- - ### Enum Constant Detail

    - #### ObservableList.ChangeType ADDED

    - #### ObservableList.ChangeType CLEARED

    - #### ObservableList.ChangeType MULTI_ADD

    - #### ObservableList.ChangeType MULTI_REMOVE

    - #### ObservableList.ChangeType NONE

    - #### ObservableList.ChangeType REMOVED

    - #### ObservableList.ChangeType UPDATED

  - ### Field Detail

    - #### public static final Object newValue

    - #### public static final Object oldValue

      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.

  - ### Method Detail

    - #### public static ChangeType resolve(int ordinal)