com.levigo.util.base.glazedlists
Class FilterList<E>

java.lang.Object
  extended by com.levigo.util.base.glazedlists.AbstractEventList<E>
      extended by com.levigo.util.base.glazedlists.TransformedList<E,E>
          extended by com.levigo.util.base.glazedlists.FilterList<E>
All Implemented Interfaces:
ListEventListener<E>, EventList<E>, Iterable<E>, Collection<E>, EventListener, List<E>

public final class FilterList<E>
extends TransformedList<E,E>

An EventList that shows a subset of the elements of a source EventList. This subset is composed of all elements of the source EventList that match the filter.

The filter can be static or dynamic. Changing the behaviour of the filter will change which elements of the source list are included.

Warning: This class breaks the contract required by List. See EventList for an example.

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

Overview
EventList Overview
Writable: yes
Concurrency: thread ready, not thread safe
Performance: reads: O(log N), writes O(log N), filter changes O(N)
Memory: 0 to 26 bytes per element
Unit Tests: N/A
Issues: 1 2 7 46 187 254 312

Author:
Jesse Wilson, James Lemieux

Field Summary
 
Fields inherited from class com.levigo.util.base.glazedlists.TransformedList
source
 
Fields inherited from class com.levigo.util.base.glazedlists.AbstractEventList
publisher, readWriteLock, updates
 
Constructor Summary
FilterList(EventList<E> source)
          Creates a FilterList that includes a subset of the specified source EventList.
FilterList(EventList<E> source, Matcher<? super E> matcher)
          Convenience constructor for creating a FilterList and setting its Matcher.
FilterList(EventList<E> source, MatcherEditor<? super E> matcherEditor)
          Convenience constructor for creating a FilterList and setting its MatcherEditor.
 
Method Summary
 void dispose()
          Releases the resources consumed by this TransformedList so that it may eventually be garbage collected.
protected  int getSourceIndex(int mutationIndex)
          Gets the index in the source EventList that corresponds to the specified index.
protected  boolean isWritable()
          Gets whether the source EventList is writable via this API.
 void listChanged(ListEvent<E> listChanges)
          When the underlying list changes, this notification allows the object to repaint itself or update itself as necessary.
 void setMatcher(Matcher<? super E> matcher)
          Set the Matcher which specifies which elements shall be filtered.
 void setMatcherEditor(MatcherEditor<? super E> editor)
          Set the MatcherEditor which provides a dynamic Matcher to determine which elements shall be filtered.
 int size()
          Returns the number of elements in this list.
 
Methods inherited from class com.levigo.util.base.glazedlists.TransformedList
add, addAll, clear, get, remove, removeAll, retainAll, set
 
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
 

Constructor Detail

FilterList

public FilterList(EventList<E> source)
Creates a FilterList that includes a subset of the specified source EventList.


FilterList

public FilterList(EventList<E> source,
                  Matcher<? super E> matcher)
Convenience constructor for creating a FilterList and setting its Matcher.


FilterList

public FilterList(EventList<E> source,
                  MatcherEditor<? super E> matcherEditor)
Convenience constructor for creating a FilterList and setting its MatcherEditor.

Method Detail

setMatcher

public void setMatcher(Matcher<? super E> matcher)
Set the Matcher which specifies which elements shall be filtered.

This will remove the current Matcher or MatcherEditor and refilter the entire list.


setMatcherEditor

public void setMatcherEditor(MatcherEditor<? super E> editor)
Set the MatcherEditor which provides a dynamic Matcher to determine which elements shall be filtered.

This will remove the current Matcher or MatcherEditor and refilter the entire 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 TransformedList.dispose(), but not before its source EventList is garbage collected. By calling TransformedList.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>
Overrides:
dispose in class TransformedList<E,E>

listChanged

public final void listChanged(ListEvent<E> 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<E>
Specified by:
listChanged in class TransformedList<E,E>

size

public final 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>
Overrides:
size in class TransformedList<E,E>
Returns:
the number of elements in this list.

getSourceIndex

protected final 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.

Overrides:
getSourceIndex in class TransformedList<E,E>

isWritable

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

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

Specified by:
isWritable in class TransformedList<E,E>


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