org.pushingpixels.flamingo.api.common.popup
Class JCommandPopupMenu

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.pushingpixels.flamingo.api.common.popup.JPopupPanel
                      extended by org.pushingpixels.flamingo.api.common.popup.JCommandPopupMenu
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible
Direct Known Subclasses:
JColorSelectorPopupMenu

public class JCommandPopupMenu
extends JPopupPanel

Popup menu. Can host any number of command menu buttons added with addMenuButton(JCommandMenuButton) separated with optional addMenuSeparator(). The JCommandPopupMenu(JCommandButtonPanel, int, int) constructor allows placing a scrollable command button panel in the top part of the popup menu.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.pushingpixels.flamingo.api.common.popup.JPopupPanel
JPopupPanel.PopupPanelCustomizer
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
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  JCommandButtonPanel mainButtonPanel
          The main button panel.
protected  int maxButtonColumns
          Maximum number of button columns visible in the mainButtonPanel.
protected  int maxVisibleButtonRows
          Maximum number of button rows visible in the mainButtonPanel.
protected  int maxVisibleMenuButtons
          Maximum number of menu items visible in this menu.
protected  List<Component> menuComponents
          Menu components.
static String uiClassID
           
 
Fields inherited from class org.pushingpixels.flamingo.api.common.popup.JPopupPanel
customizer
 
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
JCommandPopupMenu()
          Creates an empty popup menu with no button panel.
JCommandPopupMenu(JCommandButtonPanel buttonPanel, int maxButtonColumns, int maxVisibleButtonRows)
          Creates a popup menu hosting the specified button panel.
 
Method Summary
 void addChangeListener(ChangeListener l)
          Adds the specified change listener to track changes to this popup menu.
 void addMenuButton(JCommandMenuButton menuButton)
          Adds the specified menu button to this menu.
 void addMenuButton(JCommandToggleMenuButton menuButton)
          Adds the specified toggle menu button to this menu.
protected  void addMenuPanel(JPanel menuPanel)
          Adds a menu panel to this menu.
 void addMenuSeparator()
          Adds a menu separator to this menu.
protected  void fireStateChanged()
          Notifies all registered listener that the state of this popup menu has changed.
 JCommandButtonPanel getMainButtonPanel()
          Returns the command button panel of this menu.
 int getMaxButtonColumns()
          Returns the maximum number of button columns visible in the command button panel of this menu.
 int getMaxVisibleButtonRows()
          Returns the maximum number of button rows visible in the command button panel of this menu.
 int getMaxVisibleMenuButtons()
          Returns the maximum number of menu items visible in this menu.
 List<Component> getMenuComponents()
          Returns an unmodifiable list of all the menu components.
 String getUIClassID()
           
 boolean hasCommandButtonPanel()
          Returns indication whether this menu has a command button panel.
 boolean isToDismissOnChildClick()
           
 void removeChangeListener(ChangeListener l)
          Removes the specified change listener from tracking changes to this popup menu.
 void setMaxVisibleMenuButtons(int maxVisibleMenuButtons)
          Sets the maximum number of menu items visible in this menu.
 void setToDismissOnChildClick(boolean toDismissOnChildClick)
           
 void updateUI()
           
 
Methods inherited from class org.pushingpixels.flamingo.api.common.popup.JPopupPanel
getCustomizer, getUI, setCustomizer, setUI
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, paramString, setUI
 
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, 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, 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, transferFocusBackward, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

uiClassID

public static final String uiClassID
See Also:
getUIClassID(), Constant Field Values

mainButtonPanel

protected JCommandButtonPanel mainButtonPanel
The main button panel. Can be null if this command popup menu was created with the JCommandPopupMenu() constructor.

See Also:
JCommandPopupMenu(JCommandButtonPanel, int, int), hasCommandButtonPanel(), getMainButtonPanel()

menuComponents

protected List<Component> menuComponents
Menu components. This list holds:

See Also:
addMenuButton(JCommandMenuButton), addMenuButton(JCommandToggleMenuButton), addMenuSeparator(), addMenuPanel(JPanel), getMenuComponents()

maxButtonColumns

protected int maxButtonColumns
Maximum number of button columns visible in the mainButtonPanel.

See Also:
JCommandPopupMenu(JCommandButtonPanel, int, int), getMaxButtonColumns()

maxVisibleButtonRows

protected int maxVisibleButtonRows
Maximum number of button rows visible in the mainButtonPanel.

See Also:
JCommandPopupMenu(JCommandButtonPanel, int, int), getMaxVisibleButtonRows()

maxVisibleMenuButtons

protected int maxVisibleMenuButtons
Maximum number of menu items visible in this menu. If more buttons are added with the addMenuButton(JCommandMenuButton) and addMenuButton(JCommandToggleMenuButton) APIs, the menu part will show scroller buttons above the first and below the last menu button. If the value is negative, there is no limitation on how many menu buttons are shown, and the entire popup menu can overflow the monitor edges.

Constructor Detail

JCommandPopupMenu

public JCommandPopupMenu()
Creates an empty popup menu with no button panel.


JCommandPopupMenu

public JCommandPopupMenu(JCommandButtonPanel buttonPanel,
                         int maxButtonColumns,
                         int maxVisibleButtonRows)
Creates a popup menu hosting the specified button panel.

Parameters:
buttonPanel - Fully constructed button panel.
maxButtonColumns - Maximum number of button columns visible in buttonPanel.
maxVisibleButtonRows - Maximum number of button rows visible in buttonPanel.
Method Detail

addMenuButton

public void addMenuButton(JCommandMenuButton menuButton)
Adds the specified menu button to this menu.

Parameters:
menuButton - Menu button to add.

addMenuButton

public void addMenuButton(JCommandToggleMenuButton menuButton)
Adds the specified toggle menu button to this menu.

Parameters:
menuButton - Menu button to add.

addMenuSeparator

public void addMenuSeparator()
Adds a menu separator to this menu.


addMenuPanel

protected void addMenuPanel(JPanel menuPanel)
Adds a menu panel to this menu.

Parameters:
menuPanel - Menu panel to add.

hasCommandButtonPanel

public boolean hasCommandButtonPanel()
Returns indication whether this menu has a command button panel.

Returns:
true if this menu has a command button panel, false otherwise.
See Also:
getMainButtonPanel()

getMainButtonPanel

public JCommandButtonPanel getMainButtonPanel()
Returns the command button panel of this menu. Can return null.

Returns:
The command button panel of this menu.
See Also:
hasCommandButtonPanel()

getMenuComponents

public List<Component> getMenuComponents()
Returns an unmodifiable list of all the menu components. Can return null.

Returns:
An unmodifiable list of all the menu components

getMaxButtonColumns

public int getMaxButtonColumns()
Returns the maximum number of button columns visible in the command button panel of this menu. If this menu has been created with the JCommandPopupMenu() constructor, zero is returned.

Returns:
The maximum number of button columns visible in the command button panel of this menu.
See Also:
JCommandPopupMenu(JCommandButtonPanel, int, int), getMaxVisibleButtonRows()

getMaxVisibleButtonRows

public int getMaxVisibleButtonRows()
Returns the maximum number of button rows visible in the command button panel of this menu. If this menu has been created with the JCommandPopupMenu() constructor, zero is returned.

Returns:
The maximum number of button rows visible in the command button panel of this menu.
See Also:
JCommandPopupMenu(JCommandButtonPanel, int, int), getMaxButtonColumns()

getMaxVisibleMenuButtons

public int getMaxVisibleMenuButtons()
Returns the maximum number of menu items visible in this menu.

Returns:
The maximum number of menu items visible in this menu. If the value is negative, there is no limitation on how many menu buttons are shown, and the entire popup menu can overflow the monitor edges.

setMaxVisibleMenuButtons

public void setMaxVisibleMenuButtons(int maxVisibleMenuButtons)
Sets the maximum number of menu items visible in this menu. If the value is negative, there is no limitation on how many menu buttons are shown, and the entire popup menu can overflow the monitor edges.

Parameters:
maxVisibleMenuButtons - The new value for the maximum number of menu items visible in this menu.

getUIClassID

public String getUIClassID()
Overrides:
getUIClassID in class JPopupPanel

updateUI

public void updateUI()
Overrides:
updateUI in class JPopupPanel

addChangeListener

public void addChangeListener(ChangeListener l)
Adds the specified change listener to track changes to this popup menu.

Parameters:
l - Change listener to add.
See Also:
removeChangeListener(ChangeListener)

removeChangeListener

public void removeChangeListener(ChangeListener l)
Removes the specified change listener from tracking changes to this popup menu.

Parameters:
l - Change listener to remove.
See Also:
addChangeListener(ChangeListener)

fireStateChanged

protected void fireStateChanged()
Notifies all registered listener that the state of this popup menu has changed.


isToDismissOnChildClick

public boolean isToDismissOnChildClick()

setToDismissOnChildClick

public void setToDismissOnChildClick(boolean toDismissOnChildClick)