Class JCommandButtonPanel

  • All Implemented Interfaces:
    javax.swing.Scrollable
    Direct Known Subclasses:
    AbstractFileViewPanel


    public class JCommandButtonPanel
    extends javax.swing.JComponent
    implements javax.swing.Scrollable
    Panel that hosts command buttons. Provides support for button groups, single selection mode (for toggle command buttons), same icon state / dimension and column-fill / row-fill layout. Note that while this class is a part of public API, it is highly recommended to use the CommandPanelContentModel and CommandPanelPresentationModel instances used to project the command button panel on screen for any dynamic manipulation of the state.

    Under the default CommandPanelPresentationModel.LayoutKind.ROW_FILL, the buttons are laid out in rows, never exceeding the available horizontal space. A vertical scroll bar will kick in once there is not enough vertical space to show all the buttons. The schematic below shows a row-fill command button panel:

     +-----------------------------+-+
     |                             |o|
     | +----+ +----+ +----+ +----+ |o|
     | | 01 | | 02 | | 03 | | 04 | |o|
     | +----+ +----+ +----+ +----+ |o|
     |                             | |
     | +----+ +----+ +----+ +----+ | |
     | | 05 | | 06 | | 07 | | 07 | | |
     | +----+ +----+ +----+ +----+ | |
     |                             | |
     | +----+ +----+ +----+ +----+ | |
     | | 09 | | 10 | | 11 | | 12 | | |
     | +----+ +----+ +----+ +----+ | |
     |                             | |
     | +----+ +----+ +----+ +----+ | |
     | | 13 | | 14 | | 15 | | 16 | | |
     +-----------------------------+-+
     

    Each row hosts four buttons, and the vertical scroll bar allows scrolling the content up and down.

    Under the CommandPanelPresentationModel.LayoutKind.COLUMN_FILL, the buttons are laid out in columns, never exceeding the available vertical space. A horizontal scroll bar will kick in once there is not enough horizontal space to show all the buttons. The schematic below shows a column-fill command button panel:

     +---------------------------------+
     |                                 |
     | +----+ +----+ +----+ +----+ +---|
     | | 01 | | 04 | | 07 | | 10 | | 13|
     | +----+ +----+ +----+ +----+ +---|
     |                                 |
     | +----+ +----+ +----+ +----+ +---|
     | | 02 | | 05 | | 08 | | 11 | | 14|
     | +----+ +----+ +----+ +----+ +---|
     |                                 |
     | +----+ +----+ +----+ +----+ +---|
     | | 03 | | 06 | | 09 | | 12 | | 15|
     | +----+ +----+ +----+ +----+ +---|
     |                                 |
     +---------------------------------+
     |oooo                             |
     +---------------------------------+
     

    Each column hosts three buttons, and the horizontal scroll bar allows scrolling the content left and right.

    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String uiClassID  
      • Fields inherited from class java.awt.Component

        accessibleContext, 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
      • 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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.List<JCommandButton> getGroupButtons​(int groupIndex)
      Returns the list of all buttons in the specified button group.
      int getGroupCount​()
      Returns the number of button groups in this panel.
      java.lang.String getGroupTitleAt​(int index)
      Returns the title of the command group at the specified index.
      java.awt.Dimension getPreferredScrollableViewportSize​()  
      Projection<JCommandButtonPanel,CommandPanelContentModel,CommandPanelPresentationModel> getProjection​()  
      int getScrollableBlockIncrement​(java.awt.Rectangle visibleRect, int orientation, int direction)  
      boolean getScrollableTracksViewportHeight​()  
      boolean getScrollableTracksViewportWidth​()  
      int getScrollableUnitIncrement​(java.awt.Rectangle visibleRect, int orientation, int direction)  
      Command getSelectedCommand​()  
      org.pushingpixels.flamingo.internal.ui.common.CommandButtonPanelUI getUI​()
      Returns the UI delegate for this component.
      java.lang.String getUIClassID​()  
      void scrollToSelectedCommand​()  
      void updateUI​()  
      • 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, getAccessibleContext, 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
      • 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 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, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, 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.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • getGroupCount

        public int getGroupCount​()
        Returns the number of button groups in this panel.
        Returns:
        Number of button groups in this panel.
      • getGroupTitleAt

        public java.lang.String getGroupTitleAt​(int index)
        Returns the title of the command group at the specified index.
        Parameters:
        index - Command group index.
        Returns:
        Title of the command group at the specified index.
      • getUI

        public org.pushingpixels.flamingo.internal.ui.common.CommandButtonPanelUI getUI​()
        Returns the UI delegate for this component.
        Overrides:
        getUI in class javax.swing.JComponent
        Returns:
        a CommandButtonPanelUI object
        See Also:
        JComponent.setUI(javax.swing.plaf.ComponentUI)
      • updateUI

        public void updateUI​()
        Overrides:
        updateUI in class javax.swing.JComponent
      • getUIClassID

        public java.lang.String getUIClassID​()
        Overrides:
        getUIClassID in class javax.swing.JComponent
      • getGroupButtons

        public java.util.List<JCommandButton> getGroupButtons​(int groupIndex)
        Returns the list of all buttons in the specified button group. Note that this method should only be used sparingly when your UI logic has to work with the projected buttons instead of the original (canonical) commands that define the content itself.
        Parameters:
        groupIndex - Group index.
        Returns:
        Unmodifiable view on the list of all buttons in the specified button group.
        See Also:
        getGroupCount()
      • getSelectedCommand

        public Command getSelectedCommand​()
      • scrollToSelectedCommand

        public void scrollToSelectedCommand​()
      • getPreferredScrollableViewportSize

        public java.awt.Dimension getPreferredScrollableViewportSize​()
        Specified by:
        getPreferredScrollableViewportSize in interface javax.swing.Scrollable
      • getScrollableBlockIncrement

        public int getScrollableBlockIncrement​(java.awt.Rectangle visibleRect,
                                               int orientation,
                                               int direction)
        Specified by:
        getScrollableBlockIncrement in interface javax.swing.Scrollable
      • getScrollableTracksViewportHeight

        public boolean getScrollableTracksViewportHeight​()
        Specified by:
        getScrollableTracksViewportHeight in interface javax.swing.Scrollable
      • getScrollableTracksViewportWidth

        public boolean getScrollableTracksViewportWidth​()
        Specified by:
        getScrollableTracksViewportWidth in interface javax.swing.Scrollable
      • getScrollableUnitIncrement

        public int getScrollableUnitIncrement​(java.awt.Rectangle visibleRect,
                                              int orientation,
                                              int direction)
        Specified by:
        getScrollableUnitIncrement in interface javax.swing.Scrollable