java.awt.image.ImageObserver
, java.awt.ItemSelectable
, java.awt.MenuContainer
, java.io.Serializable
, javax.accessibility.Accessible
, javax.swing.SwingConstants
public class ColumnControlButton
extends javax.swing.JButton
JXTable
's
columns.
It's main purpose is to allow toggling of table columns' visibility.
Additionally, arbitrary configuration actions can be exposed.
This component is installed in the JXTable
's
trailing corner, if enabled:
table.setColumnControlVisible(true);
From the perspective of a JXTable
, the component's behaviour is
opaque. Typically, the button's action is to popup a component for user
interaction.
This class is responsible for handling/providing/updating the lists of
actions and to keep all action's state in synch with Table-/Column state.
The visible behaviour of the popup is delegated to a
ColumnControlPopup
.
Modifier and Type | Class | Description |
---|---|---|
class |
ColumnControlButton.ColumnVisibilityAction |
A specialized
Action which takes care of keeping in synch with
TableColumn state. |
class |
ColumnControlButton.DefaultColumnControlPopup |
A default implementation of ColumnControlPopup.
|
javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
java.awt.Container.AccessibleAWTContainer
Modifier and Type | Field | Description |
---|---|---|
static java.lang.String |
COLUMN_CONTROL_BUTTON_ICON_KEY |
the key for looking up the control's icon in the UIManager.
|
static java.lang.String |
COLUMN_CONTROL_BUTTON_MARGIN_KEY |
the key for looking up the control's margin in the UIManager.
|
static java.lang.String |
COLUMN_CONTROL_MARKER |
Marker to auto-recognize actions which should be added to the popup.
|
protected ColumnControlPopup |
popup |
exposed for testing.
|
actionListener, BORDER_PAINTED_CHANGED_PROPERTY, changeEvent, changeListener, CONTENT_AREA_FILLED_CHANGED_PROPERTY, DISABLED_ICON_CHANGED_PROPERTY, DISABLED_SELECTED_ICON_CHANGED_PROPERTY, FOCUS_PAINTED_CHANGED_PROPERTY, HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, ICON_CHANGED_PROPERTY, itemListener, MARGIN_CHANGED_PROPERTY, MNEMONIC_CHANGED_PROPERTY, model, MODEL_CHANGED_PROPERTY, PRESSED_ICON_CHANGED_PROPERTY, ROLLOVER_ENABLED_CHANGED_PROPERTY, ROLLOVER_ICON_CHANGED_PROPERTY, ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, SELECTED_ICON_CHANGED_PROPERTY, TEXT_CHANGED_PROPERTY, VERTICAL_ALIGNMENT_CHANGED_PROPERTY, VERTICAL_TEXT_POSITION_CHANGED_PROPERTY
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor | Description |
---|---|
ColumnControlButton(JXTable table) |
Creates a column control button for the table.
|
ColumnControlButton(JXTable table,
javax.swing.Icon icon) |
Creates a column control button for the table.
|
Modifier and Type | Method | Description |
---|---|---|
protected void |
addAdditionalActionItems() |
Adds additional actions to the popup.
|
protected void |
addVisibilityActionItems() |
Adds visibility actions into the popup view.
|
void |
applyComponentOrientation(java.awt.ComponentOrientation o) |
|
protected boolean |
canControl() |
Method to check if we can control column visibility POST: if true we can
be sure to have an extended TableColumnModel
|
protected void |
clearAll() |
removes all components from the popup, making sure to release all
columnVisibility actions.
|
protected void |
clearColumnVisibilityActions() |
Releases actions and clears list of actions.
|
protected ColumnControlPopup |
createColumnControlPopup() |
Factory method to return a
ColumnControlPopup . |
protected javax.swing.event.TableColumnModelListener |
createColumnModelListener() |
Creates the listener to columnModel.
|
protected ColumnControlButton.ColumnVisibilityAction |
createColumnVisibilityAction(javax.swing.table.TableColumn column) |
Creates and returns a
ColumnVisibilityAction for the given
TableColumn . |
protected java.beans.PropertyChangeListener |
createTablePropertyChangeListener() |
Creates the listener to table's property changes.
|
protected void |
createVisibilityActions() |
Creates and adds a ColumnVisiblityAction for every column that should be
togglable via the column control.
|
protected java.util.List<javax.swing.Action> |
getAdditionalActions() |
creates and returns a list of additional Actions to add to the popup.
|
protected java.util.List |
getColumnControlActionKeys() |
Looks up and returns action keys to access actions in the
table's actionMap which should be included into the popup.
|
protected ColumnControlPopup |
getColumnControlPopup() |
Returns to popup component for user interaction.
|
protected javax.swing.event.TableColumnModelListener |
getColumnModelListener() |
Returns the listener to table's column model.
|
protected java.util.List<ColumnControlButton.ColumnVisibilityAction> |
getColumnVisibilityActions() |
Lazyly creates and returns the List of visibility actions.
|
protected java.beans.PropertyChangeListener |
getTablePropertyChangeListener() |
Returns the listener to table's property changes.
|
protected boolean |
isColumnControlActionKey(java.lang.Object actionKey) |
Here: true if a String key starts with #COLUMN_CONTROL_MARKER.
|
protected void |
populatePopup() |
Populates the popup from scratch.
|
void |
togglePopup() |
Toggles the popup component's visibility.
|
protected void |
updateActionUI() |
Updates the action properties provided by the LAF.
|
protected void |
updateButtonUI() |
Updates this button's properties provided by the LAF.
|
protected void |
updateFromColumnModelChange(javax.swing.table.TableColumnModel oldModel) |
Adjusts internal state after table's column model property has changed.
|
protected void |
updateFromTableEnabledChanged() |
Synchs this button's enabled with table's enabled.
|
void |
updateUI() |
actionPropertyChanged, addActionListener, addChangeListener, addImpl, addItemListener, checkHorizontalKey, checkVerticalKey, configurePropertiesFromAction, createActionListener, createActionPropertyChangeListener, createChangeListener, createItemListener, doClick, doClick, fireActionPerformed, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, getHideActionText, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getItemListeners, getLabel, getMargin, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, init, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, isSelected, paintBorder, removeActionListener, removeChangeListener, removeItemListener, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setEnabled, setFocusPainted, setHideActionText, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setLayout, setMargin, setMnemonic, setMnemonic, setModel, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelected, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition
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, 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
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, 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, transferFocusDownCycle, validate, validateTree
getAccessibleContext, getUIClassID, isDefaultButton, isDefaultCapable, paramString, removeNotify, setDefaultCapable
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, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
public static final java.lang.String COLUMN_CONTROL_MARKER
public static final java.lang.String COLUMN_CONTROL_BUTTON_ICON_KEY
public static final java.lang.String COLUMN_CONTROL_BUTTON_MARGIN_KEY
protected ColumnControlPopup popup
public ColumnControlButton(JXTable table)
table
- the JXTable
controlled by this componentpublic ColumnControlButton(JXTable table, javax.swing.Icon icon)
table
- the JXTable
controlled by this componenticon
- the Icon
to showpublic void updateUI()
updateUI
in class javax.swing.JButton
protected void updateButtonUI()
protected void updateActionUI()
public void togglePopup()
Here: delegates to getControlPopup().
public void applyComponentOrientation(java.awt.ComponentOrientation o)
applyComponentOrientation
in class java.awt.Container
protected ColumnControlPopup getColumnControlPopup()
null
.createColumnControlPopup()
protected ColumnControlPopup createColumnControlPopup()
ColumnControlPopup
.
Subclasses can override to hook custom implementations.ColumnControlPopup
used.protected void updateFromColumnModelChange(javax.swing.table.TableColumnModel oldModel)
oldModel
- the old TableColumnModel
we had been listening to.protected void updateFromTableEnabledChanged()
protected boolean canControl()
protected void populatePopup()
protected void clearAll()
protected void clearColumnVisibilityActions()
protected void addVisibilityActionItems()
PRE: columnVisibilityActions populated before calling this.
protected void addAdditionalActionItems()
protected void createVisibilityActions()
Here: all table columns contained in the TableColumnModel
-
visible and invisible columns - to createColumnVisibilityAction
and
adds all not null
return values.
PRE: canControl()
protected ColumnControlButton.ColumnVisibilityAction createColumnVisibilityAction(javax.swing.table.TableColumn column)
ColumnVisibilityAction
for the given
TableColumn
. The return value might be null, f.i. if the
column should not be allowed to be toggled.column
- the TableColumn
to use for the actionnull
.protected java.util.List<ColumnControlButton.ColumnVisibilityAction> getColumnVisibilityActions()
protected java.util.List<javax.swing.Action> getAdditionalActions()
protected java.util.List getColumnControlActionKeys()
protected boolean isColumnControlActionKey(java.lang.Object actionKey)
actionKey
- a key in the table's actionMap.protected java.beans.PropertyChangeListener getTablePropertyChangeListener()
PropertyChangeListener
for use with the
table, guaranteed to be not null
.protected java.beans.PropertyChangeListener createTablePropertyChangeListener()
Implementation note: this listener reacts to table's enabled
and
columnModel
properties and calls the respective
updateFromXX
methodes.
PropertyChangeListener
for use with the table.protected javax.swing.event.TableColumnModelListener getColumnModelListener()
TableColumnModelListener
for use with the
table's column model, guaranteed to be not null
.protected javax.swing.event.TableColumnModelListener createColumnModelListener()
Implementation note: this listener reacts to "real" columnRemoved/-Added by populating the popups content from scratch.
TableColumnModelListener
for use with the
table's columnModel.