JIDE 3.5.15

com.jidesoft.swing
Class CheckBoxListWithSelectable

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JList
                  extended by com.jidesoft.swing.CheckBoxListWithSelectable
All Implemented Interfaces:
ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible, Scrollable

public class CheckBoxListWithSelectable
extends JList
implements ItemSelectable

CheckBoxListWithSelectable is a special JList which uses JCheckBox as the list element. In addition to regular JList feature, it also allows you select any number of elements in the list by selecting the check boxes.

The element is ListModel should be an instance of Selectable. If you have your own class that represents the element in the list, you can implement Selectable and implements a few very simple methods. If your elements are already in an array or Vector that you pass in to the constructor of JList, we will convert them to DefaultSelectable which implements Selectable interface.

To select an element, user can mouse click on the check box, or highlight the rows and press SPACE key to toggle the selections.

To listen to the check box selection change, you can call addItemListener to add an ItemListener.

Please note, there are two implementations of CheckBoxList. CheckBoxListWithSelectable is one. There is also another one call CheckBoxList. CheckBoxListWithSelectable is actually the old implementation. In 1.9.2, we introduced a new implementation and renamed the old implementation to CheckBoxListWithSelectable. The main difference between the two implementation is at how the selection state is kept. In new implementation, the selection state is kept at a separate ListSelectionModel which you can get using CheckBoxList.getCheckBoxListSelectionModel(). The old implementation kept the selection state at Selectable object in the ListModel.

See Also:
Serialized Form

Nested Class Summary
protected static class CheckBoxListWithSelectable.Handler
           
 
Nested classes/interfaces inherited from class javax.swing.JList
JList.AccessibleJList, JList.DropLocation
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  CheckBoxListCellRenderer _listCellRenderer
           
static String PROPERTY_CHECKBOX_ENABLED
           
static String PROPERTY_CLICK_IN_CHECKBOX_ONLY
           
 
Fields inherited from class javax.swing.JList
HORIZONTAL_WRAP, VERTICAL, VERTICAL_WRAP
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
CheckBoxListWithSelectable()
          Constructs a CheckBoxList with an empty model.
CheckBoxListWithSelectable(ListModel dataModel)
          Constructs a CheckBoxList that displays the elements in the specified, non-null model.
CheckBoxListWithSelectable(Object[] listData)
          Constructs a CheckBoxList that displays the elements in the specified Object[].
CheckBoxListWithSelectable(Vector<?> listData)
          Constructs a CheckBoxList that displays the elements in the specified Vector.
 
Method Summary
 void addItemListener(ItemListener listener)
          Adds a listener to the list that's notified each time a change to the item selection occurs.
protected  CheckBoxListCellRenderer createCellRenderer()
          Creates the cell renderer.
protected  CheckBoxListWithSelectable.Handler createHandler()
          Creates the mouse listener and key listener used by CheckBoxList.
protected  void fireItemStateChanged(ItemEvent event)
          Notifies all listeners that have registered interest for notification on this event type.
 ListCellRenderer getActualCellRenderer()
           
 ListCellRenderer getCellRenderer()
           
 ItemListener[] getItemListeners()
          Returns an array of all the ItemListeners added to this JList with addItemListener().
 int getNextMatch(String prefix, int startIndex, Position.Bias bias)
           
 Object[] getSelectedObjects()
          Gets the selected objects.
protected  void init()
          Initialize the CheckBoxList.
 boolean isCheckBoxEnabled()
          Gets the value of property checkBoxEnabled.
 boolean isCheckBoxVisible(int index)
          Checks if check box is visible.
 boolean isClickInCheckBoxOnly()
          Gets the value of property clickInCheckBoxOnly.
 void removeItemListener(ItemListener listener)
          Removes a listener from the list that's notified each time a change to the item selection occurs.
 void selectAll()
          Selects all objects in this list except those are disabled.
 void selectNone()
          Deselects all objects in this list except those are disabled.
 void setCheckBoxEnabled(boolean checkBoxEnabled)
          Sets the value of property checkBoxEnabled.
 void setClickInCheckBoxOnly(boolean clickInCheckBoxOnly)
          Sets the value of property clickInCheckBoxOnly.
 void setListData(Object[] listData)
           
 void setListData(Vector listData)
           
 void setSelectedObjects(Object[] elements)
          Sets the selected elements.
 void setSelectedObjects(Vector<?> objects)
          Sets the selected objects.
 
Methods inherited from class javax.swing.JList
addListSelectionListener, addSelectionInterval, clearSelection, createSelectionModel, ensureIndexIsVisible, fireSelectionValueChanged, getAccessibleContext, getAnchorSelectionIndex, getCellBounds, getDragEnabled, getDropLocation, getDropMode, getFirstVisibleIndex, getFixedCellHeight, getFixedCellWidth, getLastVisibleIndex, getLayoutOrientation, getLeadSelectionIndex, getListSelectionListeners, getMaxSelectionIndex, getMinSelectionIndex, getModel, getPreferredScrollableViewportSize, getPrototypeCellValue, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedIndex, getSelectedIndices, getSelectedValue, getSelectedValues, getSelectionBackground, getSelectionForeground, getSelectionMode, getSelectionModel, getToolTipText, getUI, getUIClassID, getValueIsAdjusting, getVisibleRowCount, indexToLocation, isSelectedIndex, isSelectionEmpty, locationToIndex, paramString, removeListSelectionListener, removeSelectionInterval, setCellRenderer, setDragEnabled, setDropMode, setFixedCellHeight, setFixedCellWidth, setLayoutOrientation, setModel, setPrototypeCellValue, setSelectedIndex, setSelectedIndices, setSelectedValue, setSelectionBackground, setSelectionForeground, setSelectionInterval, setSelectionMode, setSelectionModel, setUI, setValueIsAdjusting, setVisibleRowCount, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_listCellRenderer

protected CheckBoxListCellRenderer _listCellRenderer

PROPERTY_CHECKBOX_ENABLED

public static final String PROPERTY_CHECKBOX_ENABLED
See Also:
Constant Field Values

PROPERTY_CLICK_IN_CHECKBOX_ONLY

public static final String PROPERTY_CLICK_IN_CHECKBOX_ONLY
See Also:
Constant Field Values
Constructor Detail

CheckBoxListWithSelectable

public CheckBoxListWithSelectable()
Constructs a CheckBoxList with an empty model.


CheckBoxListWithSelectable

public CheckBoxListWithSelectable(Vector<?> listData)
Constructs a CheckBoxList that displays the elements in the specified Vector. If the Vector contains elements which is not an instance of Selectable, it will wrap it automatically into DefaultSelectable and add to ListModel.

Parameters:
listData - the Vector to be loaded into the data model

CheckBoxListWithSelectable

public CheckBoxListWithSelectable(Object[] listData)
Constructs a CheckBoxList that displays the elements in the specified Object[]. If the Object array contains elements which is not an instance of Selectable, it will wrap it automatically into DefaultSelectable and add to ListModel.

Parameters:
listData - the array of Objects to be loaded into the data model

CheckBoxListWithSelectable

public CheckBoxListWithSelectable(ListModel dataModel)
Constructs a CheckBoxList that displays the elements in the specified, non-null model. All CheckBoxList constructors delegate to this one.

Please note, if you are using this constructor, please make sure all elements in dataModel are instance of Selectable.

Parameters:
dataModel - the data model for this list
Throws:
IllegalArgumentException - if dataModel is null
Method Detail

init

protected void init()
Initialize the CheckBoxList.


createCellRenderer

protected CheckBoxListCellRenderer createCellRenderer()
Creates the cell renderer.

Returns:
the cell renderer.

createHandler

protected CheckBoxListWithSelectable.Handler createHandler()
Creates the mouse listener and key listener used by CheckBoxList.

Returns:
the Handler.

setSelectedObjects

public void setSelectedObjects(Object[] elements)
Sets the selected elements.

Parameters:
elements - the elements to be selected

setSelectedObjects

public void setSelectedObjects(Vector<?> objects)
Sets the selected objects.

Parameters:
objects - the elements to be selected in a Vector.

getCellRenderer

public ListCellRenderer getCellRenderer()
Overrides:
getCellRenderer in class JList

getActualCellRenderer

public ListCellRenderer getActualCellRenderer()

isClickInCheckBoxOnly

public boolean isClickInCheckBoxOnly()
Gets the value of property clickInCheckBoxOnly. If true, user can click on check boxes on each tree node to select and deselect. If false, user can't click but you as developer can programmatically call API to select/deselect it.

Returns:
the value of property clickInCheckBoxOnly.

setClickInCheckBoxOnly

public void setClickInCheckBoxOnly(boolean clickInCheckBoxOnly)
Sets the value of property clickInCheckBoxOnly.

Parameters:
clickInCheckBoxOnly - true to allow to check the check box. False to disable it which means user can see whether a row is checked or not but they cannot change it.

addItemListener

public void addItemListener(ItemListener listener)
Adds a listener to the list that's notified each time a change to the item selection occurs. Listeners added directly to the CheckBoxList will have their ItemEvent.getSource() == this CheckBoxList.

Specified by:
addItemListener in interface ItemSelectable
Parameters:
listener - the ItemListener to add

removeItemListener

public void removeItemListener(ItemListener listener)
Removes a listener from the list that's notified each time a change to the item selection occurs.

Specified by:
removeItemListener in interface ItemSelectable
Parameters:
listener - the ItemListener to remove

getItemListeners

public ItemListener[] getItemListeners()
Returns an array of all the ItemListeners added to this JList with addItemListener().

Returns:
all of the ItemListeners added or an empty array if no listeners have been added
See Also:
addItemListener(java.awt.event.ItemListener)

fireItemStateChanged

protected void fireItemStateChanged(ItemEvent event)
Notifies all listeners that have registered interest for notification on this event type. The event instance is lazily created using the event parameter.

Parameters:
event - the ItemEvent object
See Also:
EventListenerList

getSelectedObjects

public Object[] getSelectedObjects()
Gets the selected objects. This is different from JList.getSelectedValues() which is a JList's feature. The List returned from this method contains the objects that is checked in the CheckBoxList.

Specified by:
getSelectedObjects in interface ItemSelectable
Returns:
the selected objects.

selectAll

public void selectAll()
Selects all objects in this list except those are disabled.


selectNone

public void selectNone()
Deselects all objects in this list except those are disabled.


setListData

public void setListData(Vector listData)
Overrides:
setListData in class JList

setListData

public void setListData(Object[] listData)
Overrides:
setListData in class JList

getNextMatch

public int getNextMatch(String prefix,
                        int startIndex,
                        Position.Bias bias)
Overrides:
getNextMatch in class JList

isCheckBoxEnabled

public boolean isCheckBoxEnabled()
Gets the value of property checkBoxEnabled. If true, user can click on check boxes on each tree node to select and deselect. If false, user can't click but you as developer can programmatically call API to select/deselect it.

Returns:
the value of property checkBoxEnabled.

isCheckBoxVisible

public boolean isCheckBoxVisible(int index)
Checks if check box is visible. There is no setter for it. The only way is to override this method to return true or false.

Parameters:
index - the row index.
Returns:
true or false. If false, there is not check box on the particular row index.

setCheckBoxEnabled

public void setCheckBoxEnabled(boolean checkBoxEnabled)
Sets the value of property checkBoxEnabled.

Parameters:
checkBoxEnabled - true to enable all the check boxes. False to disable all of them.

JIDE 3.5.15