Class ThresholdList<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 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.

    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
    • 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
      • contains

        public boolean contains​(java.lang.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 java.util.Collection<E>
        Specified by:
        contains in interface java.util.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​(java.lang.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 java.util.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​(java.lang.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 java.util.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>