Package uk.ac.starlink.topcat
Class CheckBoxList<T>
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JList<T>
-
- uk.ac.starlink.topcat.CheckBoxList<T>
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,javax.swing.Scrollable
- Direct Known Subclasses:
BasicCheckBoxList
,ControlStack
public abstract class CheckBoxList<T> extends javax.swing.JList<T>
JList subclass that adds a couple of features. First, each entry has a checkbox associated with it that may be selected or deselected by the user. Second, the list entries can be reordered by the user dragging them up or down in the list. A distinctive handle is provided to indicate this option visually. Third, you can overpaint a message below the list items.The selection model for the checkboxes and the list model giving entry ordering are held externally to this implementation, so must be explicitly managed by clients of this class, and may be modified programmatically.
- Since:
- 13 Mar 2013
- Author:
- Mark Taylor
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JList
javax.swing.JList.AccessibleJList, javax.swing.JList.DropLocation
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description CheckBoxList(javax.swing.ListModel<T> model, boolean canSelect, javax.swing.JComponent entryRenderer)
Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addListDataListener(javax.swing.event.ListDataListener l)
Adds a listener for list events.protected abstract void
configureEntryRenderer(javax.swing.JComponent entryRenderer, T item, int index)
This method is called whenever the list cell needs to be painted.javax.swing.Action
createCheckAllAction(boolean isChecked)
Returns a new action that can be used to check or uncheck all the items in the list at once.abstract boolean
isChecked(T item)
Indicates whether the checkbox for a given item is selected.abstract void
moveItem(int ifrom, int ito)
Indicates that the user has requested a reordering of the list model.protected void
paintComponent(java.awt.Graphics g)
void
removeListDataListener(javax.swing.event.ListDataListener l)
Removes a listener previously added.abstract void
setChecked(T item, boolean isChecked)
Sets whether the checkbox for a given item is selected.void
setCheckedAll(boolean isChecked)
Programmatically sets the checkbox status for all the items in the list.void
setListMessage(java.lang.String[] msgLines)
Sets a message which is overpainted on the blank part of this component.-
Methods inherited from class javax.swing.JList
addListSelectionListener, addSelectionInterval, clearSelection, createSelectionModel, ensureIndexIsVisible, fireSelectionValueChanged, getAccessibleContext, getAnchorSelectionIndex, getCellBounds, getCellRenderer, getDragEnabled, getDropLocation, getDropMode, getFirstVisibleIndex, getFixedCellHeight, getFixedCellWidth, getLastVisibleIndex, getLayoutOrientation, getLeadSelectionIndex, getListSelectionListeners, getMaxSelectionIndex, getMinSelectionIndex, getModel, getNextMatch, getPreferredScrollableViewportSize, getPrototypeCellValue, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedIndex, getSelectedIndices, getSelectedValue, getSelectedValues, getSelectedValuesList, getSelectionBackground, getSelectionForeground, getSelectionMode, getSelectionModel, getToolTipText, getUI, getUIClassID, getValueIsAdjusting, getVisibleRowCount, indexToLocation, isSelectedIndex, isSelectionEmpty, locationToIndex, paramString, removeListSelectionListener, removeSelectionInterval, setCellRenderer, setDragEnabled, setDropMode, setFixedCellHeight, setFixedCellWidth, setLayoutOrientation, setListData, setListData, 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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, 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, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Constructor Detail
-
CheckBoxList
public CheckBoxList(javax.swing.ListModel<T> model, boolean canSelect, javax.swing.JComponent entryRenderer)
Constructor. A renderer component is supplied; when entries need to be displayed theconfigureEntryRenderer
method is called.- Parameters:
model
- list modelcanSelect
- true if list item selection is permittedentryRenderer
- renderer for list entry contents (excluding drag and checkbox decorations)
-
-
Method Detail
-
configureEntryRenderer
protected abstract void configureEntryRenderer(javax.swing.JComponent entryRenderer, T item, int index)
This method is called whenever the list cell needs to be painted.- Parameters:
entryRenderer
- renderer object supplied at construction timeitem
- list entryindex
- index in list at which entry appears
-
isChecked
public abstract boolean isChecked(T item)
Indicates whether the checkbox for a given item is selected.- Parameters:
item
- list entry- Returns:
- true iff item is selected
-
setChecked
public abstract void setChecked(T item, boolean isChecked)
Sets whether the checkbox for a given item is selected. Called when the user interacts with the checkbox. It is up to the concrete implementation to ensure that this is reflected by theisChecked
method.- Parameters:
item
- list entryisChecked
- whether item should be selected
-
moveItem
public abstract void moveItem(int ifrom, int ito)
Indicates that the user has requested a reordering of the list model. It is up to the concrete implementation to ensure that this is reflected in the list model.- Parameters:
ifrom
- source list indexito
- destination list index
-
setCheckedAll
public void setCheckedAll(boolean isChecked)
Programmatically sets the checkbox status for all the items in the list.The default implementation calls
setChecked
for each item in the list, but subclasses may be able to override this for improved efficiency.- Parameters:
isChecked
- true to check all, false to uncheck all
-
setListMessage
public void setListMessage(java.lang.String[] msgLines)
Sets a message which is overpainted on the blank part of this component. If null or empty, no message is painted.- Parameters:
msgLines
- lines of a message to paint
-
addListDataListener
public void addListDataListener(javax.swing.event.ListDataListener l)
Adds a listener for list events. As well as changes to the underlying ListModel, this will also be messaged when any of the elements becomes checked or unchecked.- Parameters:
l
- listener to add
-
removeListDataListener
public void removeListDataListener(javax.swing.event.ListDataListener l)
Removes a listener previously added.- Parameters:
l
- listener to remove
-
paintComponent
protected void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponent
in classjavax.swing.JComponent
-
createCheckAllAction
public javax.swing.Action createCheckAllAction(boolean isChecked)
Returns a new action that can be used to check or uncheck all the items in the list at once.- Parameters:
isChecked
- true to check all, false to uncheck all
-
-