Class CollectionList<S,​E>

  • All Implemented Interfaces:
    ListEventListener<S>, EventList<E>, java.lang.Iterable<E>, java.util.Collection<E>, java.util.EventListener, java.util.List<E>
    Direct Known Subclasses:
    CompositeList

    public class CollectionList<S,​E>
    extends TransformedList<S,​E>
    implements ListEventListener<S>
    A list that acts like a tree in that it contains child elements to nodes contained in another list. An example usage would be to wrap a parent list containing albums and use the CollectionList to display the songs on the album.

    The actual mapping from the parent list to the child list (album to songs in the above example) is done by a CollectionList.Model that is provided to the constructor.

    Note that any EventLists returned by the CollectionList.Model must use the same ListEventPublisher and ReadWriteLock as this CollectionList. This is necessary in order for CollectionList to operate correctly under mult-threaded conditions. An IllegalArgumentException will be raised if this invariant is violated.

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

    EventList Overview
    Writable:only set(int,Object) and remove(int)
    Concurrency:thread ready, not thread safe
    Performance:reads: O(log N), writes O(log N)
    Memory:96 bytes per element
    Unit Tests:N/A
    Issues: 96 162 257 265
    Author:
    Rob Eden, Jesse Wilson
    See Also:
    CollectionList.Model
    • Constructor Detail

      • CollectionList

        public CollectionList​(EventList<S> source,
                              CollectionList.Model<S,​E> model)
        Create a CollectionList with its contents being the children of the elements in the specified source EventList.
        Parameters:
        source - an EventList of Objects from each of which the model can extract child elements
        model - the logic for extracting children from each source element
    • Method Detail

      • size

        public 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 java.util.Collection<S>
        Specified by:
        size in interface java.util.List<S>
        Overrides:
        size in class TransformedList<S,​E>
        Returns:
        the number of elements in this list.
      • get

        public E get​(int index)
        Returns the element at the specified position in this list.
        Specified by:
        get in interface java.util.List<S>
        Overrides:
        get in class TransformedList<S,​E>
        Parameters:
        index - index of element to return.
        Returns:
        the element at the specified position in this list.
      • set

        public E set​(int index,
                     E value)
        Replaces the element at the specified position in this list with the specified element (optional operation).
        Specified by:
        set in interface java.util.List<S>
        Overrides:
        set in class TransformedList<S,​E>
        Parameters:
        index - index of element to replace.
        value - element to be stored at the specified position.
        Returns:
        the element previously at the specified position.
      • remove

        public E remove​(int index)
        Removes the element at the specified position in this list (optional operation). Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the list.
        Specified by:
        remove in interface java.util.List<S>
        Overrides:
        remove in class TransformedList<S,​E>
        Parameters:
        index - the index of the element to removed.
        Returns:
        the element previously at the specified position.
      • childStartingIndex

        public int childStartingIndex​(int parentIndex)
        Return the index of the first child in the CollectionList for the given parent index. This can be very useful for things like selecting the children in a CollectionList when the parent is selected in another list.
        See Also:
        childEndingIndex(int)
      • childEndingIndex

        public int childEndingIndex​(int parentIndex)
        Return the index of the last child in the CollectionList for the given parent index. This can be very useful for things like selecting the children in a CollectionList when the parent is selected in another list.
        See Also:
        childStartingIndex(int)