Package org.eclipse.gef.common.beans.property

## Class ReadOnlyListWrapperEx<E>

- java.lang.Object
- - javafx.beans.binding.ListExpression<E>
  - - javafx.beans.property.ReadOnlyListProperty<E>
    - - javafx.beans.property.ListProperty<E>
      - - javafx.beans.property.ListPropertyBase<E>
        - - javafx.beans.property.SimpleListProperty<E>
          - - javafx.beans.property.ReadOnlyListWrapper<E>
            - - org.eclipse.gef.common.beans.property.ReadOnlyListWrapperEx<E>

Type Parameters:
  `E` - The element type of the wrapped `ObservableList`.

All Implemented Interfaces:
  `java.lang.Iterable<E>`, `java.util.Collection<E>`, `java.util.List<E>`, `javafx.beans.Observable`, `javafx.beans.property.Property<javafx.collections.ObservableList<E>>`, `javafx.beans.property.ReadOnlyProperty<javafx.collections.ObservableList<E>>`, `javafx.beans.value.ObservableListValue<E>`, `javafx.beans.value.ObservableObjectValue<javafx.collections.ObservableList<E>>`, `javafx.beans.value.ObservableValue<javafx.collections.ObservableList<E>>`, `javafx.beans.value.WritableListValue<E>`, `javafx.beans.value.WritableObjectValue<javafx.collections.ObservableList<E>>`, `javafx.beans.value.WritableValue<javafx.collections.ObservableList<E>>`, `javafx.collections.ObservableList<E>`

    public class ReadOnlyListWrapperEx<E>
    extends javafx.beans.property.ReadOnlyListWrapper<E>

A replacement for `ReadOnlyListWrapper` to fix the following JavaFX issues:

- Change notifications are fired even when the observed value did not change.(https://bugs.openjdk.java.net/browse/JDK-8089169)
- Bidirectional binding not working (https://bugs.openjdk.java.net/browse/JDK-8089557): fixed by not forwarding listeners to the nested read-only property but rather keeping the lists of listeners distinct.

### Constructor Summary

Constructors
`ReadOnlyListWrapperEx()` Creates a new unnamed `ReadOnlyListWrapperEx`.
`ReadOnlyListWrapperEx​(java.lang.Object bean, java.lang.String name)` Creates a new named `ReadOnlyListWrapperEx` related to the given bean.
`ReadOnlyListWrapperEx​(java.lang.Object bean, java.lang.String name, javafx.collections.ObservableList<E> initialValue)` Creates a new named `ReadOnlyListWrapperEx`, related to the given bean and provided with the initial value.
`ReadOnlyListWrapperEx​(javafx.collections.ObservableList<E> initialValue)` Creates a new unnamed `ReadOnlyListWrapperEx` with the given initial value.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addListener​(javafx.beans.InvalidationListener listener)`
`void` `addListener​(javafx.beans.value.ChangeListener<? super javafx.collections.ObservableList<E>> listener)`
`void` `addListener​(javafx.collections.ListChangeListener<? super E> listener)`
`protected void` `fireValueChangedEvent()`
`protected void` `fireValueChangedEvent​(javafx.collections.ListChangeListener.Change<? extends E> change)`
`javafx.beans.property.ReadOnlyListProperty<E>` `getReadOnlyProperty()`
`int` `hashCode()`
`void` `removeListener​(javafx.beans.InvalidationListener listener)`
`void` `removeListener​(javafx.beans.value.ChangeListener<? super javafx.collections.ObservableList<E>> listener)`
`void` `removeListener​(javafx.collections.ListChangeListener<? super E> listener)`

### Methods inherited from class javafx.beans.property.SimpleListProperty

`getBean, getName`

### Methods inherited from class javafx.beans.property.ListPropertyBase

`bind, emptyProperty, get, invalidated, isBound, set, sizeProperty, toString, unbind`

### Methods inherited from class javafx.beans.property.ListProperty

`bindBidirectional, setValue, unbindBidirectional`

### Methods inherited from class javafx.beans.property.ReadOnlyListProperty

`bindContent, bindContentBidirectional, equals, unbindContent, unbindContentBidirectional`

### Methods inherited from class javafx.beans.binding.ListExpression

`add, add, addAll, addAll, addAll, asString, clear, contains, containsAll, get, getSize, getValue, indexOf, isEmpty, isEqualTo, isNotEqualTo, isNotNull, isNull, iterator, lastIndexOf, listExpression, listIterator, listIterator, remove, remove, remove, removeAll, removeAll, retainAll, retainAll, set, setAll, setAll, size, subList, toArray, toArray, valueAt, valueAt`

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

`clone, finalize, getClass, notify, notifyAll, 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

`add, add, addAll, addAll, clear, contains, containsAll, equals, get, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray`

### Methods inherited from interface javafx.collections.ObservableList

`addAll, filtered, remove, removeAll, retainAll, setAll, setAll, sorted, sorted`

### Methods inherited from interface javafx.beans.value.ObservableValue

`getValue`

### Methods inherited from interface javafx.beans.value.WritableValue

`getValue`

### Constructor Detail

#### ReadOnlyListWrapperEx

    public ReadOnlyListWrapperEx()

Creates a new unnamed `ReadOnlyListWrapperEx`.

#### ReadOnlyListWrapperEx

    public ReadOnlyListWrapperEx​(java.lang.Object bean,
                                 java.lang.String name)

Creates a new named `ReadOnlyListWrapperEx` related to the given bean.

Parameters:
  `bean` - The bean to relate the to be created `ReadOnlyListWrapperEx` to.
  `name` - The name for the to be created `ReadOnlyListWrapperEx`.

#### ReadOnlyListWrapperEx

    public ReadOnlyListWrapperEx​(java.lang.Object bean,
                                 java.lang.String name,
                                 javafx.collections.ObservableList<E> initialValue)

Creates a new named `ReadOnlyListWrapperEx`, related to the given bean and provided with the initial value.

Parameters:
  `bean` - The bean to relate the to be created `ReadOnlyListWrapperEx` to.
  `name` - The name for the to be created `ReadOnlyListWrapperEx`.
  `initialValue` - The initial value of the to be created `ReadOnlyListWrapperEx`.

#### ReadOnlyListWrapperEx

    public ReadOnlyListWrapperEx​(javafx.collections.ObservableList<E> initialValue)

Creates a new unnamed `ReadOnlyListWrapperEx` with the given initial value.

Parameters:
  `initialValue` - The initial value of the to be created `ReadOnlyListWrapperEx`.

### Method Detail

#### addListener

    public void addListener​(javafx.beans.value.ChangeListener<? super javafx.collections.ObservableList<E>> listener)

Specified by:
  `addListener` in interface `javafx.beans.value.ObservableValue<E>`
Overrides:
  `addListener` in class `javafx.beans.property.ListPropertyBase<E>`

#### addListener

    public void addListener​(javafx.beans.InvalidationListener listener)

Specified by:
  `addListener` in interface `javafx.beans.Observable`
Overrides:
  `addListener` in class `javafx.beans.property.ListPropertyBase<E>`

#### addListener

    public void addListener​(javafx.collections.ListChangeListener<? super E> listener)

Specified by:
  `addListener` in interface `javafx.collections.ObservableList<E>`
Overrides:
  `addListener` in class `javafx.beans.property.ListPropertyBase<E>`

#### fireValueChangedEvent

    protected void fireValueChangedEvent()

Overrides:
  `fireValueChangedEvent` in class `javafx.beans.property.ReadOnlyListWrapper<E>`

#### fireValueChangedEvent

    protected void fireValueChangedEvent​(javafx.collections.ListChangeListener.Change<? extends E> change)

Overrides:
  `fireValueChangedEvent` in class `javafx.beans.property.ReadOnlyListWrapper<E>`

#### getReadOnlyProperty

    public javafx.beans.property.ReadOnlyListProperty<E> getReadOnlyProperty()

Overrides:
  `getReadOnlyProperty` in class `javafx.beans.property.ReadOnlyListWrapper<E>`

#### hashCode

    public int hashCode()

Specified by:
  `hashCode` in interface `java.util.Collection<E>`
Specified by:
  `hashCode` in interface `java.util.List<E>`
Overrides:
  `hashCode` in class `javafx.beans.property.ReadOnlyListProperty<E>`

#### removeListener

    public void removeListener​(javafx.beans.value.ChangeListener<? super javafx.collections.ObservableList<E>> listener)

Specified by:
  `removeListener` in interface `javafx.beans.value.ObservableValue<E>`
Overrides:
  `removeListener` in class `javafx.beans.property.ListPropertyBase<E>`

#### removeListener

    public void removeListener​(javafx.beans.InvalidationListener listener)

Specified by:
  `removeListener` in interface `javafx.beans.Observable`
Overrides:
  `removeListener` in class `javafx.beans.property.ListPropertyBase<E>`

#### removeListener

    public void removeListener​(javafx.collections.ListChangeListener<? super E> listener)

Specified by:
  `removeListener` in interface `javafx.collections.ObservableList<E>`
Overrides:
  `removeListener` in class `javafx.beans.property.ListPropertyBase<E>`