org.apache.pivot.collections
Class FilteredList<T>

java.lang.Object
  extended by org.apache.pivot.collections.FilteredList<T>
All Implemented Interfaces:
Iterable<T>, Collection<T>, List<T>, Sequence<T>

public class FilteredList<T>
extends Object
implements List<T>

Provides a filtered view of a list that can be sorted independently, but remains backed by the original data. Modifications to the filtered list are propagated to the source.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.apache.pivot.collections.List
List.ItemIterator<T>, List.ListListenerList<T>
 
Nested classes/interfaces inherited from interface org.apache.pivot.collections.Sequence
Sequence.Tree<T>
 
Constructor Summary
FilteredList()
           
FilteredList(Filter<T> filter)
           
FilteredList(List<T> source)
           
FilteredList(List<T> source, Filter<T> filter)
           
 
Method Summary
 int add(T item)
          Adds an item to the view and the backing list.
 void clear()
          Clears the view and removes the cleared items from the backing list.
 T get(int index)
          Retrieves the item at the given index.
 Comparator<T> getComparator()
          Returns the collection's sort order.
 Filter<T> getFilter()
          Returns the filter.
 ListenerList<FilteredListListener<T>> getFilteredListListeners()
           
 int getLength()
          Returns the length of the list.
 ListenerList<ListListener<T>> getListListeners()
          Returns the list listener list.
 List<T> getSource()
          Returns the source list.
 int indexOf(T item)
          Returns the index of an item in the sequence.
 void insert(T item, int index)
          Inserts an item into the view and adds the item to the backing list.
 boolean isEmpty()
          Tests the emptiness of the collection.
 Iterator<T> iterator()
           
 Sequence<T> remove(int index, int count)
          Removes one or more items from view and the backing list.
 int remove(T item)
          Removes an item from the view and the backing list.
 void setComparator(Comparator<T> comparator)
          Sets the collection's sort order, re-ordering the collection's contents and ensuring that new entries preserve the sort order.
 void setFilter(Filter<T> filter)
          Sets the filter.
 void setSource(List<T> source)
          Sets the source list.
 String toString()
           
 T update(int index, T item)
          Updates an item in the view and in the backing list.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FilteredList

public FilteredList()

FilteredList

public FilteredList(List<T> source)

FilteredList

public FilteredList(Filter<T> filter)

FilteredList

public FilteredList(List<T> source,
                    Filter<T> filter)
Method Detail

getSource

public List<T> getSource()
Returns the source list.

Returns:
The source list, or null if no source is set.

setSource

public void setSource(List<T> source)
Sets the source list.

Parameters:
source - The source list, or null to clear the source.

getFilter

public Filter<T> getFilter()
Returns the filter.

Returns:
The current filter, or null if no filter is applied.

setFilter

public void setFilter(Filter<T> filter)
Sets the filter.

Parameters:
filter - The filter to apply, or null to clear the filter.

add

public int add(T item)
Adds an item to the view and the backing list.

Specified by:
add in interface List<T>
Specified by:
add in interface Sequence<T>
Parameters:
item - The item to add.
Returns:
The index at which the item was added.
See Also:
ListListener.itemInserted(List, int)

insert

public void insert(T item,
                   int index)
Inserts an item into the view and adds the item to the backing list.

Specified by:
insert in interface List<T>
Specified by:
insert in interface Sequence<T>
Parameters:
item - The item to insert.
index - The index at which the item should be inserted.
See Also:
ListListener.itemInserted(List, int)

update

public T update(int index,
                T item)
Updates an item in the view and in the backing list.

Specified by:
update in interface List<T>
Specified by:
update in interface Sequence<T>
Parameters:
index - The index of the item to update.
item - The item that will replace any existing value at the given index. The updated item must also exist in the view.
Returns:
The item that was previously stored at the given index.
See Also:
ListListener.itemUpdated(List, int, Object)

remove

public int remove(T item)
Removes an item from the view and the backing list.

Specified by:
remove in interface Sequence<T>
Parameters:
item - The item to remove.
Returns:
The index of the item that was removed, or -1 if the item could not be found.
See Also:
Sequence.remove(int, int)

remove

public Sequence<T> remove(int index,
                          int count)
Removes one or more items from view and the backing list.

Specified by:
remove in interface List<T>
Specified by:
remove in interface Sequence<T>
Parameters:
index - The starting index to remove.
count - The number of items to remove, beginning with index.
Returns:
A sequence containing the items that were removed.
See Also:
ListListener.itemsRemoved(List, int, Sequence)

clear

public void clear()
Clears the view and removes the cleared items from the backing list.

Specified by:
clear in interface Collection<T>
Specified by:
clear in interface List<T>
See Also:
ListListener.itemsRemoved(List, int, Sequence)

get

public T get(int index)
Description copied from interface: Sequence
Retrieves the item at the given index.

Specified by:
get in interface Sequence<T>
Parameters:
index - The index of the item to retrieve.

indexOf

public int indexOf(T item)
Description copied from interface: Sequence
Returns the index of an item in the sequence.

Specified by:
indexOf in interface Sequence<T>
Parameters:
item - The item to locate.
Returns:
The index of first occurrence of the item if it exists in the sequence; -1, otherwise.

isEmpty

public boolean isEmpty()
Description copied from interface: Collection
Tests the emptiness of the collection.

Specified by:
isEmpty in interface Collection<T>

getLength

public int getLength()
Description copied from interface: List
Returns the length of the list.

Specified by:
getLength in interface List<T>
Specified by:
getLength in interface Sequence<T>
Returns:
The number of items in the list, or -1 if the list's length is not known. In this case, the iterator must be used to retrieve the contents of the list.

getComparator

public Comparator<T> getComparator()
Description copied from interface: Collection
Returns the collection's sort order.

Specified by:
getComparator in interface Collection<T>
Returns:
The comparator used to order elements in the collection, or null if the sort order is undefined.
See Also:
Collection.setComparator(Comparator)

setComparator

public void setComparator(Comparator<T> comparator)
Description copied from interface: Collection
Sets the collection's sort order, re-ordering the collection's contents and ensuring that new entries preserve the sort order.

Calling this method more than once with the same comparator will re-sort the collection.

Specified by:
setComparator in interface Collection<T>
Specified by:
setComparator in interface List<T>
Parameters:
comparator - The comparator used to order elements in the collection, or null if the collection is unsorted.
See Also:
ListListener.comparatorChanged(List, Comparator)

iterator

public Iterator<T> iterator()
Specified by:
iterator in interface Iterable<T>

getListListeners

public ListenerList<ListListener<T>> getListListeners()
Description copied from interface: List
Returns the list listener list.

Specified by:
getListListeners in interface List<T>

getFilteredListListeners

public ListenerList<FilteredListListener<T>> getFilteredListListeners()

toString

public String toString()
Overrides:
toString in class Object