Package com.jidesoft.swing
Class JideSplitButton
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.AbstractButton
-
- javax.swing.JMenuItem
-
- javax.swing.JMenu
-
- com.jidesoft.swing.JideMenu
-
- com.jidesoft.swing.JideSplitButton
-
- All Implemented Interfaces:
Alignable
,ButtonStyle
,ComponentStateSupport
,java.awt.image.ImageObserver
,java.awt.ItemSelectable
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,javax.swing.MenuElement
,javax.swing.SwingConstants
- Direct Known Subclasses:
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
javax.swing.JMenu.AccessibleJMenu, javax.swing.JMenu.WinListener
-
Nested classes/interfaces inherited from class javax.swing.JMenuItem
javax.swing.JMenuItem.AccessibleJMenuItem
-
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
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ACTION_PROPERTY_SPLIT_BUTTON_ENABLED
static java.lang.String
PROPERTY_ALWAYS_DROPDOWN
-
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
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
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface com.jidesoft.swing.Alignable
PROPERTY_ORIENTATION
-
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
-
-
Constructor Summary
Constructors Constructor Description JideSplitButton()
JideSplitButton(java.lang.String s)
JideSplitButton(java.lang.String s, javax.swing.Icon icon)
JideSplitButton(javax.swing.Action a)
JideSplitButton(javax.swing.Icon icon)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
actionPropertyChanged(javax.swing.Action action, java.lang.String propertyName)
protected void
configurePropertiesFromAction(javax.swing.Action action)
void
doClick()
Clicks on the button part of theJideSplitButton
.void
doClickOnMenu()
Clicks on the drop down menu part of theJideSplitButton
.java.awt.Color
getBackgroundOfState(int state)
Gets the background for different states.int
getButtonStyle()
Gets the button style.java.awt.Color
getDefaultForeground()
java.awt.Color
getForegroundOfState(int state)
Gets the foreground for different states.javax.swing.plaf.ButtonUI
getUI()
Returns the split button 's current UI.java.lang.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(javax.swing.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, java.awt.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(java.awt.Color defaultForeground)
void
setForegroundOfState(int state, java.awt.Color color)
Sets the foreground for different states.protected void
setIconFromAction(javax.swing.Action action)
By default, we will use large icon instead of small icon in the JMenuItem.void
setText(java.lang.String text)
void
setUI(javax.swing.plaf.ButtonUI ui)
Sets the L&F object that renders this component.void
updateUI()
Notification from theUIFactory
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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, 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, 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, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
PROPERTY_ALWAYS_DROPDOWN
public static final java.lang.String PROPERTY_ALWAYS_DROPDOWN
- See Also:
- Constant Field Values
-
ACTION_PROPERTY_SPLIT_BUTTON_ENABLED
public static final java.lang.String ACTION_PROPERTY_SPLIT_BUTTON_ENABLED
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JideSplitButton
public JideSplitButton()
-
JideSplitButton
public JideSplitButton(java.lang.String s)
-
JideSplitButton
public JideSplitButton(java.lang.String s, javax.swing.Icon icon)
-
JideSplitButton
public JideSplitButton(javax.swing.Icon icon)
-
JideSplitButton
public JideSplitButton(javax.swing.Action a)
-
-
Method Detail
-
initComponent
protected void initComponent()
-
getUI
public javax.swing.plaf.ButtonUI getUI()
Returns the split button 's current UI.- Overrides:
getUI
in classjavax.swing.AbstractButton
- See Also:
setUI(javax.swing.plaf.ButtonUI)
-
setUI
public void setUI(javax.swing.plaf.ButtonUI ui)
Sets the L&F object that renders this component.- Overrides:
setUI
in classjavax.swing.AbstractButton
- Parameters:
ui
- theJideSplitButtonUI
L&F object- See Also:
UIDefaults.getUI(javax.swing.JComponent)
-
updateUI
public void updateUI()
Notification from theUIFactory
that the L&F has changed. Called to replace the UI with the latest version from theUIFactory
.- Overrides:
updateUI
in classjavax.swing.JMenu
- See Also:
JComponent.updateUI()
-
getUIClassID
public java.lang.String getUIClassID()
Returns the name of the L&F class that renders this component.- Overrides:
getUIClassID
in classjavax.swing.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 anactionEvent
. CalldoClick
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 interfaceButtonStyle
- Returns:
- the button style.
-
setButtonStyle
public void setButtonStyle(int buttonStyle)
Sets the button style.- Specified by:
setButtonStyle
in interfaceButtonStyle
- 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(java.lang.String text)
- Overrides:
setText
in classjavax.swing.AbstractButton
-
getDefaultForeground
public java.awt.Color getDefaultForeground()
-
setDefaultForeground
public void setDefaultForeground(java.awt.Color defaultForeground)
-
getBackgroundOfState
public java.awt.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 interfaceComponentStateSupport
- Parameters:
state
- the button state. Please refer toThemePainter
to see the list of available states.- Returns:
- the background for different states.
-
setBackgroundOfState
public void setBackgroundOfState(int state, java.awt.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 interfaceComponentStateSupport
- Parameters:
state
- the button state. Please refer toThemePainter
to see the list of available states.color
- the background color
-
getForegroundOfState
public java.awt.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 interfaceComponentStateSupport
- Parameters:
state
- the button state. Please refer toThemePainter
to see the list of available states.- Returns:
- the foreground for different states.
-
setForegroundOfState
public void setForegroundOfState(int state, java.awt.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 interfaceComponentStateSupport
- Parameters:
state
- the button state. Please refer toThemePainter
to see the list of available states.color
- the background color
-
doClick
public void doClick()
Clicks on the button part of theJideSplitButton
.- Overrides:
doClick
in classjavax.swing.AbstractButton
-
doClickOnMenu
public void doClickOnMenu()
Clicks on the drop down menu part of theJideSplitButton
.
-
configurePropertiesFromAction
protected void configurePropertiesFromAction(javax.swing.Action action)
- Overrides:
configurePropertiesFromAction
in classjavax.swing.JMenuItem
-
setIconFromAction
protected void setIconFromAction(javax.swing.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(javax.swing.Action action, java.lang.String propertyName)
- Overrides:
actionPropertyChanged
in classjavax.swing.JMenuItem
-
isSplitButtonEnabled
public static boolean isSplitButtonEnabled(javax.swing.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.
-
-