com.levigo.util.base.glazedlists
Class ThresholdList<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.RangeList<E>
              extended by com.levigo.util.base.glazedlists.ThresholdList<E>
All Implemented Interfaces:
ListEventListener<E>, EventList<E>, Iterable<E>, Collection<E>, EventListener, List<E>

public final class ThresholdList<E>
extends RangeList<E>

An EventList that shows a range of the elements of the source EventList. Each element in the source EventList is assigned an integer value via an ThresholdList.Evaluator. This integer is used to determine whether the element fits in the ThresholdLists range.

By modifying the upper and lower thresholds in the range, the list can be filtered in a simple and powerful way.

The ThresholdList lends itself to use with a slider widget for manipulating one of the range's endpoints.

One use case for ThresholdList is in a media player application. By creating a ThresholdList.Evaluator for a song's bitrate, the user could limit results to MP3 files between 192 and 320kbps.

Note that the elements in the ThresholdList will be presented in order sorted by their ThresholdList.Evaluator value.

This EventList supports all write operations.

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), change threshold O(log N)
Memory: 72 bytes per element
Unit Tests: N/A
Issues: 47 137 217 218 246 277

Author:
Kevin Maltby

Nested Class Summary
static interface ThresholdList.Evaluator<E>
          Provide an integer value for a given Object in a ThresholdList.
 
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
ThresholdList(EventList<E> source, String propertyName)
          Creates a ThresholdList that provides range-filtering based on the specified EventList based on the specified integer JavaBean property.
ThresholdList(EventList<E> source, ThresholdList.Evaluator<E> evaluator)
          Creates a ThresholdList that provides range-filtering on the specified EventList using the specified ThresholdList.Evaluator.
 
Method Summary
 boolean contains(Object object)
          Returns true if this list contains the specified element.
 void dispose()
          Releases the resources consumed by this TransformedList so that it may eventually be garbage collected.
 int getEndIndex()
          Get the first index of the source EventList that is beyond the range of this RangeList.
 ThresholdList.Evaluator<E> getEvaluator()
          A convenience method to allow access to the ThresholdList.Evaluator that was provided on construction.
 int getLowerThreshold()
          Gets the lower threshold for this list
 int getStartIndex()
          Get the first index of the source EventList that is presented in this RangeList.
 int getUpperThreshold()
          Gets the upper threshold for this list
 int indexOf(Object object)
          Returns the index in this list of the first occurrence of the specified element, or -1 if this list does not contain this element.
 int lastIndexOf(Object object)
          Returns the index in this list of the last occurrence of the specified element, or -1 if this list does not contain this element.
 void setLowerThreshold(E object)
          Sets the lower threshold for this list to be the result of calling evaluate() on the given object.
 void setLowerThreshold(int lowerThreshold)
          Sets the lower threshold for this list.
 void setRange(int startIndex, int endIndex)
          Set the range of values displayed by this RangeList.
 void setTailRange(int startIndex, int endIndex)
          Set the range to include the specified indices, offset from the end of the source EventList.
 void setUpperThreshold(E object)
          Sets the upper threshold for this list to be the result of calling evaluate() on the given object.
 void setUpperThreshold(int upperThreshold)
          Sets the upper threshold for this list.
 
Methods inherited from class com.levigo.util.base.glazedlists.RangeList
adjustRange, getSourceIndex, isWritable, listChanged, setHeadRange, setMiddleRange, size
 
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, containsAll, equals, getPublisher, getReadWriteLock, hashCode, isEmpty, iterator, 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

ThresholdList

public ThresholdList(EventList<E> source,
                     String propertyName)
Creates a ThresholdList that provides range-filtering based on the specified EventList based on the specified integer JavaBean property.


ThresholdList

public ThresholdList(EventList<E> source,
                     ThresholdList.Evaluator<E> evaluator)
Creates a ThresholdList that provides range-filtering on the specified EventList using the specified ThresholdList.Evaluator.

Method Detail

setLowerThreshold

public void setLowerThreshold(E object)
Sets the lower threshold for this list to be the result of calling evaluate() on the given object.

This list can be used programmatically rather than hooking it up to a UI component. Calling this method directly while this list is connected to a particular widget could result in errors.

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


setLowerThreshold

public void setLowerThreshold(int lowerThreshold)
Sets the lower threshold for this list.

This list can be used programmatically rather than hooking it up to a UI component. Calling this method directly while this list is connected to a particular widget could result in errors.

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


getLowerThreshold

public int getLowerThreshold()
Gets the lower threshold for this list


setUpperThreshold

public void setUpperThreshold(E object)
Sets the upper threshold for this list to be the result of calling evaluate() on the given object.

This list can be used programmatically rather than hooking it up to a UI component. Calling this method directly while this list is connected to a particular widget could result in errors.

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


setUpperThreshold

public void setUpperThreshold(int upperThreshold)
Sets the upper threshold for this list.

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


getUpperThreshold

public int getUpperThreshold()
Gets the upper threshold for this list


getEvaluator

public ThresholdList.Evaluator<E> getEvaluator()
A convenience method to allow access to the ThresholdList.Evaluator that was provided on construction.


contains

public boolean contains(Object object)
Returns true if this list contains the specified element. More formally, returns true if and only if this list contains at least one element e such that (o==null ? e==null : o.equals(e)).

Specified by:
contains in interface Collection<E>
Specified by:
contains in interface List<E>
Overrides:
contains in class AbstractEventList<E>
Parameters:
object - element whose presence in this list is to be tested.
Returns:
true if this list contains the specified element.

indexOf

public int indexOf(Object object)
Returns the index in this list of the first occurrence of the specified element, or -1 if this list does not contain this element. More formally, returns the lowest index i such that (o==null ? get(i)==null : o.equals(get(i))), or -1 if there is no such index.

Specified by:
indexOf in interface List<E>
Overrides:
indexOf in class AbstractEventList<E>
Parameters:
object - element to search for.
Returns:
the index in this list of the first occurrence of the specified element, or -1 if this list does not contain this element.

lastIndexOf

public int lastIndexOf(Object object)
Returns the index in this list of the last occurrence of the specified element, or -1 if this list does not contain this element. More formally, returns the highest index i such that (o==null ? get(i)==null : o.equals(get(i))), or -1 if there is no such index.

Specified by:
lastIndexOf in interface List<E>
Overrides:
lastIndexOf in class AbstractEventList<E>
Parameters:
object - element to search for.
Returns:
the index in this list of the last occurrence of the specified element, or -1 if this list does not contain this element.

setRange

public void setRange(int startIndex,
                     int endIndex)
Set the range of values displayed by this RangeList.

Overrides:
setRange in class RangeList<E>
Parameters:
startIndex - the first index of the source EventList to show, inclusive
endIndex - the last index of the source EventList to show, exclusive

setTailRange

public void setTailRange(int startIndex,
                         int endIndex)
Set the range to include the specified indices, offset from the end of the source EventList. For example, to show the last five values, use: RangeList.setTailRange(5, 0);

To include the 3rd last and 2nd last values, use: RangeList.setTailRange(3, 1);.

Overrides:
setTailRange in class RangeList<E>

getStartIndex

public int getStartIndex()
Get the first index of the source EventList that is presented in this RangeList.

Overrides:
getStartIndex in class RangeList<E>

getEndIndex

public int getEndIndex()
Get the first index of the source EventList that is beyond the range of this RangeList.

Overrides:
getEndIndex in class RangeList<E>

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>


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