Class FilterList<E>
- java.lang.Object
-
- ca.odell.glazedlists.AbstractEventList<E>
-
- ca.odell.glazedlists.TransformedList<E,E>
-
- ca.odell.glazedlists.FilterList<E>
-
- All Implemented Interfaces:
ListEventListener<E>
,EventList<E>
,java.lang.Iterable<E>
,java.util.Collection<E>
,java.util.EventListener
,java.util.List<E>
public final class FilterList<E> extends TransformedList<E,E>
AnEventList
that shows a subset of the elements of a sourceEventList
. This subset is composed of all elements of the sourceEventList
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
. SeeEventList
for an example.Warning: This class is thread ready but not thread safe. See
EventList
for an example of thread safe code.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 ca.odell.glazedlists.TransformedList
source
-
Fields inherited from class ca.odell.glazedlists.AbstractEventList
publisher, readWriteLock, updates
-
-
Constructor Summary
Constructors Constructor Description FilterList(EventList<E> source)
Creates aFilterList
that includes a subset of the specified sourceEventList
.FilterList(EventList<E> source, Matcher<? super E> matcher)
Convenience constructor for creating aFilterList
and setting itsMatcher
.FilterList(EventList<E> source, MatcherEditor<? super E> matcherEditor)
Convenience constructor for creating aFilterList
and setting itsMatcherEditor
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
dispose()
Releases the resources consumed by thisTransformedList
so that it may eventually be garbage collected.protected int
getSourceIndex(int mutationIndex)
Gets the index in the sourceEventList
that corresponds to the specified index.protected boolean
isWritable()
Gets whether the sourceEventList
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 theMatcher
which specifies which elements shall be filtered.void
setMatcherEditor(MatcherEditor<? super E> editor)
Set theMatcherEditor
which provides a dynamicMatcher
to determine which elements shall be filtered.int
size()
Returns the number of elements in this list.-
Methods inherited from class ca.odell.glazedlists.TransformedList
add, addAll, clear, get, remove, removeAll, retainAll, set
-
Methods inherited from class ca.odell.glazedlists.AbstractEventList
add, addAll, addListEventListener, contains, containsAll, equals, getPublisher, getReadWriteLock, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, removeListEventListener, subList, toArray, toArray, toString
-
-
-
-
Constructor Detail
-
FilterList
public FilterList(EventList<E> source)
Creates aFilterList
that includes a subset of the specified sourceEventList
.
-
FilterList
public FilterList(EventList<E> source, Matcher<? super E> matcher)
Convenience constructor for creating aFilterList
and setting itsMatcher
.
-
FilterList
public FilterList(EventList<E> source, MatcherEditor<? super E> matcherEditor)
Convenience constructor for creating aFilterList
and setting itsMatcherEditor
.
-
-
Method Detail
-
setMatcher
public void setMatcher(Matcher<? super E> matcher)
Set theMatcher
which specifies which elements shall be filtered.This will remove the current
Matcher
orMatcherEditor
and refilter the entire list.
-
setMatcherEditor
public void setMatcherEditor(MatcherEditor<? super E> editor)
Set theMatcherEditor
which provides a dynamicMatcher
to determine which elements shall be filtered.This will remove the current
Matcher
orMatcherEditor
and refilter the entire list.
-
dispose
public void dispose()
Description copied from class:TransformedList
Releases the resources consumed by thisTransformedList
so that it may eventually be garbage collected.A
TransformedList
will be garbage collected without a call toTransformedList.dispose()
, but not before its sourceEventList
is garbage collected. By callingTransformedList.dispose()
, you allow theTransformedList
to be garbage collected before its sourceEventList
. This is necessary for situations where aTransformedList
is short-lived but its sourceEventList
is long-lived.Warning: It is an error to call any method on a
TransformedList
after it has been disposed.
-
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 interfaceListEventListener<E>
- Specified by:
listChanged
in classTransformedList<E,E>
- Parameters:
listChanges
- aListEvent
describing the changes to the list
-
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.
-
getSourceIndex
protected final int getSourceIndex(int mutationIndex)
Gets the index in the sourceEventList
that corresponds to the specified index. More formally, returns the index such thatthis.get(i) == source.get(getSourceIndex(i))
for all legal values ofi
.- Overrides:
getSourceIndex
in classTransformedList<E,E>
-
isWritable
protected boolean isWritable()
Gets whether the sourceEventList
is writable via this API.Extending classes must override this method in order to make themselves writable.
- Specified by:
isWritable
in classTransformedList<E,E>
-
-