Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
ca.odell.glazedlists.matchers.AbstractMatcherEditor<E>
ca.odell.glazedlists.matchers.ThreadedMatcherEditor<E>
public class ThreadedMatcherEditor<E>
extends AbstractMatcherEditor<E>
ThreadedMatcherEditor
enqueues MatcherEvents as they
they are received from the source MatcherEditor. The MatcherEvents on the
queue are fired by another Thread as rapidly as the MatcherEditorListeners
can consume them. Two methods exist on this class which enable subclasses
to customize aspects of processing queued MatcherEvents:
executeMatcherEventQueueRunnable(Runnable)
is consulted when
a Thread must be selected to execute the given Runnable which will
drain the queue of MatcherEvents. Subclasses may override to
customize which Thread is used.
coalesceMatcherEvents(List)
is used to compress
many enqueued MatcherEvents into a single representative
MatcherEvent. This implies a contract between all registered
MatcherEditorListeners and this ThreadedMatcherEditor
that
guarantees that processing the coalesced MatcherEvent is equivalent
to processing all MatcherEvents sequentially.
MatcherEditor threadedMatcherEditor = new ThreadedMatcherEditor(new AnyMatcherEditor()); FilterList filterList = new FilterList(new BasicEventList(), threadedMatcherEditor);
Field Summary |
Fields inherited from class ca.odell.glazedlists.matchers.AbstractMatcherEditor<E> | |
currentMatcher |
Constructor Summary | |
|
Method Summary | |
protected Event |
|
protected void |
|
Matcher |
|
Methods inherited from class ca.odell.glazedlists.matchers.AbstractMatcherEditor<E> | |
addMatcherEditorListener , fireChanged , fireChangedMatcher , fireConstrained , fireMatchAll , fireMatchNone , fireRelaxed , getMatcher , isCurrentlyMatchingAll , isCurrentlyMatchingNone , removeMatcherEditorListener |
public ThreadedMatcherEditor(MatcherEditorsource)
Creates a ThreadedMatcherEditor which wraps the givensource
. MatcherEvents fired from thesource
will be enqueued within this MatcherEditor until they are processed on an alternate Thread.
- Parameters:
source
- the MatcherEditor to wrap with buffering functionality
protected EventcoalesceMatcherEvents(List > matcherEvents)
This method implements the strategy for coalescing many queued MatcherEvents into a single representative MatcherEvent. Listeners which process the MatcherEvent returned from this method should match the state that would exist if each of thematcherEvents
were fired sequentially. In general, any group ofmatcherEvents
can be succesfully coalesced as a single MatcherEvent with a type ofchanged
, however, this method's default implementation uses a few heuristics to do more intelligent coalescing in order to gain speed improvements:Note that
- if
matcherEvents
ends in a MatcherEvent which is aMatcherEditor.Event.MATCH_ALL
orMatcherEditor.Event.MATCH_NONE
type, the last MatcherEvent is returned, regardless of previous MatcherEvents- if
matcherEvents
only contains a series of monotonically constraining MatcherEvents, the final MatcherEvent is returned- if
matcherEvents
only contains a series of monotonically relaxing MatcherEvents, the final MatcherEvent is returned- if
matcherEvents
contains both constraining and relaxing MatcherEvents, the final MatcherEvent is returned with its type asMatcherEditor.Event.CHANGED
1, 2,
and3
above merely represent safe optimizations of the type of MatcherEvent that can be returned. It could also have been returned as a MatcherEvent with a type ofMatcherEditor.Event.CHANGED
and be assumed to work correctly, though potentially less efficiently, since it is a more generic type of change. Subclasses with the ability to fire precise MatcherEvents with fine grain types (i.e.relaxed
orconstrained
) when coalescingmatcherEvents
in situations not recounted above may do so by overiding this method.
- Parameters:
matcherEvents
- an array of MatcherEvents recorded in the order they were received from the source MatcherEditor
- Returns:
- a single MatcherEvent which, when fired, will result in the same state as if all
matcherEvents
had been fired sequentially
protected void executeMatcherEventQueueRunnable(Runnable runnable)
This method executes the givenrunnable
on a Thread. The particular Thread chosen to execute the Runnable is left as an implementation detail. By default, a new Thread namedMatcherQueueThread
is constructed to execute therunnable
each time this method is called. Subclasses may override this method to use any Thread selection strategy they wish.
- Parameters:
runnable
- a Runnable to execute on an alternate Thread
public MatchergetMatcher()
Returns the current Matcher specified by the sourceMatcherEditor
.
- Specified by:
- getMatcher in interface MatcherEditor<E>
- Overrides:
- getMatcher in interface AbstractMatcherEditor<E>
- Returns:
- the current Matcher specified by the source
MatcherEditor