|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.levigo.util.base.glazedlists.AbstractEventList<E> com.levigo.util.base.glazedlists.TransformedList<S,E> com.levigo.util.base.glazedlists.CollectionList<S,E>
public class CollectionList<S,E>
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 EventList
s 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 |
CollectionList.Model
Nested Class Summary | |
---|---|
static interface |
CollectionList.Model<E,S>
Provides the logic to map a parent object (e.g. |
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 | |
---|---|
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 . |
Method Summary | |
---|---|
int |
childEndingIndex(int parentIndex)
Return the index of the last child in the CollectionList for the given parent index. |
int |
childStartingIndex(int parentIndex)
Return the index of the first child in the CollectionList for the given parent index. |
void |
dispose()
Releases the resources consumed by this TransformedList so that it
may eventually be garbage collected. |
E |
get(int index)
Returns the element at the specified position in this list. |
protected boolean |
isWritable()
Gets whether the source EventList is writable via this API. |
void |
listChanged(ListEvent<S> listChanges)
Handle changes in the parent list. |
E |
remove(int index)
Removes the element at the specified position in this list (optional operation). |
E |
set(int index,
E value)
Replaces the element at the specified position in this list with the specified element (optional operation). |
int |
size()
Returns the number of elements in this list. |
Methods inherited from class com.levigo.util.base.glazedlists.TransformedList |
---|
add, addAll, clear, getSourceIndex, removeAll, retainAll |
Methods inherited from class com.levigo.util.base.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 |
---|
public CollectionList(EventList<S> source, CollectionList.Model<S,E> model)
CollectionList
with its contents being the children of
the elements in the specified source EventList
.
source
- an EventList of Objects from each of which the
model
can extract child elementsmodel
- the logic for extracting children from each
source
elementMethod Detail |
---|
protected boolean isWritable()
TransformedList
EventList
is writable via this API.
Extending classes must override this method in order to make themselves writable.
isWritable
in class TransformedList<S,E>
TransformedList.add(int, Object)
;
though we do support set(int, Object)
and remove(int)
public int size()
size
in interface Collection<E>
size
in interface List<E>
size
in class TransformedList<S,E>
public E get(int index)
get
in interface List<E>
get
in class TransformedList<S,E>
index
- index of element to return.
public E set(int index, E value)
set
in interface List<E>
set
in class TransformedList<S,E>
index
- index of element to replace.value
- element to be stored at the specified position.
public E remove(int index)
remove
in interface List<E>
remove
in class TransformedList<S,E>
index
- the index of the element to removed.
public int childStartingIndex(int parentIndex)
childEndingIndex(int)
public int childEndingIndex(int parentIndex)
childStartingIndex(int)
public void listChanged(ListEvent<S> listChanges)
listChanged
in interface ListEventListener<S>
listChanged
in class TransformedList<S,E>
public void dispose()
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.
dispose
in interface EventList<E>
dispose
in class TransformedList<S,E>
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |