org.eclipse.core.databinding.observable.list

## Class WritableList<E>

- java.lang.Object
- - org.eclipse.core.databinding.observable.AbstractObservable
  - - org.eclipse.core.databinding.observable.list.ObservableList<E>
    - - org.eclipse.core.databinding.observable.list.WritableList<E>

Type Parameters:
  `E` - the type of the elements in this list

All Implemented Interfaces:
  Iterable<E>, Collection<E>, List<E>, IObservable, IObservableCollection<E>, IObservableList<E>

    public class WritableList<E>
    extends ObservableList<E>

Mutable observable list backed by an ArrayList.

This class is thread safe. All state accessing methods must be invoked from the `current realm`. Methods for adding and removing listeners may be invoked from any thread.

Since:
  1.0

### Field Summary

### Fields inherited from class org.eclipse.core.databinding.observable.list.ObservableList

`wrappedList`

### Constructor Summary

Constructors
Constructor and Description
`WritableList()` Creates an empty writable list in the default realm with a `null` element type.
`WritableList(Collection<E> collection, Object elementType)` Constructs a new instance in the default realm containing the elements of the given collection.
`WritableList(List<E> toWrap, Object elementType)` Constructs a new instance with the default realm.
`WritableList(Realm realm)` Creates an empty writable list with a `null` element type.
`WritableList(Realm realm, Collection<E> collection, Object elementType)` Constructs a new instance in the default realm containing the elements of the given collection.
`WritableList(Realm realm, List<E> toWrap, Object elementType)` Creates a writable list containing elements of the given type, wrapping an existing client-supplied list.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`boolean` `add(E element)`
`void` `add(int index, E element)`
`boolean` `addAll(Collection<? extends E> c)`
`boolean` `addAll(int index, Collection<? extends E> c)`
`protected void` `addListener(Object listenerType, IObservablesListener listener)`
`void` `clear()`
`protected Object` `clone()`
`protected void` `fireEvent(ObservableEvent event)`
`protected void` `firstListenerAdded()`
`Realm` `getRealm()`
`protected boolean` `hasListeners()`
`protected void` `lastListenerRemoved()`
`E` `move(int oldIndex, int newIndex)` Moves the element located at `oldIndex` to `newIndex`.
`E` `remove(int index)`
`boolean` `remove(Object o)`
`boolean` `removeAll(Collection<?> c)`
`protected void` `removeListener(Object listenerType, IObservablesListener listener)`
`boolean` `retainAll(Collection<?> c)`
`E` `set(int index, E element)`
`static <T> WritableList<T>` `withElementType(Object elementType)`

### Methods inherited from class org.eclipse.core.databinding.observable.list.ObservableList

`addListChangeListener, contains, containsAll, dispose, equals, fireChange, fireListChange, get, getElementType, getterCalled, hashCode, indexOf, isEmpty, isStale, iterator, lastIndexOf, listIterator, listIterator, removeListChangeListener, setStale, size, subList, toArray, toArray, toString, updateWrappedList`

### Methods inherited from class org.eclipse.core.databinding.observable.AbstractObservable

`addChangeListener, addDisposeListener, addStaleListener, checkRealm, fireStale, isDisposed, removeChangeListener, removeDisposeListener, removeStaleListener`

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

`finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.util.List

`replaceAll, sort, spliterator`

### Methods inherited from interface org.eclipse.core.databinding.observable.IObservable

`addChangeListener, addDisposeListener, addStaleListener, getRealm, isDisposed, removeChangeListener, removeDisposeListener, removeStaleListener`

### Methods inherited from interface java.util.Collection

`parallelStream, removeIf, stream`

### Methods inherited from interface java.lang.Iterable

`forEach`

### Constructor Detail

#### WritableList

    public WritableList()

Creates an empty writable list in the default realm with a `null` element type.

#### WritableList

    public WritableList(Realm realm)

Creates an empty writable list with a `null` element type.

Parameters:
  `realm` - the observable's realm

#### WritableList

    public WritableList(List<E> toWrap,
                        Object elementType)

Constructs a new instance with the default realm. Note that for backwards compatibility reasons, the contents of the created WritableList will change with the contents of the given list. If this is not desired, `WritableList(Collection, Object)` should be used by casting the first argument to `Collection`.

Parameters:
  `toWrap` - The java.util.List to wrap
  `elementType` - can be `null`

#### WritableList

    public WritableList(Collection<E> collection,
                        Object elementType)

Constructs a new instance in the default realm containing the elements of the given collection. Changes to the given collection after calling this method do not affect the contents of the created WritableList.

Parameters:
  `collection` - the collection to copy
  `elementType` - can be `null`
Since:
  1.2

#### WritableList

    public WritableList(Realm realm,
                        List<E> toWrap,
                        Object elementType)

Creates a writable list containing elements of the given type, wrapping an existing client-supplied list. Note that for backwards compatibility reasons, the contents of the created WritableList will change with the contents of the given list. If this is not desired, `WritableList(Realm, Collection, Object)` should be used by casting the second argument to `Collection`.

Parameters:
  `realm` - the observable's realm
  `toWrap` - The java.util.List to wrap
  `elementType` - can be `null`

#### WritableList

    public WritableList(Realm realm,
                        Collection<E> collection,
                        Object elementType)

Constructs a new instance in the default realm containing the elements of the given collection. Changes to the given collection after calling this method do not affect the contents of the created WritableList.

Parameters:
  `realm` - the observable's realm
  `collection` - the collection to copy
  `elementType` - can be `null`
Since:
  1.2

### Method Detail

#### set

    public E set(int index,
                 E element)

Specified by:
  `set` in interface `List<E>`
Specified by:
  `set` in interface `IObservableList<E>`
Overrides:
  `set` in class `ObservableList<E>`

#### move

    public E move(int oldIndex,
                  int newIndex)

Description copied from class: `ObservableList`
Moves the element located at `oldIndex` to `newIndex`. This method is equivalent to calling `add(newIndex, remove(oldIndex))`.

Subclasses should override this method to deliver list change notification for the remove and add operations in the same ListChangeEvent, as this allows `ListDiff.accept(ListDiffVisitor)` to recognize the operation as a move.

Specified by:
  `move` in interface `IObservableList<E>`
Overrides:
  `move` in class `ObservableList<E>`
Parameters:
  `oldIndex` - the element's position before the move. Must be within the range `0 <= oldIndex < size()`.
  `newIndex` - the element's position after the move. Must be within the range `0 <= newIndex < size()`.
Returns:
  the element that was moved.
Since:
  1.1
See Also:
  `ListDiffVisitor.handleMove(int, int, Object)`, `ListDiff.accept(ListDiffVisitor)`

#### remove

    public E remove(int index)

Specified by:
  `remove` in interface `List<E>`
Specified by:
  `remove` in interface `IObservableList<E>`
Overrides:
  `remove` in class `ObservableList<E>`

#### add

    public boolean add(E element)

Specified by:
  `add` in interface `Collection<E>`
Specified by:
  `add` in interface `List<E>`
Specified by:
  `add` in interface `IObservableList<E>`
Overrides:
  `add` in class `ObservableList<E>`

#### add

    public void add(int index,
                    E element)

Specified by:
  `add` in interface `List<E>`
Overrides:
  `add` in class `ObservableList<E>`

#### addAll

    public boolean addAll(Collection<? extends E> c)

Specified by:
  `addAll` in interface `Collection<E>`
Specified by:
  `addAll` in interface `List<E>`
Specified by:
  `addAll` in interface `IObservableList<E>`
Overrides:
  `addAll` in class `ObservableList<E>`

#### addAll

    public boolean addAll(int index,
                          Collection<? extends E> c)

Specified by:
  `addAll` in interface `List<E>`
Specified by:
  `addAll` in interface `IObservableList<E>`
Overrides:
  `addAll` in class `ObservableList<E>`

#### remove

    public boolean remove(Object o)

Specified by:
  `remove` in interface `Collection<E>`
Specified by:
  `remove` in interface `List<E>`
Specified by:
  `remove` in interface `IObservableList<E>`
Overrides:
  `remove` in class `ObservableList<E>`

#### removeAll

    public boolean removeAll(Collection<?> c)

Specified by:
  `removeAll` in interface `Collection<E>`
Specified by:
  `removeAll` in interface `List<E>`
Specified by:
  `removeAll` in interface `IObservableList<E>`
Overrides:
  `removeAll` in class `ObservableList<E>`

#### retainAll

    public boolean retainAll(Collection<?> c)

Specified by:
  `retainAll` in interface `Collection<E>`
Specified by:
  `retainAll` in interface `List<E>`
Specified by:
  `retainAll` in interface `IObservableList<E>`
Overrides:
  `retainAll` in class `ObservableList<E>`

#### clear

    public void clear()

Specified by:
  `clear` in interface `Collection<E>`
Specified by:
  `clear` in interface `List<E>`
Overrides:
  `clear` in class `ObservableList<E>`

#### withElementType

    public static <T> WritableList<T> withElementType(Object elementType)

Parameters:
  `elementType` - can be `null`
Returns:
  new list with the default realm.

#### addListener

    protected void addListener(Object listenerType,
                               IObservablesListener listener)

Parameters:
  `listenerType` -
  `listener` -

#### removeListener

    protected void removeListener(Object listenerType,
                                  IObservablesListener listener)

Parameters:
  `listenerType` -
  `listener` -

#### hasListeners

    protected boolean hasListeners()

#### fireEvent

    protected void fireEvent(ObservableEvent event)

#### firstListenerAdded

    protected void firstListenerAdded()

#### lastListenerRemoved

    protected void lastListenerRemoved()

#### getRealm

    public Realm getRealm()

Returns:
  Returns the realm.

#### clone

    protected Object clone()
                    throws CloneNotSupportedException

Overrides:
  `clone` in class `Object`
Throws:
  `CloneNotSupportedException`