com.levigo.util.base.glazedlists
Class TransformedList<S,E>

java.lang.Object
  extended by com.levigo.util.base.glazedlists.AbstractEventList<E>
      extended by com.levigo.util.base.glazedlists.TransformedList<S,E>
All Implemented Interfaces:
ListEventListener<S>, EventList<E>, Iterable<E>, Collection<E>, EventListener, List<E>
Direct Known Subclasses:
CollectionList, FilterList, FreezableList, FunctionList, GroupingList, ObservableElementList, PopularityList, RangeList, SeparatorList, SequenceList, SortedList, TransactionList, UniqueList

public abstract class TransformedList<S,E>
extends AbstractEventList<E>
implements ListEventListener<S>

A convenience class for EventLists that decorate another EventList. Extending classes transform their source EventList by modifying the order, visibility and value of its elements.

Extending classes may implement the method getSourceIndex(int) to translate between indices of this and indices of the source.

Extending classes may implement the method isWritable() to make the source writable via this API.

Extending classes must explicitly call AbstractEventList.addListEventListener(ListEventListener) to receive change notifications from the source EventList.

Warning: This class is thread ready but not thread safe. See EventList for an example of thread safe code.

Author:
Jesse Wilson

Field Summary
protected  EventList<S> source
          the event list to transform
 
Fields inherited from class com.levigo.util.base.glazedlists.AbstractEventList
publisher, readWriteLock, updates
 
Constructor Summary
protected TransformedList(EventList<S> source)
          Creates a TransformedList to transform the specified EventList.
 
Method Summary
 void add(int index, E value)
          Inserts the specified element at the specified position in this list (optional operation).
 boolean addAll(int index, Collection<? extends E> values)
          Inserts all of the elements in the specified collection into this list at the specified position (optional operation).
 void clear()
          Removes all of the elements from this list (optional operation).
 void dispose()
          Releases the resources consumed by this TransformedList so that it may eventually be garbage collected.
 E get(int index)
          Returns the element at the specified position in this list.
protected  int getSourceIndex(int mutationIndex)
          Gets the index in the source EventList that corresponds to the specified index.
protected abstract  boolean isWritable()
          Gets whether the source EventList is writable via this API.
abstract  void listChanged(ListEvent<S> listChanges)
          When the underlying list changes, this notification allows the object to repaint itself or update itself as necessary.
 E remove(int index)
          Removes the element at the specified position in this list (optional operation).
 boolean removeAll(Collection<?> collection)
          Removes from this list all the elements that are contained in the specified collection (optional operation).
 boolean retainAll(Collection<?> values)
          Retains only the elements in this list that are contained in the specified collection (optional operation).
 E set(int index, E value)
          Replaces the element at the specified position in this list with the specified element (optional operation).
 int size()
          Returns the number of elements in this list.
 
Methods inherited from class com.levigo.util.base.glazedlists.AbstractEventList
add, addAll, addListEventListener, contains, containsAll, equals, getPublisher, getReadWriteLock, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, removeListEventListener, subList, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

source

protected EventList<S> source
the event list to transform

Constructor Detail

TransformedList

protected TransformedList(EventList<S> source)
Creates a TransformedList to transform the specified EventList.

Parameters:
source - the EventList to transform
Method Detail

getSourceIndex

protected int getSourceIndex(int mutationIndex)
Gets the index in the source EventList that corresponds to the specified index. More formally, returns the index such that
this.get(i) == source.get(getSourceIndex(i)) for all legal values of i.


isWritable

protected abstract boolean isWritable()
Gets whether the source EventList is writable via this API.

Extending classes must override this method in order to make themselves writable.


listChanged

public abstract void listChanged(ListEvent<S> listChanges)
When the underlying list changes, this notification allows the object to repaint itself or update itself as necessary.

It is mandatory that the calling thread has obtained the write lock on the source list. This is because the calling thread will have written to the source list to cause this event. This condition guarantees that no writes can occur while the listener is handling this event. It is an error to write to the source list while processing an event.

Specified by:
listChanged in interface ListEventListener<S>

add

public void add(int index,
                E value)
Inserts the specified element at the specified position in this list (optional operation). Shifts the element currently at that position (if any) and any subsequent elements to the right (adds one to their indices).

Specified by:
add in interface List<E>
Overrides:
add in class AbstractEventList<E>
Parameters:
index - index at which the specified element is to be inserted.
value - element to be inserted.

addAll

public boolean addAll(int index,
                      Collection<? extends E> values)
Inserts all of the elements in the specified collection into this list at the specified position (optional operation). Shifts the element currently at that position (if any) and any subsequent elements to the right (increases their indices). The new elements will appear in this list in the order that they are returned by the specified collection's iterator. The behavior of this operation is unspecified if the specified collection is modified while the operation is in progress. (Note that this will occur if the specified collection is this list, and it's nonempty.)

Specified by:
addAll in interface List<E>
Overrides:
addAll in class AbstractEventList<E>
Parameters:
index - index at which to insert first element from the specified collection.
values - elements to be inserted into this list.
Returns:
true if this list changed as a result of the call.

clear

public void clear()
Removes all of the elements from this list (optional operation). This list will be empty after this call returns (unless it throws an exception).

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

get

public E get(int index)
Returns the element at the specified position in this list.

Specified by:
get in interface List<E>
Specified by:
get in class AbstractEventList<E>
Parameters:
index - index of element to return.
Returns:
the element at the specified position in this list.

remove

public E remove(int index)
Removes the element at the specified position in this list (optional operation). Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the list.

Specified by:
remove in interface List<E>
Overrides:
remove in class AbstractEventList<E>
Parameters:
index - the index of the element to removed.
Returns:
the element previously at the specified position.

removeAll

public boolean removeAll(Collection<?> collection)
Removes from this list all the elements that are contained in the specified collection (optional operation).

Specified by:
removeAll in interface Collection<E>
Specified by:
removeAll in interface List<E>
Overrides:
removeAll in class AbstractEventList<E>
Parameters:
collection - collection that defines which elements will be removed from this list.
Returns:
true if this list changed as a result of the call.
See Also:
AbstractEventList.remove(Object), AbstractEventList.contains(Object)

retainAll

public boolean retainAll(Collection<?> values)
Retains only the elements in this list that are contained in the specified collection (optional operation). In other words, removes from this list all the elements that are not contained in the specified collection.

Specified by:
retainAll in interface Collection<E>
Specified by:
retainAll in interface List<E>
Overrides:
retainAll in class AbstractEventList<E>
Parameters:
values - collection that defines which elements this set will retain.
Returns:
true if this list changed as a result of the call.
See Also:
AbstractEventList.remove(Object), AbstractEventList.contains(Object)

set

public E set(int index,
             E value)
Replaces the element at the specified position in this list with the specified element (optional operation).

Specified by:
set in interface List<E>
Overrides:
set in class AbstractEventList<E>
Parameters:
index - index of element to replace.
value - element to be stored at the specified position.
Returns:
the element previously at the specified position.

size

public int size()
Returns the number of elements in this list. If this list contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.

Specified by:
size in interface Collection<E>
Specified by:
size in interface List<E>
Specified by:
size in class AbstractEventList<E>
Returns:
the number of elements in this list.

dispose

public void dispose()
Releases the resources consumed by this TransformedList so that it may eventually be garbage collected.

A TransformedList will be garbage collected without a call to dispose(), but not before its source EventList is garbage collected. By calling dispose(), you allow the TransformedList to be garbage collected before its source EventList. This is necessary for situations where a TransformedList is short-lived but its source EventList is long-lived.

Warning: It is an error to call any method on a TransformedList after it has been disposed.

Specified by:
dispose in interface EventList<E>


Copyright © 1995-2020 levigo holding gmbh. All Rights Reserved.