ca.odell.glazedlists
Class RangeList<E>

java.lang.Object
  extended by ca.odell.glazedlists.AbstractEventList<E>
      extended by ca.odell.glazedlists.TransformedList<E,E>
          extended by ca.odell.glazedlists.RangeList<E>
All Implemented Interfaces:
ListEventListener<E>, EventList<E>, Iterable<E>, Collection<E>, EventListener, List<E>
Direct Known Subclasses:
ThresholdList

public class RangeList<E>
extends TransformedList<E,E>

This EventList shows values from a continuous range of indices from a source EventList. It can be used to limit the length of a list to a desired size.

EventList Overview
Writable:yes
Concurrency:thread ready, not thread safe
Performance:reads: O(1), writes O(1), change range O(1)
Memory:0 bytes per element
Unit Tests:N/A
Issues: 238 278

Author:
Jesse Wilson

Field Summary
 
Fields inherited from class ca.odell.glazedlists.TransformedList
source
 
Fields inherited from class ca.odell.glazedlists.AbstractEventList
publisher, readWriteLock, updates
 
Constructor Summary
RangeList(EventList<E> source)
          Create a new RangeList that limits the specified EventList to a desired range.
 
Method Summary
protected  void adjustRange()
          Adjust the range of the RangeList in response to changes in the source list or the desired start and end indices.
 int getEndIndex()
          Get the first index of the source EventList that is beyond the range of this RangeList.
protected  int getSourceIndex(int mutationIndex)
          Gets the index in the source EventList that corresponds to the specified index.
 int getStartIndex()
          Get the first index of the source EventList that is presented in this RangeList.
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.

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.

 void setHeadRange(int startIndex, int endIndex)
          Set the range of values displayed by this RangeList.
 void setMiddleRange(int startIndex, int endIndex)
          Set the range to include the specified indices, offset from the end of the source EventList.
 void setRange(int startIndex, int endIndex)
          Deprecated. 2/15/2006 use setHeadRange(int, int) instead. The introduction of setMiddleRange(int, int) caused us to want a consistent naming scheme for all set*Range methods.
 void setTailRange(int startIndex, int endIndex)
          Set the range to include the specified indices, offset from the end of the source EventList.
 int size()
          Returns the number of elements in this list. If this list contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.
 
Methods inherited from class ca.odell.glazedlists.TransformedList
add, addAll, clear, dispose, 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
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RangeList

public RangeList(EventList<E> source)
Create a new RangeList that limits the specified EventList to a desired range.

Method Detail

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>

setRange

public void setRange(int startIndex,
                     int endIndex)
Deprecated. 2/15/2006 use setHeadRange(int, int) instead. The introduction of setMiddleRange(int, int) caused us to want a consistent naming scheme for all set*Range methods.

Set the range of values displayed by this RangeList.

Parameters:
startIndex - the first index of the source EventList to show, inclusive
endIndex - the last index of the source EventList to show, exclusive

setHeadRange

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

Parameters:
startIndex - the first index of the source EventList to show, inclusive
endIndex - the last index of the source EventList to show, exclusive

setMiddleRange

public void setMiddleRange(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);.


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);.


adjustRange

protected final void adjustRange()
Adjust the range of the RangeList in response to changes in the source list or the desired start and end indices.


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 final boolean isWritable()
Gets whether the source EventList is writable via this API.

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

Overrides:
isWritable in class TransformedList<E,E>

getStartIndex

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


getEndIndex

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



Glazed Lists, Copyright © 2003-2006 publicobject.com, O'Dell Engineering.
Documentation build by jessewilson at 2006-08-09 23:05