Package: groovy.util

## [Java] Enum ChangeType

- groovy.util.ObservableMap.ChangeType

- - ### Enum Constants Summary

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

  - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static Object` | `newValue` |
    `static Object` | `oldValue` | Map 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

    - #### ObservableMap.ChangeType ADDED

    - #### ObservableMap.ChangeType CLEARED

    - #### ObservableMap.ChangeType MULTI

    - #### ObservableMap.ChangeType NONE

    - #### ObservableMap.ChangeType REMOVED

    - #### ObservableMap.ChangeType UPDATED

  - ### Field Detail

    - #### public static final Object newValue

    - #### public static final Object oldValue

      Map 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 ObservableMap( {!(it instanceof Closure)} )

           // skip all properties whose name matches a regex
           def map = new ObservableMap( { 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
      - ObservableMap.PropertyAddedEvent - a new property is added to the map
      - ObservableMap.PropertyRemovedEvent - a property is removed from the map
      - ObservableMap.PropertyUpdatedEvent - a property changes value (same as regular PropertyChangeEvent)
      - ObservableMap.PropertyClearedEvent - all properties have been removed from the map
      - ObservableMap.MultiPropertyEvent - triggered by calling map.putAll(), contains Added|Updated events

      Bound properties

      - `content` - read-only.
      - `size` - read-only.

  - ### Method Detail

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