Package io.guise.framework.model
Class DefaultListSelectModel<V>
java.lang.Object
com.globalmentor.beans.BoundPropertyObject
io.guise.framework.model.AbstractModel
io.guise.framework.model.AbstractValueModel<V>
io.guise.framework.model.DefaultListSelectModel<V>
- Type Parameters:
V
- The type of values contained in the model.
- All Implemented Interfaces:
com.globalmentor.beans.PropertyBindable
,com.globalmentor.beans.PropertyConstrainable
,com.globalmentor.model.MutableValued<V>
,com.globalmentor.model.Valued<V>
,ListListenable<V>
,ListSelectModel<V>
,Model
,SelectModel<V>
,ValueModel<V>
,Iterable<V>
,Collection<V>
,List<V>
- Direct Known Subclasses:
AbstractListSelectTableModel
The default implementation of a model for selecting one or more values from a list. The model is thread-safe, synchronized on itself. Any iteration over
values should include synchronization on the instance of this class. This implementation has a default value of
null
.- Author:
- Garret Wilson
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
An encapsulation of the state of a value in the model. -
Field Summary
Fields inherited from class com.globalmentor.beans.BoundPropertyObject
NO_PROPERTY_CHANGE_LISTENERS, NO_VETOABLE_CHANGE_LISTENERS
Fields inherited from interface io.guise.framework.model.ValueModel
VALIDATOR_PROPERTY, VALUE_PROPERTY
-
Constructor Summary
ConstructorDescriptionDefaultListSelectModel
(Class<V> valueClass) Constructs a list select model indicating the type of values it can hold, using a default multiple selection strategy.DefaultListSelectModel
(Class<V> valueClass, ListSelectionPolicy<V> listSelectionStrategy) Constructs a list select model indicating the type of values it can hold. -
Method Summary
Modifier and TypeMethodDescriptionvoid
boolean
boolean
addAll
(int index, Collection<? extends V> collection) boolean
addAll
(Collection<? extends V> collection) void
addListListener
(ListListener<V> listListener) Adds a list listener.void
addListSelectionListener
(ListSelectionListener<V> selectionListener) Adds a list selection listener.void
addSelectedIndexes
(int... indexes) Adds a selection at the given indices.void
clear()
void
Clears the value by setting the value tonull
, which may be invalid according to any installed validators.boolean
boolean
containsAll
(Collection<?> collection) protected void
fireListModified
(int index, V addedElement, V removedElement) Fires an event to all registered list listeners indicating the list was modified.protected void
fireSelectionChanged
(Integer addedIndex, Integer removedIndex) Fires an event to all registered selection listeners indicating the selection changed.get
(int index) int
Determines the selected index.int[]
Determines the selected indices.Determines the selected value.V[]
Determines the selected values.getValue()
int
boolean
isEmpty()
boolean
isIndexDisplayed
(int index) Determines the displayed status of a given index.boolean
isIndexEnabled
(int index) Determines the enabled status of a given index.boolean
isValueDisplayed
(V value) Determines the displayed status of the first occurrence of a given value.boolean
isValueEnabled
(V value) Determines the enabled status of the first occurrence of a given value.iterator()
int
lastIndexOf
(Object value) listIterator
(int index) protected void
listModified
(int index, V addedElement, V removedElement) Called when the list is modified.remove
(int index) boolean
boolean
removeAll
(Collection<?> collection) void
removeListListener
(ListListener<V> listListener) Removes a list listener.void
removeListSelectionListener
(ListSelectionListener<V> selectionListener) Removes a list selection listener.void
removeSelectedIndexes
(int... indexes) Removes a selection at the given indices.boolean
Replaces the first occurrence in the of the given value with its replacement.void
Resets the value to a default value, which may be invalid according to any installed validators.boolean
retainAll
(Collection<?> collection) void
setIndexDisplayed
(int index, boolean newDisplayed) Sets the displayed status of a given index.void
setIndexEnabled
(int index, boolean newEnabled) Sets the enabled status of a given index.void
setSelectedIndexes
(int... indexes) Sets the selected indices.void
setSelectedValues
(V... values) Sets the selected values.void
Sets the new value.void
setValueDisplayed
(V value, boolean newDisplayed) Sets the displayed status of the first occurrence of a given value.void
setValueEnabled
(V value, boolean newEnabled) Sets the enabled status of the first occurrence of a given value.int
size()
The list of value states, all access to which will be synchronized on this.subList
(int fromIndex, int toIndex) Object[]
toArray()
<T> T[]
toArray
(T[] array) Methods inherited from class io.guise.framework.model.AbstractValueModel
createPropertyVetoException, getValidator, getValueClass, isValidValue, setValidator, validateValue
Methods inherited from class io.guise.framework.model.AbstractModel
getEventListenerManager, getPlainText
Methods inherited from class com.globalmentor.beans.BoundPropertyObject
addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, createPostponedPropertyChangeEvent, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, getForwardPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyChangeSupport, getRepeatPropertyChangeListener, getRepeatVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, getVetoableChangeSupport, hasPropertyChangeListeners, hasVetoableChangeListeners, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
Methods inherited from interface java.util.List
equals, hashCode, replaceAll, sort, spliterator
Methods inherited from interface com.globalmentor.beans.PropertyBindable
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, hasPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
Methods inherited from interface com.globalmentor.beans.PropertyConstrainable
addVetoableChangeListener, addVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, hasVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListener
Methods inherited from interface io.guise.framework.model.ValueModel
getValidator, getValueClass, isValidValue, setValidator, validateValue
-
Constructor Details
-
DefaultListSelectModel
Constructs a list select model indicating the type of values it can hold, using a default multiple selection strategy.- Parameters:
valueClass
- The class indicating the type of values held in the model.- Throws:
NullPointerException
- if the given value class isnull
.
-
DefaultListSelectModel
Constructs a list select model indicating the type of values it can hold. The selection strategy is not added as a listener to this model but is rather notified manually so that the event won't be delayed and/or sent out of order- Parameters:
valueClass
- The class indicating the type of values held in the model.listSelectionStrategy
- The strategy for selecting values in the model.- Throws:
NullPointerException
- if the given value class and/or selection strategy isnull
.
-
-
Method Details
-
getDefaultValue
- Specified by:
getDefaultValue
in interfaceValueModel<V>
- Returns:
- The default value.
-
getValue
- Specified by:
getValue
in interfacecom.globalmentor.model.Valued<V>
- Specified by:
getValue
in interfaceValueModel<V>
- Returns:
- The input value, or
null
if there is no input value.
-
setValue
Description copied from interface:ValueModel
Sets the new value. This is a bound property that only fires a change event when the new value is different via theequals()
method. If a validator is installed, the value will first be validated before the current value is changed. Validation always occurs if a validator is installed, even if the value is not changing. If the value change is vetoed by the installed validator, the validation exception will be accessible viaThrowable.getCause()
.- Specified by:
setValue
in interfacecom.globalmentor.model.MutableValued<V>
- Specified by:
setValue
in interfaceValueModel<V>
- Parameters:
newValue
- The new value.- Throws:
PropertyVetoException
- if the provided value is not valid or the change has otherwise been vetoed.- See Also:
-
clearValue
public void clearValue()Description copied from interface:ValueModel
Clears the value by setting the value tonull
, which may be invalid according to any installed validators. No validation occurs.- Specified by:
clearValue
in interfaceValueModel<V>
- See Also:
-
resetValue
public void resetValue()Resets the value to a default value, which may be invalid according to any installed validators. No validation occurs.This implementation calls
clearValue()
.- Specified by:
resetValue
in interfaceValueModel<V>
- See Also:
-
size
public int size()The list of value states, all access to which will be synchronized on this. -
isEmpty
public boolean isEmpty() -
contains
-
iterator
-
toArray
-
toArray
public <T> T[] toArray(T[] array) -
add
This version delegates to
add(int, Object)
. -
remove
This version delegates to
remove(int)
. -
containsAll
- Specified by:
containsAll
in interfaceCollection<V>
- Specified by:
containsAll
in interfaceList<V>
-
addAll
-
addAll
-
removeAll
-
retainAll
-
clear
public void clear() -
get
-
set
-
add
-
remove
-
indexOf
-
lastIndexOf
- Specified by:
lastIndexOf
in interfaceList<V>
-
listIterator
- Specified by:
listIterator
in interfaceList<V>
-
listIterator
- Specified by:
listIterator
in interfaceList<V>
-
subList
-
replace
Description copied from interface:SelectModel
Replaces the first occurrence in the of the given value with its replacement. This method ensures that another thread does not change the model while the search and replace operation occurs.- Specified by:
replace
in interfaceSelectModel<V>
- Parameters:
oldValue
- The value for which to search.newValue
- The replacement value.- Returns:
- Whether the operation resulted in a modification of the model.
-
getSelectionPolicy
- Specified by:
getSelectionPolicy
in interfaceListSelectModel<V>
- Returns:
- The selection policy for this model.
-
getSelectedIndex
public int getSelectedIndex()Description copied from interface:ListSelectModel
Determines the selected index. If more than one index is selected, the lead selected index will be returned.- Specified by:
getSelectedIndex
in interfaceListSelectModel<V>
- Returns:
- The index currently selected, or -1 if no index is selected.
- See Also:
-
getSelectedIndexes
public int[] getSelectedIndexes()Description copied from interface:ListSelectModel
Determines the selected indices.- Specified by:
getSelectedIndexes
in interfaceListSelectModel<V>
- Returns:
- The indices currently selected.
- See Also:
-
setSelectedIndexes
Description copied from interface:ListSelectModel
Sets the selected indices. Invalid and duplicate indices will be ignored. If the value change is vetoed by the installed validator, the validation exception will be accessible viaThrowable.getCause()
.- Specified by:
setSelectedIndexes
in interfaceListSelectModel<V>
- Parameters:
indexes
- The indices to select.- Throws:
PropertyVetoException
- if the provided value is not valid or the change has otherwise been vetoed.- See Also:
-
addSelectedIndexes
Description copied from interface:ListSelectModel
Adds a selection at the given indices. Any invalid indices will be ignored. If the value change is vetoed by the installed validator, the validation exception will be accessible viaThrowable.getCause()
.- Specified by:
addSelectedIndexes
in interfaceListSelectModel<V>
- Parameters:
indexes
- The indices to add to the selection.- Throws:
PropertyVetoException
- if the provided value is not valid or the change has otherwise been vetoed.- See Also:
-
removeSelectedIndexes
Description copied from interface:ListSelectModel
Removes a selection at the given indices. Any invalid indices will be ignored. If the value change is vetoed by the installed validator, the validation exception will be accessible viaThrowable.getCause()
.- Specified by:
removeSelectedIndexes
in interfaceListSelectModel<V>
- Parameters:
indexes
- The indices to remove from the selection.- Throws:
PropertyVetoException
- if the provided value is not valid or the change has otherwise been vetoed.- See Also:
-
getSelectedValue
Description copied from interface:SelectModel
Determines the selected value. This method delegates to the selection strategy. If more than one value is selected, the lead selected value will be returned.- Specified by:
getSelectedValue
in interfaceSelectModel<V>
- Returns:
- The value currently selected, or
null
if no value is currently selected.
-
getSelectedValues
Description copied from interface:SelectModel
Determines the selected values. This method delegates to the selection strategy.- Specified by:
getSelectedValues
in interfaceSelectModel<V>
- Returns:
- The values currently selected.
-
setSelectedValues
Sets the selected values. If a value occurs more than one time in the model, all occurrences of the value will be selected. Values that do not occur in the select model will be ignored. If the value change is vetoed by the installed validator, the validation exception will be accessible viaThrowable.getCause()
.- Specified by:
setSelectedValues
in interfaceSelectModel<V>
- Parameters:
values
- The values to select.- Throws:
PropertyVetoException
- if the provided value is not valid or the change has otherwise been vetoed.- See Also:
-
isValueDisplayed
Description copied from interface:ListSelectModel
Determines the displayed status of the first occurrence of a given value.- Specified by:
isValueDisplayed
in interfaceListSelectModel<V>
- Parameters:
value
- The value for which the displayed status is to be determined.- Returns:
true
if the value is displayed, elsefalse
.
-
setValueDisplayed
Sets the displayed status of the first occurrence of a given value. This is a bound value state property.- Specified by:
setValueDisplayed
in interfaceListSelectModel<V>
- Parameters:
value
- The value to display.newDisplayed
- Whether the value should be displayed.- See Also:
-
isIndexDisplayed
public boolean isIndexDisplayed(int index) Description copied from interface:ListSelectModel
Determines the displayed status of a given index.- Specified by:
isIndexDisplayed
in interfaceListSelectModel<V>
- Parameters:
index
- The index of the value for which the displayed status is to be determined.- Returns:
true
if the value at the given index is displayed, elsefalse
.
-
setIndexDisplayed
public void setIndexDisplayed(int index, boolean newDisplayed) Sets the displayed status of a given index. This is a bound value state property.- Specified by:
setIndexDisplayed
in interfaceListSelectModel<V>
- Parameters:
index
- The index of the value to display.newDisplayed
- Whether the value at the given index should be displayed.- Throws:
IndexOutOfBoundsException
- if the given index is not within the range of the list.- See Also:
-
isValueEnabled
Description copied from interface:ListSelectModel
Determines the enabled status of the first occurrence of a given value.- Specified by:
isValueEnabled
in interfaceListSelectModel<V>
- Parameters:
value
- The value for which the enabled status is to be determined.- Returns:
true
if the value is enabled, elsefalse
.
-
setValueEnabled
Sets the enabled status of the first occurrence of a given value. This is a bound value state property.- Specified by:
setValueEnabled
in interfaceListSelectModel<V>
- Parameters:
value
- The value to enable or disable.newEnabled
- Whether the value should be enabled.- See Also:
-
isIndexEnabled
public boolean isIndexEnabled(int index) Description copied from interface:ListSelectModel
Determines the enabled status of a given index.- Specified by:
isIndexEnabled
in interfaceListSelectModel<V>
- Parameters:
index
- The index of the value for which the enabled status is to be determined.- Returns:
true
if the value at the given index is enabled, elsefalse
.
-
setIndexEnabled
public void setIndexEnabled(int index, boolean newEnabled) Sets the enabled status of a given index. This is a bound value state property.- Specified by:
setIndexEnabled
in interfaceListSelectModel<V>
- Parameters:
index
- The index of the value to enable or disable.newEnabled
- Whether the value at the given index should be enabled.- Throws:
IndexOutOfBoundsException
- if the given index is not within the range of the list.- See Also:
-
addListListener
Description copied from interface:ListSelectModel
Adds a list listener.- Specified by:
addListListener
in interfaceListListenable<V>
- Specified by:
addListListener
in interfaceListSelectModel<V>
- Parameters:
listListener
- The list listener to add.
-
removeListListener
Description copied from interface:ListSelectModel
Removes a list listener.- Specified by:
removeListListener
in interfaceListListenable<V>
- Specified by:
removeListListener
in interfaceListSelectModel<V>
- Parameters:
listListener
- The list listener to remove.
-
addListSelectionListener
Description copied from interface:ListSelectModel
Adds a list selection listener.- Specified by:
addListSelectionListener
in interfaceListSelectModel<V>
- Parameters:
selectionListener
- The selection listener to add.
-
removeListSelectionListener
Description copied from interface:ListSelectModel
Removes a list selection listener.- Specified by:
removeListSelectionListener
in interfaceListSelectModel<V>
- Parameters:
selectionListener
- The selection listener to remove.
-
listModified
Called when the list is modified. This method calls the method for notifying listeners that the list was modified.- Parameters:
index
- The index at which an element was added and/or removed, or -1 if the index is unknown.addedElement
- The element that was added to the list, ornull
if no element was added or it is unknown whether or which elements were added.removedElement
- The element that was removed from the list, ornull
if no element was removed or it is unknown whether or which elements were removed.- See Also:
-
fireListModified
Fires an event to all registered list listeners indicating the list was modified.- Parameters:
index
- The index at which an element was added and/or removed, or -1 if the index is unknown.addedElement
- The element that was added to the list, ornull
if no element was added or it is unknown whether or which elements were added.removedElement
- The element that was removed from the list, ornull
if no element was removed or it is unknown whether or which elements were removed.- See Also:
-
fireSelectionChanged
Fires an event to all registered selection listeners indicating the selection changed.- Parameters:
addedIndex
- The index that was added to the selection, ornull
if no index was added or it is unknown whether or which indices were added.removedIndex
- The index that was removed from the list, ornull
if no index was removed or it is unknown whether or which indices were removed.- See Also:
-