A class to provide index-based selection features. This class maintains two
lists derived from a single
EventList
:
This design is intended to allow the sharing of selection logic between
all supported GUI toolkits as well as being available for use in non-GUI
applications and for index-based filtering.
Warning: This class is
thread ready but not thread safe. See
EventList
for an example
of thread safe code.
MULTIPLE_INTERVAL_SELECTION
public static final int MULTIPLE_INTERVAL_SELECTION
A selection mode where any element may be selected and elements added
adjacent to selected elements are selected. For convenience, this value
equals javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
.
MULTIPLE_INTERVAL_SELECTION_DEFENSIVE
public static final int MULTIPLE_INTERVAL_SELECTION_DEFENSIVE
A selection mode where any element may be selected and freshly added elements
are always deselected. No equivalent policy exists in
javax.swing.ListSelectionModel
SINGLE_INTERVAL_SELECTION
public static final int SINGLE_INTERVAL_SELECTION
A selection mode where at most one range of elements may be selected at one time.
For convenience, this value equals javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION
.
SINGLE_SELECTION
public static final int SINGLE_SELECTION
A selection mode where at most one element may be selected at one time.
For convenience, this value equals javax.swing.ListSelectionModel.SINGLE_SELECTION
.
addSelectionListener
public void addSelectionListener(ListSelection.Listener selectionListener)
Register a
Listener
that will be notified when selection is changed.
addValidSelectionMatcher
public void addValidSelectionMatcher(Matcher validSelectionMatcher)
Add a matcher which decides when source elements are valid for selection.
validSelectionMatcher
- returns true if a source elements
can be selected; false otherwise
deselect
public void deselect(int index)
Deselects the element at the given index.
deselect
public void deselect(int start,
int end)
Deselects all of the elements within the given range.
deselect
public void deselect(int[] indices)
Deselects all of the elements in the given array of indices. The
array must contain indices in sorted, ascending order.
deselectAll
public void deselectAll()
Deselect all elements.
dispose
public void dispose()
Disposes of this ListSelection freeing up it's resources for
garbage collection. It is an error to use a ListSelection after
dispose() has been called.
getAnchorSelectionIndex
public int getAnchorSelectionIndex()
Return the anchor of the current selection.
getDeselected
public EventList getDeselected()
Gets an
EventList
that contains only deselected values add
modifies the source list on mutation.
Adding and removing items from this list performs the same operation on
the source list.
getLeadSelectionIndex
public int getLeadSelectionIndex()
Return the lead of the current selection.
getMaxSelectionIndex
public int getMaxSelectionIndex()
Returns the last selected index or -1 if nothing is selected.
getMinSelectionIndex
public int getMinSelectionIndex()
Returns the first selected index or -1 if nothing is selected.
getSelected
public EventList getSelected()
Gets an
EventList
that contains only selected values and modifies
the source list on mutation.
Adding and removing items from this list performs the same operation on
the source list.
getSelectionMode
public int getSelectionMode()
Returns the current selection mode.
getSource
public EventList getSource()
Get the
EventList
that selection is being managed for.
getTogglingDeselected
public EventList getTogglingDeselected()
Gets an
EventList
that contains only deselected values and
modifies the selection state on mutation.
Adding an item to this list deselects it and removing an item selects it.
If an item not in the source list is added an
IllegalArgumentException
is thrown. This list does not support
the
set
method.
getTogglingSelected
public EventList getTogglingSelected()
Gets an
EventList
that contains only selected values and modifies
the selection state on mutation.
Adding an item to this list selects it and removing an item deselects it.
If an item not in the source list is added an
IllegalArgumentException
is thrown. This list does not support
the
set
method.
invertSelection
public void invertSelection()
Inverts the current selection.
isSelected
public boolean isSelected(int sourceIndex)
Returns whether or not the item with the given source index
is selected.
listChanged
public void listChanged(ListEvent listChanges)
Handle changes to the source list by adjusting our selection state and
the contents of the selected and deselected lists.
- listChanged in interface ListEventListener<E>
removeSelectionListener
public void removeSelectionListener(ListSelection.Listener selectionListener)
Remove a
Listener
so that it will no longer be notified when selection changes.
removeValidSelectionMatcher
public void removeValidSelectionMatcher(Matcher validSelectionMatcher)
Remove a matcher which decides when source elements are valid for selection.
validSelectionMatcher
- returns true if a source elements
can be selected; false otherwise
select
public boolean select(Collection values)
Select all of the specified values.
true
if the selection changed as a result of the call.
select
public int select(E value)
Select the specified element, if it exists.
- the index of the newly selected element, or -1 if no
element was found.
select
public void select(int index)
Selects the element at the given index.
select
public void select(int start,
int end)
Selects all of the elements within the given range.
select
public void select(int[] indices)
Selects all of the elements in the given array of indices. The
array must contain indices in sorted, ascending order.
selectAll
public void selectAll()
Selects all elements.
setAnchorSelectionIndex
public void setAnchorSelectionIndex(int anchorSelectionIndex)
Set the anchor selection index.
setLeadSelectionIndex
public void setLeadSelectionIndex(int leadSelectionIndex)
Set the lead selection index.
setSelection
public void setSelection(int index)
Sets the selection to be only the element at the given index. If the
given index is -1, the selection will be cleared.
setSelection
public void setSelection(int start,
int end)
Sets the selection to be only elements within the given range. If the
endpoints of the range are -1, the selection will be cleared.
setSelection
public void setSelection(int[] indices)
Sets the selection to be only the element in the given array of indices.
Unlike
setSelection(int)
and
setSelection(int,int)
,
providing a value of -1 is an error. The array must contain indices in
sorted, ascending order.
setSelectionMode
public void setSelectionMode(int selectionMode)
Set the selection mode.