JIDE 3.5.15

com.jidesoft.swing
Class JideSplitButton

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.JMenuItem
                      extended by javax.swing.JMenu
                          extended by com.jidesoft.swing.JideMenu
                              extended by com.jidesoft.swing.JideSplitButton
All Implemented Interfaces:
Alignable, ButtonStyle, ComponentStateSupport, ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible, MenuElement, SwingConstants
Direct Known Subclasses:
JideColorSplitButton, JideToggleSplitButton

public class JideSplitButton
extends JideMenu
implements ButtonStyle, ComponentStateSupport

JideSplitButton is a combination of button and menu. There is a line in the middle of the button that splits the button into two portions. The portion before the line is a button. User can click on it and trigger an action. The portion after the line is a menu. User can click on it to show a normal menu.

Please be noted that, when you try to use JideSplitButton as a menu item, please make sure that you will re-configure its font with the following code. Otherwise, it may look different with the other JMenuItems.

         splitButton.setFont((Font) JideSwingUtilities.getMenuFont(Toolkit.getDefaultToolkit(), UIManager.getDefaults()));
 

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.jidesoft.swing.JideMenu
JideMenu.MenuCreator, JideMenu.PopupMenuCustomizer, JideMenu.PopupMenuOriginCalculator
 
Nested classes/interfaces inherited from class javax.swing.JMenu
JMenu.AccessibleJMenu, JMenu.WinListener
 
Nested classes/interfaces inherited from class javax.swing.JMenuItem
JMenuItem.AccessibleJMenuItem
 
Nested classes/interfaces inherited from class javax.swing.AbstractButton
AbstractButton.AccessibleAbstractButton, AbstractButton.ButtonChangeListener
 
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
static String ACTION_PROPERTY_SPLIT_BUTTON_ENABLED
           
static String PROPERTY_ALWAYS_DROPDOWN
           
 
Fields inherited from class com.jidesoft.swing.JideMenu
DELAY
 
Fields inherited from class javax.swing.JMenu
popupListener
 
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 com.jidesoft.swing.ButtonStyle
BUTTON_STYLE_PROPERTY, CLIENT_PROPERTY_SEGMENT_POSITION, FLAT_STYLE, HYPERLINK_STYLE, SEGMENT_POSITION_FIRST, SEGMENT_POSITION_LAST, SEGMENT_POSITION_MIDDLE, SEGMENT_POSITION_ONLY, TOOLBAR_STYLE, TOOLBOX_STYLE
 
Fields inherited from interface com.jidesoft.swing.Alignable
PROPERTY_ORIENTATION
 
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
JideSplitButton()
           
JideSplitButton(Action a)
           
JideSplitButton(Icon icon)
           
JideSplitButton(String s)
           
JideSplitButton(String s, Icon icon)
           
 
Method Summary
protected  void actionPropertyChanged(Action action, String propertyName)
           
protected  void configurePropertiesFromAction(Action action)
           
 void doClick()
          Clicks on the button part of the JideSplitButton.
 void doClickOnMenu()
          Clicks on the drop down menu part of the JideSplitButton.
 Color getBackgroundOfState(int state)
          Gets the background for different states.
 int getButtonStyle()
          Gets the button style.
 Color getDefaultForeground()
           
 Color getForegroundOfState(int state)
          Gets the foreground for different states.
 ButtonUI getUI()
          Returns the split button 's current UI.
 String getUIClassID()
          Returns the name of the L&F class that renders this component.
protected  void initComponent()
           
 boolean isAlwaysDropdown()
          Checks the alwaysDropdown property value.
 boolean isButtonEnabled()
          Returns the state of the button part of the JideSplitButton.
 boolean isButtonSelected()
          Returns the state of the button part of the JideSplitButton.
static boolean isSplitButtonEnabled(Action action)
          Get if the split button is enable from the property stored inside the action.
 void setAlwaysDropdown(boolean alwaysDropdown)
          If the property is true, the split button doesn't have default action.
 void setBackgroundOfState(int state, Color color)
          Sets the background for different states.
 void setButtonEnabled(boolean b)
          Sets the state of the button part of the JideSplitButton.
 void setButtonSelected(boolean b)
          Sets the state of the button part of the JideSplitButton.
 void setButtonStyle(int buttonStyle)
          Sets the button style.
 void setDefaultForeground(Color defaultForeground)
           
 void setForegroundOfState(int state, Color color)
          Sets the foreground for different states.
protected  void setIconFromAction(Action action)
          By default, we will use large icon instead of small icon in the JMenuItem.
 void setText(String text)
           
 void setUI(ButtonUI ui)
          Sets the L&F object that renders this component.
 void updateUI()
          Notification from the UIFactory that the L&F has changed.
 
Methods inherited from class com.jidesoft.swing.JideMenu
getMenuCreator, getOrientation, getOriginCalculator, getPopupMenuCustomizer, getPopupMenuOrigin, getPreferredPopupHorizontalAlignment, getPreferredPopupVerticalAlignment, hideMenu, initMenu, isOpaque, isTopLevelMenu, originalIsOpaque, setMenuCreator, setOrientation, setOriginCalculator, setPopupMenuCustomizer, setPopupMenuVisible, setPreferredPopupHorizontalAlignment, setPreferredPopupVerticalAlignment, shouldHidePopupMenu, supportHorizontalOrientation, supportVerticalOrientation
 
Methods inherited from class javax.swing.JMenu
add, add, add, add, add, addMenuListener, addSeparator, applyComponentOrientation, createActionChangeListener, createActionComponent, createWinListener, doClick, fireMenuCanceled, fireMenuDeselected, fireMenuSelected, getAccessibleContext, getComponent, getDelay, getItem, getItemCount, getMenuComponent, getMenuComponentCount, getMenuComponents, getMenuListeners, getPopupMenu, getSubElements, insert, insert, insert, insertSeparator, isMenuComponent, isPopupMenuVisible, isSelected, isTearOff, menuSelectionChanged, paramString, processKeyEvent, remove, remove, remove, removeAll, removeMenuListener, setAccelerator, setComponentOrientation, setDelay, setMenuLocation, setModel, setSelected
 
Methods inherited from class javax.swing.JMenuItem
addMenuDragMouseListener, addMenuKeyListener, fireMenuDragMouseDragged, fireMenuDragMouseEntered, fireMenuDragMouseExited, fireMenuDragMouseReleased, fireMenuKeyPressed, fireMenuKeyReleased, fireMenuKeyTyped, getAccelerator, getMenuDragMouseListeners, getMenuKeyListeners, init, isArmed, processKeyEvent, processMenuDragMouseEvent, processMenuKeyEvent, processMouseEvent, removeMenuDragMouseListener, removeMenuKeyListener, setArmed, setEnabled, setUI
 
Methods inherited from class javax.swing.AbstractButton
addActionListener, addChangeListener, addImpl, addItemListener, checkHorizontalKey, checkVerticalKey, createActionListener, createActionPropertyChangeListener, createChangeListener, createItemListener, 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, getVerticalAlignment, getVerticalTextPosition, imageUpdate, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, paintBorder, removeActionListener, removeChangeListener, removeItemListener, removeNotify, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setFocusPainted, setHideActionText, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setLayout, setMargin, setMnemonic, setMnemonic, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelectedIcon, 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, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, 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, 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, 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, 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
 
Methods inherited from interface javax.swing.MenuElement
processKeyEvent, processMouseEvent
 

Field Detail

PROPERTY_ALWAYS_DROPDOWN

public static final String PROPERTY_ALWAYS_DROPDOWN
See Also:
Constant Field Values

ACTION_PROPERTY_SPLIT_BUTTON_ENABLED

public static final String ACTION_PROPERTY_SPLIT_BUTTON_ENABLED
See Also:
Constant Field Values
Constructor Detail

JideSplitButton

public JideSplitButton()

JideSplitButton

public JideSplitButton(String s)

JideSplitButton

public JideSplitButton(String s,
                       Icon icon)

JideSplitButton

public JideSplitButton(Icon icon)

JideSplitButton

public JideSplitButton(Action a)
Method Detail

initComponent

protected void initComponent()

getUI

public ButtonUI getUI()
Returns the split button 's current UI.

Overrides:
getUI in class AbstractButton
See Also:
setUI(javax.swing.plaf.ButtonUI)

setUI

public void setUI(ButtonUI ui)
Sets the L&F object that renders this component.

Overrides:
setUI in class AbstractButton
Parameters:
ui - the JideSplitButtonUI L&F object
See Also:
UIDefaults.getUI(javax.swing.JComponent)

updateUI

public void updateUI()
Notification from the UIFactory that the L&F has changed. Called to replace the UI with the latest version from the UIFactory.

Overrides:
updateUI in class JMenu
See Also:
JComponent.updateUI()

getUIClassID

public String getUIClassID()
Returns the name of the L&F class that renders this component.

Overrides:
getUIClassID in class JMenu
Returns:
the string "JideSplitButtonUI"
See Also:
JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)

isButtonSelected

public boolean isButtonSelected()
Returns the state of the button part of the JideSplitButton. True if the toggle button is selected, false if it's not.

Returns:
true if the toggle button is selected, otherwise false

setButtonSelected

public void setButtonSelected(boolean b)
Sets the state of the button part of the JideSplitButton. Note that this method does not trigger an actionEvent. Call doClick to perform a programmatic action change.

Parameters:
b - true if the button is selected, otherwise false

isButtonEnabled

public boolean isButtonEnabled()
Returns the state of the button part of the JideSplitButton. True if the button is enabled, false if it's not.

Returns:
true if the button is enabled, otherwise false

setButtonEnabled

public void setButtonEnabled(boolean b)
Sets the state of the button part of the JideSplitButton.

Parameters:
b - true if the button is enabled, otherwise false

getButtonStyle

public int getButtonStyle()
Gets the button style.

Specified by:
getButtonStyle in interface ButtonStyle
Returns:
the button style.

setButtonStyle

public void setButtonStyle(int buttonStyle)
Sets the button style.

Specified by:
setButtonStyle in interface ButtonStyle
Parameters:
buttonStyle - the new button style.

isAlwaysDropdown

public boolean isAlwaysDropdown()
Checks the alwaysDropdown property value.

Returns:
true or false. If true, the split button doesn't have default action. It always drops down the menu when mouse clicks

setAlwaysDropdown

public void setAlwaysDropdown(boolean alwaysDropdown)
If the property is true, the split button doesn't have default action. It always drops down the menu when mouse clicks. By default, this value is false.

Parameters:
alwaysDropdown - true or false.

setText

public void setText(String text)
Overrides:
setText in class AbstractButton

getDefaultForeground

public Color getDefaultForeground()

setDefaultForeground

public void setDefaultForeground(Color defaultForeground)

getBackgroundOfState

public Color getBackgroundOfState(int state)
Gets the background for different states. The states are defined in ThemePainter as constants. Not all states are supported by all components. If the state is not supported or background is never set, it will return null.

Please note, each L&F will have its own way to paint the different backgrounds. This method allows you to customize it for each component to use a different background. So if you want the background to be used, don't use a ColorUIResource because UIResource is considered as a setting set by the L&F and any L&F can choose to ignore it.

Specified by:
getBackgroundOfState in interface ComponentStateSupport
Parameters:
state - the button state. Please refer to ThemePainter to see the list of available states.
Returns:
the background for different states.

setBackgroundOfState

public void setBackgroundOfState(int state,
                                 Color color)
Sets the background for different states. The states are defined in ThemePainter as constants. Not all states are supported by all components. If the state is not supported or background is never set, it will return null.

Please note, each L&F will have its own way to paint the different backgrounds. This method allows you to customize it for each component to use a different background. So if you want the background to be used, don't use a ColorUIResource because UIResource is considered as a setting set by the L&F and any L&F can choose to ignore it.

Specified by:
setBackgroundOfState in interface ComponentStateSupport
Parameters:
state - the button state. Please refer to ThemePainter to see the list of available states.
color - the background color

getForegroundOfState

public Color getForegroundOfState(int state)
Gets the foreground for different states. The states are defined in ThemePainter as constants. Not all states are supported by all components. If the state is not supported or foreground is never set, it will return null.

Please note, each L&F will have its own way to paint the different foregrounds. This method allows you to customize it for each component to use a different foreground. So if you want the foreground to be used, don't use a ColorUIResource because UIResource is considered as a setting set by the L&F and any L&F can choose to ignore it.

Specified by:
getForegroundOfState in interface ComponentStateSupport
Parameters:
state - the button state. Please refer to ThemePainter to see the list of available states.
Returns:
the foreground for different states.

setForegroundOfState

public void setForegroundOfState(int state,
                                 Color color)
Sets the foreground for different states. The states are defined in ThemePainter as constants. Not all states are supported by all components. If the state is not supported or foreground is never set, it will return null.

Please note, each L&F will have its own way to paint the different foregrounds. This method allows you to customize it for each component to use a different foreground. So if you want the foreground to be used, don't use a ColorUIResource because UIResource is considered as a setting set by the L&F and any L&F can choose to ignore it.

Specified by:
setForegroundOfState in interface ComponentStateSupport
Parameters:
state - the button state. Please refer to ThemePainter to see the list of available states.
color - the background color

doClick

public void doClick()
Clicks on the button part of the JideSplitButton.

Overrides:
doClick in class AbstractButton

doClickOnMenu

public void doClickOnMenu()
Clicks on the drop down menu part of the JideSplitButton.


configurePropertiesFromAction

protected void configurePropertiesFromAction(Action action)
Overrides:
configurePropertiesFromAction in class JMenuItem

setIconFromAction

protected void setIconFromAction(Action action)
By default, we will use large icon instead of small icon in the JMenuItem. You could override this method to set your own icon size.

Parameters:
action - the action.

actionPropertyChanged

protected void actionPropertyChanged(Action action,
                                     String propertyName)
Overrides:
actionPropertyChanged in class JMenuItem

isSplitButtonEnabled

public static boolean isSplitButtonEnabled(Action action)
Get if the split button is enable from the property stored inside the action.

Parameters:
action - the action
Returns:
true if the split button is enabled. Otherwise false.

JIDE 3.5.15