com.alee.extended.button
Class WebSplitButton

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.AbstractButton
                  extended by javax.swing.JButton
                      extended by com.alee.laf.button.WebButton
                          extended by com.alee.extended.button.WebSplitButton
All Implemented Interfaces:
LanguageMethods, ShapeProvider, FontMethods<WebButton>, SizeMethods<WebButton>, SwingMethods, java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.ItemSelectable, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.SwingConstants

public class WebSplitButton
extends WebButton
implements java.awt.event.MouseMotionListener, java.awt.event.MouseListener, java.awt.event.ActionListener, java.io.Serializable

Custom button that displays an additional side (split side) that could call a popup menu. You can specify the displayed menu using setPopupMenu method.

Author:
Mikle Garin
See Also:
WebButton, WebSplitButtonUI, WebSplitButtonStyle, setPopupMenu(javax.swing.JPopupMenu), Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JButton
javax.swing.JButton.AccessibleJButton
 
Nested classes/interfaces inherited from class javax.swing.AbstractButton
javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
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
 
Field Summary
protected  boolean alwaysShowMenu
          Whether should always display popup menu when button is clicked or not.
protected  boolean onSplit
          Whether mouse is on the split button or not.
protected  javax.swing.JPopupMenu popupMenu
          Split button popup menu.
protected  PopupMenuWay popupMenuWay
          Popup menu display way.
 
Fields inherited from class javax.swing.AbstractButton
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
 
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 javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
WebSplitButton()
          Constructs new split button.
WebSplitButton(javax.swing.Action a)
          Constructs new split button.
WebSplitButton(java.awt.event.ActionListener listener)
          Constructs new split button.
WebSplitButton(javax.swing.Icon icon)
          Constructs new split button.
WebSplitButton(javax.swing.Icon icon, java.awt.event.ActionListener listener)
          Constructs new split button.
WebSplitButton(java.lang.String text)
          Constructs new split button.
WebSplitButton(java.lang.String text, java.awt.event.ActionListener listener)
          Constructs new split button.
WebSplitButton(java.lang.String text, javax.swing.Icon icon)
          Constructs new split button.
WebSplitButton(java.lang.String text, javax.swing.Icon icon, java.awt.event.ActionListener listener)
          Constructs new split button.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
          
 void addSplitButtonListener(SplitButtonListener listener)
          Adds SplitButtonListener to the button.
protected  void fireButtonClicked(java.awt.event.ActionEvent event)
          Notifies all listeners that have registered interest for notification on this event type.
protected  void fireSplitbuttonClicked(java.awt.event.ActionEvent event)
          Notifies all listeners that have registered interest for notification on this event type.
 int getContentGap()
          Returns gap between split part and button content.
 javax.swing.JPopupMenu getPopupMenu()
          Returns the popup menu if set, null otherwise.
 PopupMenuWay getPopupMenuWay()
          Returns approximate popup menu display way.
 javax.swing.ImageIcon getSplitIcon()
          Returns split button icon.
 int getSplitIconGap()
          Returns gap between split icon and split part sides.
 java.lang.String getUIClassID()
          
 WebSplitButtonUI getWebUI()
          
protected  void init(java.lang.String text, javax.swing.Icon icon)
          
 boolean isAlwaysShowMenu()
          Returns whether should always display popup menu when button is clicked or not.
 void mouseClicked(java.awt.event.MouseEvent e)
          
 void mouseDragged(java.awt.event.MouseEvent e)
          
 void mouseEntered(java.awt.event.MouseEvent e)
          
 void mouseExited(java.awt.event.MouseEvent e)
          
 void mouseMoved(java.awt.event.MouseEvent e)
          
 void mousePressed(java.awt.event.MouseEvent e)
          
 void mouseReleased(java.awt.event.MouseEvent e)
          
 void removeSplitButtonListener(SplitButtonListener listener)
          Removes SplitButtonListener from the button.
 void setAlwaysShowMenu(boolean alwaysShowMenu)
          Sets whether should always display popup menu when button is clicked or not.
 void setContentGap(int contentGap)
          Sets gap between split part and button content.
 void setPopupMenu(javax.swing.JPopupMenu popupMenu)
          Sets the popup menu to be displayed, when the split part of the button is clicked.
 void setPopupMenuWay(PopupMenuWay way)
          Sets approximate popup menu display way.
 void setSplitIcon(javax.swing.ImageIcon splitIcon)
          Sets split button icon
 void setSplitIconGap(int splitIconGap)
          Sets gap between split icon and split part sides
 void showPopupMenu()
          Displays split button popup menu.
 void updateUI()
          
 
Methods inherited from class com.alee.laf.button.WebButton
addHotkey, addHotkey, addHotkey, addHotkey, addHotkey, addHotkey, addHotkey, addHotkey, changeFontSize, createIconWebButton, createIconWebButton, createIconWebButton, createIconWebButton, createIconWebButton, createIconWebButton, createIconWebButton, createIconWebButton, createIconWebButton, createWebButton, getBottomBgColor, getBottomSelectedBgColor, getFontName, getFontSize, getHotkeys, getInnerShadeColor, getInnerShadeWidth, getLeftRightSpacing, getMargin, getMinimumHeight, getMinimumWidth, getPainter, getPreferredHeight, getPreferredSize, getPreferredWidth, getRound, getSelectedForeground, getShadeColor, getShadeWidth, getShineColor, getTopBgColor, getTopSelectedBgColor, isAnimate, isBoldFont, isDrawBottom, isDrawBottomLine, isDrawFocus, isDrawLeft, isDrawLeftLine, isDrawRight, isDrawRightLine, isDrawShade, isDrawTop, isDrawTopLine, isItalicFont, isLanguageSet, isMoveIconOnPress, isPlainFont, isRolloverDarkBorderOnly, isRolloverDecoratedOnly, isRolloverShadeOnly, isRolloverShine, isShowDisabledShade, isUndecorated, provideShape, removeHotkey, removeHotkeys, removeLanguage, removeLanguageUpdater, setAnimate, setBoldFont, setBoldFont, setBottomBgColor, setBottomSelectedBgColor, setDrawBottom, setDrawBottomLine, setDrawFocus, setDrawLeft, setDrawLeftLine, setDrawLines, setDrawRight, setDrawRightLine, setDrawShade, setDrawSides, setDrawTop, setDrawTopLine, setFontName, setFontSize, setFontSizeAndStyle, setFontSizeAndStyle, setFontStyle, setFontStyle, setInnerShadeColor, setInnerShadeWidth, setItalicFont, setItalicFont, setLanguage, setLanguageUpdater, setLeftRightSpacing, setMargin, setMargin, setMargin, setMinimumHeight, setMinimumWidth, setMoveIconOnPress, setPainter, setPlainFont, setPlainFont, setPreferredHeight, setPreferredWidth, setRolloverDarkBorderOnly, setRolloverDecoratedOnly, setRolloverShadeOnly, setRolloverShine, setRound, setSelectedForeground, setShadeColor, setShadeWidth, setShineColor, setShowDisabledShade, setTopBgColor, setTopSelectedBgColor, setUndecorated, updateLanguage, updateLanguage
 
Methods inherited from class javax.swing.JButton
getAccessibleContext, isDefaultButton, isDefaultCapable, paramString, removeNotify, setDefaultCapable
 
Methods inherited from class javax.swing.AbstractButton
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, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, 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, setMnemonic, setMnemonic, setModel, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelected, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition
 
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, 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, 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
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, 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, 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, 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

alwaysShowMenu

protected boolean alwaysShowMenu
Whether should always display popup menu when button is clicked or not. If set to false popup menu will only be displayed when split button part is clicked.


popupMenuWay

protected PopupMenuWay popupMenuWay
Popup menu display way.


popupMenu

protected javax.swing.JPopupMenu popupMenu
Split button popup menu.


onSplit

protected boolean onSplit
Whether mouse is on the split button or not.

Constructor Detail

WebSplitButton

public WebSplitButton()
Constructs new split button.


WebSplitButton

public WebSplitButton(javax.swing.Icon icon)
Constructs new split button.

Parameters:
icon - button icon

WebSplitButton

public WebSplitButton(java.lang.String text)
Constructs new split button.

Parameters:
text - button text

WebSplitButton

public WebSplitButton(java.lang.String text,
                      javax.swing.Icon icon)
Constructs new split button.

Parameters:
text - button text
icon - button icon

WebSplitButton

public WebSplitButton(java.awt.event.ActionListener listener)
Constructs new split button.

Parameters:
listener - button action listener

WebSplitButton

public WebSplitButton(javax.swing.Icon icon,
                      java.awt.event.ActionListener listener)
Constructs new split button.

Parameters:
icon - button icon
listener - button action listener

WebSplitButton

public WebSplitButton(java.lang.String text,
                      java.awt.event.ActionListener listener)
Constructs new split button.

Parameters:
text - button text
listener - button action listener

WebSplitButton

public WebSplitButton(java.lang.String text,
                      javax.swing.Icon icon,
                      java.awt.event.ActionListener listener)
Constructs new split button.

Parameters:
text - button text
icon - button icon
listener - button action listener

WebSplitButton

public WebSplitButton(javax.swing.Action a)
Constructs new split button.

Parameters:
a - button action
Method Detail

init

protected void init(java.lang.String text,
                    javax.swing.Icon icon)

Overrides:
init in class javax.swing.AbstractButton

getPopupMenu

public javax.swing.JPopupMenu getPopupMenu()
Returns the popup menu if set, null otherwise.

Returns:
popup menu

setPopupMenu

public void setPopupMenu(javax.swing.JPopupMenu popupMenu)
Sets the popup menu to be displayed, when the split part of the button is clicked.

Parameters:
popupMenu - popup menu to be displayed, when the split part of the button is clicked

isAlwaysShowMenu

public boolean isAlwaysShowMenu()
Returns whether should always display popup menu when button is clicked or not.

Returns:
true if should always display popup menu when button is clicked, false otherwise

setAlwaysShowMenu

public void setAlwaysShowMenu(boolean alwaysShowMenu)
Sets whether should always display popup menu when button is clicked or not.

Parameters:
alwaysShowMenu - whether should always display popup menu when button is clicked or not

getPopupMenuWay

public PopupMenuWay getPopupMenuWay()
Returns approximate popup menu display way.

Returns:
approximate popup menu display way

setPopupMenuWay

public void setPopupMenuWay(PopupMenuWay way)
Sets approximate popup menu display way. This will have effect only if WebPopupMenuUI is used as popup menu UI. Otherwise this variable will have no effect on popup menu display way.

Parameters:
way - approximate popup menu display way

getSplitIcon

public javax.swing.ImageIcon getSplitIcon()
Returns split button icon.

Returns:
split button icon

setSplitIcon

public void setSplitIcon(javax.swing.ImageIcon splitIcon)
Sets split button icon

Parameters:
splitIcon - new split button icon

getSplitIconGap

public int getSplitIconGap()
Returns gap between split icon and split part sides.

Returns:
gap between split icon and split part sides

setSplitIconGap

public void setSplitIconGap(int splitIconGap)
Sets gap between split icon and split part sides

Parameters:
splitIconGap - gap between split icon and split part sides

getContentGap

public int getContentGap()
Returns gap between split part and button content.

Returns:
gap between split part and button content

setContentGap

public void setContentGap(int contentGap)
Sets gap between split part and button content.

Parameters:
contentGap - gap between split part and button content

addSplitButtonListener

public void addSplitButtonListener(SplitButtonListener listener)
Adds SplitButtonListener to the button.

Parameters:
listener - the SplitButtonListener to be added

removeSplitButtonListener

public void removeSplitButtonListener(SplitButtonListener listener)
Removes SplitButtonListener from the button. If the listener is the currently set Action for the button, then the Action is set to null.

Parameters:
listener - the SplitButtonListener to be removed

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)

Specified by:
actionPerformed in interface java.awt.event.ActionListener

showPopupMenu

public void showPopupMenu()
Displays split button popup menu.


mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)

Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent e)

Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)

Specified by:
mouseClicked in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)

Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)

Specified by:
mouseReleased in interface java.awt.event.MouseListener

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)

Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)

Specified by:
mouseExited in interface java.awt.event.MouseListener

fireButtonClicked

protected void fireButtonClicked(java.awt.event.ActionEvent 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 ActionEvent object
See Also:
EventListenerList

fireSplitbuttonClicked

protected void fireSplitbuttonClicked(java.awt.event.ActionEvent 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 ActionEvent object
See Also:
EventListenerList

getWebUI

public WebSplitButtonUI getWebUI()

Overrides:
getWebUI in class WebButton

updateUI

public void updateUI()

Overrides:
updateUI in class WebButton

getUIClassID

public java.lang.String getUIClassID()

Overrides:
getUIClassID in class javax.swing.JButton