org.jvnet.substance.utils
Class SubstanceCoreUtilities

java.lang.Object
  extended by org.jvnet.substance.utils.SubstanceCoreUtilities

public class SubstanceCoreUtilities
extends java.lang.Object

Various utility functions. This class is for internal use only.

Author:
Kirill Grouchnikov, Romain Guy

Field Summary
static java.lang.String DO_NOT_FILL_BACKGROUND
          Client property name to mark a component as skipping the background fill during the painting sequence that involves text painters.
static java.lang.String HAS_CUSTOM_BACKGROUND_FILL
           
static java.lang.String IS_COVERED_BY_LIGHTWEIGHT_POPUPS
           
 
Method Summary
static void applyStripedBackground(javax.swing.JComponent component, int index, javax.swing.JComponent renderer)
           
static java.awt.image.BufferedImage blendImagesHorizontal(java.awt.image.BufferedImage imageLeft, java.awt.image.BufferedImage imageRight, double start, double end)
          Blends two images along X-axis.
static java.awt.image.BufferedImage blendImagesVertical(java.awt.image.BufferedImage imageTop, java.awt.image.BufferedImage imageBottom, double start, double end)
          Blends two images along Y-axis.
static java.lang.String clipString(java.awt.FontMetrics metrics, int availableWidth, java.lang.String fullText)
          Clips string based on specified font metrics and available width (in pixels).
static java.awt.image.BufferedImage createClipImage(java.awt.Shape s, int width, int height)
          Creates a clip image for soft-clipping.
static java.awt.image.BufferedImage createCompatibleImage(java.awt.image.BufferedImage image)
          Creates a compatible image (for efficient processing and drawing).
static javax.swing.Icon getActiveIcon(javax.swing.Icon origIcon, javax.swing.JComponent comp, javax.swing.ButtonModel model, javax.swing.Icon glowingIcon, boolean ignoreRolloverSetting)
           
static javax.swing.Icon getArrowIcon(java.awt.Component comp, javax.swing.AbstractButton button, int orientation)
          Returns the arrow icon.
static java.awt.Color getBackgroundFillColor(java.awt.Component component)
           
static java.awt.image.BufferedImage getBlankImage(int width, int height)
          Retrieves transparent image of specified dimension.
static SubstanceBorderPainter getBorderPainter(java.awt.Component comp)
          Returns the border painter for the specified component.
static SubstanceButtonShaper getButtonShaper(java.awt.Component button)
          Returns the button shaper of the specified button.
static java.lang.ClassLoader getClassLoaderForResources()
           
static int getCloseButtonSize(javax.swing.JTabbedPane tabbedPane, int tabIndex)
          Returns the size of the close button for a tab in the specified tabbed pane.
static double getColorizationFactor(java.awt.Component c)
           
static java.lang.Object getComboPopupPrototypeDisplayValue(javax.swing.JComboBox combo)
          Returns the popup prototype display value for the specified combo box.
static SubstanceConstants.TabContentPaneBorderKind getContentBorderKind(javax.swing.JTabbedPane tabbedPane)
          Returns the content border kind of the specified tabbed pane.
static ControlBackgroundComposite getControlBackgroundComposite(java.awt.Component component)
          Returns the tab background composite of the specified tabbed pane.
static javax.swing.plaf.ColorUIResource getDefaultBackgroundColor(java.lang.Class componentClass, SubstanceTheme componentTheme)
           
static javax.swing.Icon getDoubleArrowIcon(java.awt.Component comp, javax.swing.AbstractButton button, int orientation)
          Returns the arrow icon.
static int getEchoPerChar(javax.swing.JPasswordField jpf)
          Returns the number of echo characters per each password chanaracter.
static org.jvnet.lafwidget.animation.FadeTrackerCallback getFadeCallback(javax.swing.AbstractButton button, boolean toRepaintParent)
          Returns the fade callback for the specified button.
static org.jvnet.lafwidget.animation.FadeTrackerCallback getFadeCallback(javax.swing.JComponent component, javax.swing.ButtonModel model, boolean toIgnoreSelection, boolean toRepaintParent, java.awt.Component componentToRepaint)
          Returns the fade callback for the specified component.
static SubstanceConstants.FocusKind getFocusKind(java.awt.Component component)
          Returns the focus ring kind of the specified component.
static java.awt.Color getForegroundColor(java.awt.Component component, ComponentState state, ComponentState prevState)
           
static java.awt.Color getForegroundColor(javax.swing.JTabbedPane tabPane, int tabIndex, ComponentState state, ComponentState prevState)
           
static SubstanceGradientPainter getGradientPainter(javax.swing.JComponent comp)
          Returns the gradient painter of the specified component.
static java.awt.Container getHeaderParent(java.awt.Component c)
          Given a component, returns the parent for computing the SubstanceDecorationPainter.
static java.lang.String getHierarchy(java.awt.Component comp)
          Returns the component hierarchy.
static void getHierarchy(java.awt.Component comp, java.lang.StringBuffer buffer, int level)
          Computes the component hierarchy.
static javax.swing.Icon getIcon(javax.swing.AbstractButton b, javax.swing.Icon defaultIcon, javax.swing.Icon glowingIcon, boolean ignoreRolloverSetting)
          Returns the current icon for the specified button.
static javax.swing.Icon getIcon(java.lang.String iconResource)
          Returns an icon pointed to by the specified string.
static java.awt.Color getInterpolatedForegroundColor(java.awt.Component comp, java.lang.Comparable<?> componentId, SubstanceTheme theme, ComponentState state, ComponentState prevState, org.jvnet.lafwidget.animation.FadeKind... kinds)
          Returns the foreground color for the specified component.
static java.awt.Color getMarkColor(SubstanceTheme theme, boolean isEnabled)
          Returns the color of mark icons (checkbox, radio button, scrollbar arrows, combo arrows, menu arrows etc) for the specified theme.
static SubstanceConstants.MenuGutterFillKind getMenuGutterFillKind()
          Returns the global menu gutter fill kind.
static ColorScheme getOptionPaneColorScheme(int messageType, ColorScheme mainScheme)
          Returns the color scheme for the icon of option panes with the specified message type.
static int getPopupFlyoutOrientation(javax.swing.JComboBox combobox)
          Returns the popup flyout orientation for the specified combobox.
static int getPopupParentIndexOf(java.awt.Component comp, java.awt.Component[] popups)
           
static ComponentState getPrevComponentState(javax.swing.JComponent comp)
          Returns the previous state of the specified component.
static ComponentState getPrevSelComponentState(javax.swing.JComponent comp)
          Returns the previous state of the specified component.
static java.util.ResourceBundle getResourceBundle(javax.swing.JComponent jcomp)
          Returns the resource bundle for the specified component.
static java.lang.String getSchemeId(ColorScheme colorScheme)
          Retruns the unique ID for the specified color scheme.
static SubstanceConstants.ScrollPaneButtonPolicyKind getScrollPaneButtonsPolicyKind(javax.swing.JScrollBar scrollBar)
          Returns the scroll bar buttons kind of the specified scroll bar.
static java.util.Set<SubstanceConstants.Side> getSides(javax.swing.AbstractButton button, java.lang.String propertyName)
          Returns the set of sides registered on the specified button.
static java.awt.Container getSpecialBackgroundFillContainer(javax.swing.JComponent comp)
           
static java.awt.Color getStripedBackground(javax.swing.JComponent component, int index)
           
static TabCloseCallback getTabCloseCallback(java.awt.event.MouseEvent me, javax.swing.JTabbedPane tabbedPane, int tabIndex)
          Returns the callback to be called upon tab closing (using the tab close button).
static SubstanceConstants.TabTextAlignmentKind getTabTextAlignmentKind(javax.swing.JTabbedPane tabPane)
          Returns the text alignment kind of the specified tabbed pane.
static javax.swing.JComponent getTitlePane(javax.swing.JRootPane rootPane)
          Returns the title pane of the specified root pane.
static float getToolbarButtonCornerRadius(javax.swing.AbstractButton button, java.awt.Insets insets)
          Returns the corner radius of the specified toolbar button.
static boolean hasCloseButton(javax.swing.JTabbedPane tabbedPane, int tabIndex)
          Checks whether the specified tab has a close button.
static boolean hasColorization(java.awt.Component c)
           
static boolean hasFlatAppearance(javax.swing.AbstractButton button)
          Computes whether the specified button has flat appearance.
static boolean hasFlatAppearance(java.awt.Component comp, boolean defaultValue)
          Checks whether the specified component is flat.
static boolean hasIcon(javax.swing.AbstractButton button)
          Checks whether the specified button has associated icon.
static boolean hasNoMinSizeProperty(javax.swing.AbstractButton button)
          Checks whether the specified button should have minimal size.
static boolean hasOverlayProperty(java.awt.Component component)
          Checks whether the specified component has overlay enabled.
static boolean hasPropertySetTo(java.awt.Component comp, java.lang.String propertyName, boolean expectedValue, boolean checkHierarchy)
          Checks whether a component has the specified client property set to the specified value.
static boolean hasSubstanceBorder(javax.swing.JComponent c)
          Returns indication whether the specified component's border is a Substance-specific border.
static boolean hasText(javax.swing.AbstractButton button)
          Checks whether the specified button has associated text.
static boolean isButtonNeverPainted(javax.swing.AbstractButton button)
          Checks whether the specified button never paints its background.
static boolean isComboBoxButton(javax.swing.AbstractButton button)
          Checks and answers if the specified button is in a combo box.
static boolean isControlAlwaysPaintedActive(java.awt.Component comp)
          Checks whether the specified control is always painted in currently active color (ignoring the transition states that normally result in default appearance).
static boolean isControlAlwaysPaintedActive(java.awt.Component comp, boolean checkHierarchy)
          Checks whether the specified control is always painted in currently active color (ignoring the transition states that normally result in default appearance).
static boolean isInternalFrameModified(javax.swing.JInternalFrame internalFrame)
          Retrieves the modified state for the specified internal frame.
static boolean isRootPaneModified(javax.swing.JRootPane rootPane)
          Retrieves the modified state for the specified root pane.
static boolean isScrollBarButton(javax.swing.AbstractButton button)
          Checks and answers if the specified button is in a scroll bar.
static boolean isScrollButton(javax.swing.JComponent comp)
          Checks answers if the specified component is a button in a scroll control, such as scroll bar or tabbed pane (as tab scroller).
static boolean isSpinnerButton(javax.swing.AbstractButton button)
          Checks and answers if the specified button is in a spinner.
static boolean isTabModified(java.awt.Component tabComponent)
          Retrieves the modified state for the specified component in a tabbed pane.
static boolean isThemeDark(SubstanceTheme theme)
          Checks whether the specified theme is dark.
static boolean isTitleCloseButton(javax.swing.AbstractButton ab)
          Returns indication whether the specified button is a close button on some title pane.
static boolean isToolBarButton(javax.swing.AbstractButton button)
          Checks and answers if the specified button is in a toolbar.
static void makeNonDoubleBuffered(java.awt.Component comp, java.util.Map<java.awt.Component,java.lang.Boolean> dbSnapshot)
          Makes the specified component and all its descendants non-double buffered.
static void makeNonOpaque(java.awt.Component comp, java.util.Map<java.awt.Component,java.lang.Boolean> opacitySnapshot)
          Makes the specified component and all its descendants non-opaque.
static void paintFocus(java.awt.Graphics g, java.awt.Component mainComp, java.awt.Component focusedComp, java.awt.Rectangle textRect)
          Paints the focus ring on the specified component.
static void paintFocus(java.awt.Graphics g, java.awt.Component mainComp, java.awt.Component focusedComp, java.awt.Shape focusShape, java.awt.Rectangle textRect, float maxAlphaCoef, int extraPadding)
          Paints the focus ring on the specified component.
static void paintSeparator(java.awt.Component c, java.awt.Graphics2D graphics, ColorScheme colorScheme, boolean isDark, int width, int height, int orientation)
          Paints a separator.
static void paintSeparator(java.awt.Component c, java.awt.Graphics2D graphics, ColorScheme colorScheme, boolean isDark, int width, int height, int orientation, boolean hasShadow, int maxGradLength)
          Paints a separator.
static void paintSeparator(java.awt.Component c, java.awt.Graphics2D graphics, ColorScheme colorScheme, boolean isDark, int width, int height, int orientation, boolean hasShadow, int maxGradLengthStart, int maxGradLengthEnd)
          Paints a separator.
static float paintText(javax.swing.AbstractButton button, java.awt.Rectangle textRect, java.lang.String text, int mnemonicIndex)
          Paints the text.
static float paintText(javax.swing.JComponent component, java.awt.Rectangle textRect, java.lang.String text, int mnemonicIndex, ComponentState state, ComponentState prevState)
           
static void paintTextCompBackground(java.awt.Graphics g, javax.swing.JComponent comp)
           
static void paintTextCompBackground(java.awt.Graphics g, javax.swing.JComponent comp, java.awt.Color backgr, boolean toOverlayWatermark)
           
static void paintTextComponent(java.awt.Graphics g, javax.swing.text.JTextComponent textComponent, javax.swing.text.View rootView, java.awt.Rectangle visibleEditorRect)
           
static void paintTextWithDropShadow(javax.swing.JComponent c, java.awt.Graphics g, java.awt.Color foregroundColor, java.lang.String text, int width, int height, int xOffset, int yOffset)
          Paints text with drop shadow.
static void resetCaches()
           
static void resetMenuBars(java.awt.Component component)
          Resets the menu bars on the specified component.
static void restoreDoubleBuffered(java.awt.Component comp, java.util.Map<java.awt.Component,java.lang.Boolean> dbSnapshot)
          Restores the double buffer of the specified component and all its descendants.
static void restoreOpaque(java.awt.Component comp, java.util.Map<java.awt.Component,java.lang.Boolean> opacitySnapshot)
          Restores the opacity of the specified component and all its descendants.
static boolean toAnimateCloseIconOfModifiedTab(javax.swing.JTabbedPane tabbedPane, int tabIndex)
          Checks whether the specified tab should show modified animation only on its close button.
static boolean toBleedWatermark(java.awt.Component component)
          Returns indication whether the watermark should "bleed" through the specified component.
static boolean toDrawWatermark(java.awt.Component component)
          Returns indication whether the watermark should be drawn on the specified component.
static boolean toLayoutVertically(javax.swing.JTabbedPane tabbedPane)
          Checks whether the specified tab should show vertically-aligned (rotated) components.
static boolean toShowExtraElements(java.awt.Component component)
          Checks whether the specified component has extra Substance-specific UI elements.
static boolean toShowIconUnrotated(javax.swing.JTabbedPane tabbedPane, int tabIndex)
          Checks whether the specified tab should show unrotated icon when the tab itself is layed-out vertically.
static void uninstallMenu(javax.swing.JMenuItem menuItem)
          Uninstalls the specified menu item.
static boolean useThemedDefaultIcon(javax.swing.JComponent comp)
          Checks whether the specified component will show theme-colorized icon in the default state.
static void workaroundBug6576507(java.awt.Graphics graphics)
          Provides workaround for bug 6576507.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DO_NOT_FILL_BACKGROUND

public static final java.lang.String DO_NOT_FILL_BACKGROUND
Client property name to mark a component as skipping the background fill during the painting sequence that involves text painters.

See Also:
Constant Field Values

HAS_CUSTOM_BACKGROUND_FILL

public static final java.lang.String HAS_CUSTOM_BACKGROUND_FILL
See Also:
Constant Field Values

IS_COVERED_BY_LIGHTWEIGHT_POPUPS

public static final java.lang.String IS_COVERED_BY_LIGHTWEIGHT_POPUPS
See Also:
Constant Field Values
Method Detail

clipString

public static java.lang.String clipString(java.awt.FontMetrics metrics,
                                          int availableWidth,
                                          java.lang.String fullText)
Clips string based on specified font metrics and available width (in pixels). Returns the clipped string, which contains the beginning and the end of the input string separated by ellipses (...) in case the string is too long to fit into the specified width, and the origianl string otherwise.

Parameters:
metrics - Font metrics.
availableWidth - Available width in pixels.
fullText - String to clip.
Returns:
The clipped string, which contains the beginning and the end of the input string separated by ellipses (...) in case the string is too long to fit into the specified width, and the origianl string otherwise.

hasIcon

public static boolean hasIcon(javax.swing.AbstractButton button)
Checks whether the specified button has associated icon.

Parameters:
button - Button.
Returns:
If the button has associated icon, true is returned, otherwise false.

hasText

public static boolean hasText(javax.swing.AbstractButton button)
Checks whether the specified button has associated text.

Parameters:
button - Button.
Returns:
If the button has associated text, true is returned, otherwise false.

isComboBoxButton

public static boolean isComboBoxButton(javax.swing.AbstractButton button)
Checks and answers if the specified button is in a combo box.

Parameters:
button - the button to check
Returns:
true if in combo box, false otherwise

isScrollBarButton

public static boolean isScrollBarButton(javax.swing.AbstractButton button)
Checks and answers if the specified button is in a scroll bar.

Parameters:
button - the button to check
Returns:
true if in scroll bar, false otherwise

isSpinnerButton

public static boolean isSpinnerButton(javax.swing.AbstractButton button)
Checks and answers if the specified button is in a spinner.

Parameters:
button - the button to check
Returns:
true if in spinner, false otherwise

isToolBarButton

public static boolean isToolBarButton(javax.swing.AbstractButton button)
Checks and answers if the specified button is in a toolbar.

Parameters:
button - the button to check
Returns:
true if in toolbar, false otherwise

isScrollButton

public static boolean isScrollButton(javax.swing.JComponent comp)
Checks answers if the specified component is a button in a scroll control, such as scroll bar or tabbed pane (as tab scroller).

Parameters:
comp - The component to check
Returns:
true if the specified component is a button in a scroll control, false otherwise

isControlAlwaysPaintedActive

public static boolean isControlAlwaysPaintedActive(java.awt.Component comp)
Checks whether the specified control is always painted in currently active color (ignoring the transition states that normally result in default appearance).

Parameters:
comp - Control.
Returns:
true if the specified control is always painted in currently active color (ignoring the transition states that normally result in default appearance), false otherwise.

isControlAlwaysPaintedActive

public static boolean isControlAlwaysPaintedActive(java.awt.Component comp,
                                                   boolean checkHierarchy)
Checks whether the specified control is always painted in currently active color (ignoring the transition states that normally result in default appearance).

Parameters:
comp - Control.
checkHierarchy - If true, the entire component hierarchy will be scanned for the SubstanceLookAndFeel.PAINT_ACTIVE_PROPERTY.
Returns:
true if the specified control is always painted in currently active color (ignoring the transition states that normally result in default appearance), false otherwise.

isButtonNeverPainted

public static boolean isButtonNeverPainted(javax.swing.AbstractButton button)
Checks whether the specified button never paints its background.

Parameters:
button - Button.
Returns:
true if the specified button never paints its background, false otherwise.

getFocusKind

public static SubstanceConstants.FocusKind getFocusKind(java.awt.Component component)
Returns the focus ring kind of the specified component.

Parameters:
component - Component.
Returns:
The focus ring kind of the specified component.

getTabTextAlignmentKind

public static SubstanceConstants.TabTextAlignmentKind getTabTextAlignmentKind(javax.swing.JTabbedPane tabPane)
Returns the text alignment kind of the specified tabbed pane.

Parameters:
tabPane - Tabbed pane.
Returns:
The text alignment kind of the specified tabbed pane.

toDrawWatermark

public static boolean toDrawWatermark(java.awt.Component component)
Returns indication whether the watermark should be drawn on the specified component.

Parameters:
component - Component.
Returns:
true if the watermark should be drawn on the specified component, false otherwise.

toBleedWatermark

public static boolean toBleedWatermark(java.awt.Component component)
Returns indication whether the watermark should "bleed" through the specified component.

Parameters:
component - Component.
Returns:
true if the watermark should "bleed" through the specified component, false otherwise.

getButtonShaper

public static SubstanceButtonShaper getButtonShaper(java.awt.Component button)
Returns the button shaper of the specified button.

Parameters:
button - The button.
Returns:
The button shaper of the specified button.

getGradientPainter

public static SubstanceGradientPainter getGradientPainter(javax.swing.JComponent comp)
Returns the gradient painter of the specified component.

Parameters:
comp - Component.
Returns:
The gradient painter of the specified component.

isTabModified

public static boolean isTabModified(java.awt.Component tabComponent)
Retrieves the modified state for the specified component in a tabbed pane.

Parameters:
tabComponent - The associated tab component.
Returns:
true if the specified component in a tabbed pane is marked as modified, false otherwise.
See Also:
SubstanceLookAndFeel.WINDOW_MODIFIED

isRootPaneModified

public static boolean isRootPaneModified(javax.swing.JRootPane rootPane)
Retrieves the modified state for the specified root pane.

Parameters:
rootPane - The root pane.
Returns:
true if the specified root pane is marked as modified, false otherwise.
See Also:
SubstanceLookAndFeel.WINDOW_MODIFIED

isInternalFrameModified

public static boolean isInternalFrameModified(javax.swing.JInternalFrame internalFrame)
Retrieves the modified state for the specified internal frame.

Parameters:
internalFrame - The internal frame.
Returns:
true if the specified internal frame is marked as modified, false otherwise.
See Also:
SubstanceLookAndFeel.WINDOW_MODIFIED

getControlBackgroundComposite

public static ControlBackgroundComposite getControlBackgroundComposite(java.awt.Component component)
Returns the tab background composite of the specified tabbed pane.

Parameters:
component - Tabbed pane.
Returns:
Tab background composite of the specified tabbed pane.

hasCloseButton

public static boolean hasCloseButton(javax.swing.JTabbedPane tabbedPane,
                                     int tabIndex)
Checks whether the specified tab has a close button.

Parameters:
tabbedPane - Tabbed pane.
tabIndex - Tab index.
Returns:
true if the specified tab has a close button, false otherwise.

getCloseButtonSize

public static int getCloseButtonSize(javax.swing.JTabbedPane tabbedPane,
                                     int tabIndex)
Returns the size of the close button for a tab in the specified tabbed pane.

Parameters:
tabbedPane - Tabbed pane.
tabIndex - Tab index.
Returns:
The size of the close button for a tab in the specified tabbed pane.

toLayoutVertically

public static boolean toLayoutVertically(javax.swing.JTabbedPane tabbedPane)
Checks whether the specified tab should show vertically-aligned (rotated) components.

Parameters:
tabbedPane - Tabbed pane.
Returns:
true if the specified tab should show vertically-aligned (rotated) components, false otherwise.

toShowIconUnrotated

public static boolean toShowIconUnrotated(javax.swing.JTabbedPane tabbedPane,
                                          int tabIndex)
Checks whether the specified tab should show unrotated icon when the tab itself is layed-out vertically.

Parameters:
tabbedPane - Tabbed pane.
tabIndex - Tab index.
Returns:
true if the specified tab should show unrotated icon when the tab itself is layed-out vertically, false otherwise.

getContentBorderKind

public static SubstanceConstants.TabContentPaneBorderKind getContentBorderKind(javax.swing.JTabbedPane tabbedPane)
Returns the content border kind of the specified tabbed pane.

Parameters:
tabbedPane - Tabbed pane.
Returns:
Content border kind of the specified tabbed pane.

toAnimateCloseIconOfModifiedTab

public static boolean toAnimateCloseIconOfModifiedTab(javax.swing.JTabbedPane tabbedPane,
                                                      int tabIndex)
Checks whether the specified tab should show modified animation only on its close button.

Parameters:
tabbedPane - Tabbed pane.
tabIndex - Tab index.
Returns:
true if the specified tab should show modified animation only on its close button, false otherwise.

getBlankImage

public static java.awt.image.BufferedImage getBlankImage(int width,
                                                         int height)
Retrieves transparent image of specified dimension.

Parameters:
width - Image width.
height - Image height.
Returns:
Transparent image of specified dimension.

hasNoMinSizeProperty

public static boolean hasNoMinSizeProperty(javax.swing.AbstractButton button)
Checks whether the specified button should have minimal size.

Parameters:
button - Button.
Returns:
false if the specified button should have minimal size, true otherwise.

hasFlatAppearance

public static boolean hasFlatAppearance(java.awt.Component comp,
                                        boolean defaultValue)
Checks whether the specified component is flat.

Parameters:
comp - Component.
defaultValue - The value to return if there is no SubstanceLookAndFeel.FLAT_PROPERTY defined on button hierarchy or UIManager.
Returns:
false if the specified button is flat, true otherwise.

hasFlatAppearance

public static boolean hasFlatAppearance(javax.swing.AbstractButton button)
Computes whether the specified button has flat appearance.

Parameters:
button - Button.
Returns:
true if the button has flat appearance, false otherwise.

getPopupFlyoutOrientation

public static int getPopupFlyoutOrientation(javax.swing.JComboBox combobox)
Returns the popup flyout orientation for the specified combobox.

Parameters:
combobox - Combobox.
Returns:
The popup flyout orientation for the specified combobox.

makeNonOpaque

public static void makeNonOpaque(java.awt.Component comp,
                                 java.util.Map<java.awt.Component,java.lang.Boolean> opacitySnapshot)
Makes the specified component and all its descendants non-opaque.

Parameters:
comp - Component.
opacitySnapshot - The "snapshot" map that will contain the original opacity status of the specified component and all its descendants.

restoreOpaque

public static void restoreOpaque(java.awt.Component comp,
                                 java.util.Map<java.awt.Component,java.lang.Boolean> opacitySnapshot)
Restores the opacity of the specified component and all its descendants.

Parameters:
comp - Component.
opacitySnapshot - The "snapshot" map that contains the original opacity status of the specified component and all its descendants.

makeNonDoubleBuffered

public static void makeNonDoubleBuffered(java.awt.Component comp,
                                         java.util.Map<java.awt.Component,java.lang.Boolean> dbSnapshot)
Makes the specified component and all its descendants non-double buffered.

Parameters:
comp - Component.
dbSnapshot - The "snapshot" map that will contain the original double buffer status of the specified component and all its descendants.

restoreDoubleBuffered

public static void restoreDoubleBuffered(java.awt.Component comp,
                                         java.util.Map<java.awt.Component,java.lang.Boolean> dbSnapshot)
Restores the double buffer of the specified component and all its descendants.

Parameters:
comp - Component.
dbSnapshot - The "snapshot" map that contains the original double buffer status of the specified component and all its descendants.

createCompatibleImage

public static java.awt.image.BufferedImage createCompatibleImage(java.awt.image.BufferedImage image)
Creates a compatible image (for efficient processing and drawing).

Parameters:
image - The original image.
Returns:
Compatible version of the original image.

useThemedDefaultIcon

public static boolean useThemedDefaultIcon(javax.swing.JComponent comp)
Checks whether the specified component will show theme-colorized icon in the default state.

Parameters:
comp - Component.
Returns:
true if the specified component will show theme-colorized icon in the default state, false otherwise.

getTabCloseCallback

public static TabCloseCallback getTabCloseCallback(java.awt.event.MouseEvent me,
                                                   javax.swing.JTabbedPane tabbedPane,
                                                   int tabIndex)
Returns the callback to be called upon tab closing (using the tab close button).

Parameters:
me - Mouse event.
tabbedPane - Tabbed pane.
tabIndex - Tab index.
Returns:
Callback to be called upon tab closing (using the tab close button).

blendImagesHorizontal

public static java.awt.image.BufferedImage blendImagesHorizontal(java.awt.image.BufferedImage imageLeft,
                                                                 java.awt.image.BufferedImage imageRight,
                                                                 double start,
                                                                 double end)
Blends two images along X-axis.

Parameters:
imageLeft - The left image.
imageRight - The right image.
start - Relative start of the blend area (in 0.0-1.0 range).
end - Relative end of the blend area (in 0.0-1.0 range).
Returns:
Blended image.

blendImagesVertical

public static java.awt.image.BufferedImage blendImagesVertical(java.awt.image.BufferedImage imageTop,
                                                               java.awt.image.BufferedImage imageBottom,
                                                               double start,
                                                               double end)
Blends two images along Y-axis.

Parameters:
imageTop - The left image.
imageBottom - The right image.
start - Relative start of the blend area (in 0.0-1.0 range).
end - Relative end of the blend area (in 0.0-1.0 range).
Returns:
Blended image.

getSchemeId

public static java.lang.String getSchemeId(ColorScheme colorScheme)
Retruns the unique ID for the specified color scheme.

Parameters:
colorScheme - Color scheme.
Returns:
Unique ID for the specified color scheme.

getOptionPaneColorScheme

public static ColorScheme getOptionPaneColorScheme(int messageType,
                                                   ColorScheme mainScheme)
Returns the color scheme for the icon of option panes with the specified message type.

Parameters:
messageType - Option pane message type.
mainScheme - Main color scheme.
Returns:
Color scheme for the icon of option panes with the specified message type.

isThemeDark

public static boolean isThemeDark(SubstanceTheme theme)
Checks whether the specified theme is dark.

Parameters:
theme - Theme.
Returns:
true if the specified theme is dark, false otherwise.

getComboPopupPrototypeDisplayValue

public static java.lang.Object getComboPopupPrototypeDisplayValue(javax.swing.JComboBox combo)
Returns the popup prototype display value for the specified combo box. This value is used to compute the width of the combo popup.

Parameters:
combo - Combo box.
Returns:
The popup prototype display value for the specified combo box.

getScrollPaneButtonsPolicyKind

public static SubstanceConstants.ScrollPaneButtonPolicyKind getScrollPaneButtonsPolicyKind(javax.swing.JScrollBar scrollBar)
Returns the scroll bar buttons kind of the specified scroll bar.

Parameters:
scrollBar - Scroll bar.
Returns:
The scroll bar buttons kind of the specified scroll bar.

getSides

public static java.util.Set<SubstanceConstants.Side> getSides(javax.swing.AbstractButton button,
                                                              java.lang.String propertyName)
Returns the set of sides registered on the specified button.

Parameters:
button - Button.
propertyName - Client property name for retrieving the registered sides.
Returns:
Set of sides registered on the specified button.

getToolbarButtonCornerRadius

public static float getToolbarButtonCornerRadius(javax.swing.AbstractButton button,
                                                 java.awt.Insets insets)
Returns the corner radius of the specified toolbar button.

Parameters:
button - Toolbar button.
insets - Button insets.
Returns:
Corner radius of the specified toolbar button.

getEchoPerChar

public static int getEchoPerChar(javax.swing.JPasswordField jpf)
Returns the number of echo characters per each password chanaracter.

Parameters:
jpf - Password field.
Returns:
The number of echo characters per each password chanaracter.

createClipImage

public static java.awt.image.BufferedImage createClipImage(java.awt.Shape s,
                                                           int width,
                                                           int height)
Creates a clip image for soft-clipping. Code taken from here.

Parameters:
s - Clip shape.
width - Image width.
height - Image height.
Returns:
Clip image.

getMarkColor

public static java.awt.Color getMarkColor(SubstanceTheme theme,
                                          boolean isEnabled)
Returns the color of mark icons (checkbox, radio button, scrollbar arrows, combo arrows, menu arrows etc) for the specified theme.

Parameters:
theme - Theme.
isEnabled - If true, the mark should be painted in enabled state.
Returns:
Color of mark icons.

hasOverlayProperty

public static boolean hasOverlayProperty(java.awt.Component component)
Checks whether the specified component has overlay enabled.

Parameters:
component - Component.
Returns:
true if the specified component has overlay enabled, false otherwise.

toShowExtraElements

public static boolean toShowExtraElements(java.awt.Component component)
Checks whether the specified component has extra Substance-specific UI elements.

Parameters:
component - Component.
Returns:
true if the specified component has extra Substance-specific UI elements, false otherwise.

hasSubstanceBorder

public static boolean hasSubstanceBorder(javax.swing.JComponent c)
Returns indication whether the specified component's border is a Substance-specific border.

Parameters:
c - Component.
Returns:
true if the specified component's border is a Substance-specific border, false otherwise.

getActiveIcon

public static javax.swing.Icon getActiveIcon(javax.swing.Icon origIcon,
                                             javax.swing.JComponent comp,
                                             javax.swing.ButtonModel model,
                                             javax.swing.Icon glowingIcon,
                                             boolean ignoreRolloverSetting)

getIcon

public static javax.swing.Icon getIcon(javax.swing.AbstractButton b,
                                       javax.swing.Icon defaultIcon,
                                       javax.swing.Icon glowingIcon,
                                       boolean ignoreRolloverSetting)
Returns the current icon for the specified button. This method is for internal use only.

Parameters:
b - Button.
glowingIcon - The glowing icon.
ignoreRolloverSetting - If true, the rollover status of the specified button is ignored.
Returns:
Icon for the specified button.

getMenuGutterFillKind

public static SubstanceConstants.MenuGutterFillKind getMenuGutterFillKind()
Returns the global menu gutter fill kind.

Returns:
The global menu gutter fill kind.

getHeaderParent

public static java.awt.Container getHeaderParent(java.awt.Component c)
Given a component, returns the parent for computing the SubstanceDecorationPainter.

Parameters:
c - Component.
Returns:
The parent for computing the SubstanceDecorationPainter.

paintText

public static float paintText(javax.swing.AbstractButton button,
                              java.awt.Rectangle textRect,
                              java.lang.String text,
                              int mnemonicIndex)
Paints the text.

Parameters:
button - Button
textRect - Text rectangle
text - Text to paint
mnemonicIndex - Mnemonic index.
Returns:
Text alpha channel.

paintText

public static float paintText(javax.swing.JComponent component,
                              java.awt.Rectangle textRect,
                              java.lang.String text,
                              int mnemonicIndex,
                              ComponentState state,
                              ComponentState prevState)

getForegroundColor

public static java.awt.Color getForegroundColor(java.awt.Component component,
                                                ComponentState state,
                                                ComponentState prevState)

getForegroundColor

public static java.awt.Color getForegroundColor(javax.swing.JTabbedPane tabPane,
                                                int tabIndex,
                                                ComponentState state,
                                                ComponentState prevState)

paintFocus

public static void paintFocus(java.awt.Graphics g,
                              java.awt.Component mainComp,
                              java.awt.Component focusedComp,
                              java.awt.Shape focusShape,
                              java.awt.Rectangle textRect,
                              float maxAlphaCoef,
                              int extraPadding)
Paints the focus ring on the specified component.

Parameters:
g - Graphics context.
mainComp - The main component for the focus painting.
focusedComp - The actual component that has the focus. For example, the main component can be a JSpinner, while the focused component is a text field inside the the spinner editor.
focusShape - Focus shape. May be null - in this case, the bounds of mainComp will be used.
textRect - Text rectangle (if relevant).
maxAlphaCoef - Maximum alhpa coefficient for painting the focus. Values lower than 1.0 will result in a translucent focus ring (can be used to paint a focus ring that doesn't draw too much attention away from the content, for example on text components).
extraPadding - Extra padding between the component bounds and the focus ring painting.

paintFocus

public static void paintFocus(java.awt.Graphics g,
                              java.awt.Component mainComp,
                              java.awt.Component focusedComp,
                              java.awt.Rectangle textRect)
Paints the focus ring on the specified component.

Parameters:
g - Graphics context.
mainComp - The main component for the focus painting.
focusedComp - The actual component that has the focus. For example, the main component can be a JSpinner, while the focused component is a text field inside the the spinner editor.
textRect - Text rectangle (if relevant).

paintSeparator

public static void paintSeparator(java.awt.Component c,
                                  java.awt.Graphics2D graphics,
                                  ColorScheme colorScheme,
                                  boolean isDark,
                                  int width,
                                  int height,
                                  int orientation)
Paints a separator.

Parameters:
c - Component.
graphics - Graphics context.
colorScheme - Color scheme.
isDark - Indication whether the color scheme is dark.
width - Separator width.
height - Separator height.
orientation - Separator orientation.

paintSeparator

public static void paintSeparator(java.awt.Component c,
                                  java.awt.Graphics2D graphics,
                                  ColorScheme colorScheme,
                                  boolean isDark,
                                  int width,
                                  int height,
                                  int orientation,
                                  boolean hasShadow,
                                  int maxGradLength)
Paints a separator.

Parameters:
c - Component.
graphics - Graphics context.
colorScheme - Color scheme.
isDark - Indication whether the color scheme is dark.
width - Separator width.
height - Separator height.
orientation - Separator orientation.
hasShadow - If true, the separator painting will have shadow.
maxGradLength - Specifies the maximum pixel length of "ramp" portions of the separator. The ramp portions are located on separator ends and allow providing a faded appearance on those ends.

paintSeparator

public static void paintSeparator(java.awt.Component c,
                                  java.awt.Graphics2D graphics,
                                  ColorScheme colorScheme,
                                  boolean isDark,
                                  int width,
                                  int height,
                                  int orientation,
                                  boolean hasShadow,
                                  int maxGradLengthStart,
                                  int maxGradLengthEnd)
Paints a separator.

Parameters:
c - Component.
graphics - Graphics context.
colorScheme - Color scheme.
isDark - Indication whether the color scheme is dark.
width - Separator width.
height - Separator height.
orientation - Separator orientation.
hasShadow - If true, the separator painting will have shadow.
maxGradLengthStart - Specifies the maximum pixel length of the starting "ramp" portion of the separator. The starting ramp portion is located on top / left separator end and allows providing a faded appearance on that end.
maxGradLengthEnd - Specifies the maximum pixel length of the ending "ramp" portion of the separator. The ending ramp portion is located on bottom / right separator end and allows providing a faded appearance on that end.

isTitleCloseButton

public static boolean isTitleCloseButton(javax.swing.AbstractButton ab)
Returns indication whether the specified button is a close button on some title pane.

Parameters:
ab - Button.
Returns:
true if the specified button is a close button on some title pane, false otherwise.

uninstallMenu

public static void uninstallMenu(javax.swing.JMenuItem menuItem)
Uninstalls the specified menu item.

Parameters:
menuItem - Menu item.

getIcon

public static javax.swing.Icon getIcon(java.lang.String iconResource)
Returns an icon pointed to by the specified string.

Parameters:
iconResource - Resource location string.
Returns:
Icon.

getClassLoaderForResources

public static java.lang.ClassLoader getClassLoaderForResources()

getFadeCallback

public static org.jvnet.lafwidget.animation.FadeTrackerCallback getFadeCallback(javax.swing.AbstractButton button,
                                                                                boolean toRepaintParent)
Returns the fade callback for the specified button.

Parameters:
button - Button.
Returns:
Fade callback for the specified button.

getFadeCallback

public static org.jvnet.lafwidget.animation.FadeTrackerCallback getFadeCallback(javax.swing.JComponent component,
                                                                                javax.swing.ButtonModel model,
                                                                                boolean toIgnoreSelection,
                                                                                boolean toRepaintParent,
                                                                                java.awt.Component componentToRepaint)
Returns the fade callback for the specified component.

Parameters:
component - Component.
model - Model for tracking the transitions. For button components, pass the AbstractButton.getModel(), for other controls pass a dummy (synthesized) model.
toIgnoreSelection - If true, the ButtonModel.isSelected() will not be checked. This can be used for tracking transitions on menu items that use armed state instead, when we don't want to use different rollover themes for selected and unselected checkbox and radio button menu items (to preserve consistent visual appearence of highlights).
Returns:
Fade callback for the specified component.

getPopupParentIndexOf

public static int getPopupParentIndexOf(java.awt.Component comp,
                                        java.awt.Component[] popups)

getPrevComponentState

public static ComponentState getPrevComponentState(javax.swing.JComponent comp)
Returns the previous state of the specified component.

Parameters:
comp - Component.
Returns:
The previous state of the specified component.

getPrevSelComponentState

public static ComponentState getPrevSelComponentState(javax.swing.JComponent comp)
Returns the previous state of the specified component.

Parameters:
comp - Component.
Returns:
The previous state of the specified component.

hasPropertySetTo

public static boolean hasPropertySetTo(java.awt.Component comp,
                                       java.lang.String propertyName,
                                       boolean expectedValue,
                                       boolean checkHierarchy)
Checks whether a component has the specified client property set to the specified value.

Parameters:
comp - Component.
propertyName - Client property name.
expectedValue - Expected value.
checkHierarchy - if true, the entire component hierarchy is traversed.
Returns:
true if the component has the specified client property set to the specified value, false otherwise.

getResourceBundle

public static java.util.ResourceBundle getResourceBundle(javax.swing.JComponent jcomp)
Returns the resource bundle for the specified component.

Parameters:
jcomp - Component.
Returns:
Resource bundle for the specified component.

getBorderPainter

public static SubstanceBorderPainter getBorderPainter(java.awt.Component comp)
Returns the border painter for the specified component.

Parameters:
comp - Component.
Returns:
Border painter for the specified component.

resetMenuBars

public static void resetMenuBars(java.awt.Component component)
Resets the menu bars on the specified component.

Parameters:
component - Component.

getInterpolatedForegroundColor

public static java.awt.Color getInterpolatedForegroundColor(java.awt.Component comp,
                                                            java.lang.Comparable<?> componentId,
                                                            SubstanceTheme theme,
                                                            ComponentState state,
                                                            ComponentState prevState,
                                                            org.jvnet.lafwidget.animation.FadeKind... kinds)
Returns the foreground color for the specified component.

Parameters:
comp - Component.
componentId - Optional component ID. Can be used to differentiate sub-parts of the component, such as tabs in tabbed pane, cells in list etc.
theme - Component theme.
state - Component current state.
prevState - Component previous state.
kinds - Animation kinds to consult for computing the foreground color.
Returns:
Foreground color.

paintTextWithDropShadow

public static void paintTextWithDropShadow(javax.swing.JComponent c,
                                           java.awt.Graphics g,
                                           java.awt.Color foregroundColor,
                                           java.lang.String text,
                                           int width,
                                           int height,
                                           int xOffset,
                                           int yOffset)
Paints text with drop shadow.

Parameters:
c - Component.
g - Graphics context.
foregroundColor - Foreground color.
text - Text to paint.
width - Text rectangle width.
height - Text rectangle height.
xOffset - Text rectangle X offset.
yOffset - Text rectangle Y offset.

workaroundBug6576507

public static void workaroundBug6576507(java.awt.Graphics graphics)
Provides workaround for bug 6576507. This is especially relevant for skins that use translucent themes, such as AutumnSkin and MagmaSkin.

Parameters:
graphics - Graphics context.

getHierarchy

public static java.lang.String getHierarchy(java.awt.Component comp)
Returns the component hierarchy.

Parameters:
comp - Component.
Returns:
Component hierarchy string.

getHierarchy

public static void getHierarchy(java.awt.Component comp,
                                java.lang.StringBuffer buffer,
                                int level)
Computes the component hierarchy.

Parameters:
comp - Component.
buffer - Hierarchy representation buffer.
level - Hierarchy level.

getTitlePane

public static javax.swing.JComponent getTitlePane(javax.swing.JRootPane rootPane)
Returns the title pane of the specified root pane.

Parameters:
rootPane - Root pane.
Returns:
The title pane of the specified root pane.

resetCaches

public static void resetCaches()

getArrowIcon

public static javax.swing.Icon getArrowIcon(java.awt.Component comp,
                                            javax.swing.AbstractButton button,
                                            int orientation)
Returns the arrow icon.

Parameters:
comp - Component.
button - Button.
orientation - Arrow orientation.
Returns:
Arrow icon.

getDoubleArrowIcon

public static javax.swing.Icon getDoubleArrowIcon(java.awt.Component comp,
                                                  javax.swing.AbstractButton button,
                                                  int orientation)
Returns the arrow icon.

Parameters:
comp - Component.
button - Button.
orientation - Arrow orientation.
Returns:
Arrow icon.

getColorizationFactor

public static double getColorizationFactor(java.awt.Component c)

hasColorization

public static boolean hasColorization(java.awt.Component c)

getBackgroundFillColor

public static java.awt.Color getBackgroundFillColor(java.awt.Component component)

getDefaultBackgroundColor

public static javax.swing.plaf.ColorUIResource getDefaultBackgroundColor(java.lang.Class componentClass,
                                                                         SubstanceTheme componentTheme)

getStripedBackground

public static java.awt.Color getStripedBackground(javax.swing.JComponent component,
                                                  int index)

applyStripedBackground

public static void applyStripedBackground(javax.swing.JComponent component,
                                          int index,
                                          javax.swing.JComponent renderer)

paintTextCompBackground

public static void paintTextCompBackground(java.awt.Graphics g,
                                           javax.swing.JComponent comp)

paintTextCompBackground

public static void paintTextCompBackground(java.awt.Graphics g,
                                           javax.swing.JComponent comp,
                                           java.awt.Color backgr,
                                           boolean toOverlayWatermark)

getSpecialBackgroundFillContainer

public static java.awt.Container getSpecialBackgroundFillContainer(javax.swing.JComponent comp)

paintTextComponent

public static void paintTextComponent(java.awt.Graphics g,
                                      javax.swing.text.JTextComponent textComponent,
                                      javax.swing.text.View rootView,
                                      java.awt.Rectangle visibleEditorRect)