org.jvnet.substance
Class SubstanceLookAndFeel

java.lang.Object
  extended by javax.swing.LookAndFeel
      extended by javax.swing.plaf.basic.BasicLookAndFeel
          extended by org.jvnet.substance.SubstanceLookAndFeel
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
SubstanceAutumnLookAndFeel, SubstanceBusinessBlackSteelLookAndFeel, SubstanceBusinessBlueSteelLookAndFeel, SubstanceBusinessLookAndFeel, SubstanceChallengerDeepLookAndFeel, SubstanceCremeCoffeeLookAndFeel, SubstanceCremeLookAndFeel, SubstanceDefaultLookAndFeel, SubstanceEmeraldDuskLookAndFeel, SubstanceFieldOfWheatLookAndFeel, SubstanceGreenMagicLookAndFeel, SubstanceMagmaLookAndFeel, SubstanceMangoLookAndFeel, SubstanceMistAquaLookAndFeel, SubstanceMistSilverLookAndFeel, SubstanceModerateLookAndFeel, SubstanceNebulaBrickWallLookAndFeel, SubstanceNebulaLookAndFeel, SubstanceOfficeBlue2007LookAndFeel, SubstanceOfficeSilver2007LookAndFeel, SubstanceRavenGraphiteGlassLookAndFeel, SubstanceRavenGraphiteLookAndFeel, SubstanceRavenLookAndFeel, SubstanceSaharaLookAndFeel

public class SubstanceLookAndFeel
extends javax.swing.plaf.basic.BasicLookAndFeel

Main class for Substance look and feel. All static methods in this class should be called when Substance is the currently set look and feel.

Since version 3.1, Substance no longer extends Metal. As before, this is an implementation detail and not part of an official API.

Author:
Kirill Grouchnikov
See Also:
Serialized Form

Field Summary
static java.lang.String BACKGROUND_COMPOSITE
          Client property name for specifying the background composite for various translucency effects.
protected static java.util.Map<java.lang.Class<?>,ControlBackgroundComposite> backgroundComposites
          Contains default background composites on per-class basis.
static org.jvnet.lafwidget.animation.FadeKind BORDER_ANIMATION_KIND
          Fade kind for border animations.
static java.lang.String BORDER_PAINTER_PROPERTY
          Property name for specifying border painter.
protected static java.util.Set<BorderPainterChangeListener> borderPainterChangeListeners
          List of all listeners on border painter changes.
protected static org.jvnet.lafplugin.PluginManager borderPainterPlugins
          Plugin manager for border painter plugins.
static java.lang.String BUTTON_NO_MIN_SIZE_PROPERTY
          Client property name for ignoring default (minimum) dimension for a single button.
static java.lang.String BUTTON_OPEN_SIDE_PROPERTY
          Client property name for specifying an open side for a single button.
static java.lang.String BUTTON_PAINT_NEVER_PROPERTY
          Client property name for specifying that a single button / all application buttons should never paint the background.
static java.lang.String BUTTON_SHAPER_PROPERTY
          Property name for specifying button shaper.
static java.lang.String BUTTON_SIDE_PROPERTY
          Client property name for specifying a straight side for a single button.
protected static java.util.Set<ButtonShaperChangeListener> buttonShaperChangeListeners
          List of all listeners on button shaper changes.
static java.lang.String COMBO_BOX_POPUP_FLYOUT_ORIENTATION
          Client property name for specifying combo popup flyout orientation.
static java.lang.String COMBO_POPUP_PROTOTYPE
          Property name for specifying the combobox popup prototype display value which is used to compute the width of the popup at runtime.
protected static org.jvnet.lafplugin.ComponentPluginManager componentPlugins
          Plugin manager for component plugins.
static java.lang.String CONFIG_FILE
          VM property name for the configuration file.
static java.lang.String CORNER_RADIUS
          Client property name for specifying the corner radius for buttons.
protected  java.awt.KeyboardFocusManager currentKeyboardFocusManager
          The current keyboard focus manager - fix for defect 208.
static java.lang.String DEBUG_UI_MODE
          Property name for specifying the debug UI mode.
static java.lang.String ENABLE_INVERTED_THEMES
          Property name for enabling inverted themes.
static java.lang.String ENABLE_NEGATED_THEMES
          Property name for enabling negated themes.
static java.lang.String FLAT_PROPERTY
          Property name for specifying that the component should be painted flat (no background / border) when it's inactive.
static java.lang.String FOCUS_KIND
          Client property name for specifying the kind of focus indication on buttons, check boxes and radio buttons.
protected  java.beans.PropertyChangeListener focusOwnerChangeListener
          Change listener on keyboard focus manager - fix for defect 208.
static java.lang.String GRADIENT_PAINTER_PROPERTY
          Property name for specifying gradient painter.
protected static java.util.Set<GradientPainterChangeListener> gradientPainterChangeListeners
          List of all listeners on gradient painter changes.
static java.lang.String GRIP_PAINTER
          Property name for specifying custom grip handles.
static java.lang.String HEAP_STATUS_PANEL
          Property name for specifying that custom frame title panes should show the heap status panel.
protected static java.util.Set<java.lang.String> ignoreAnimationsSet
          Contains a list of all control class names that should ignore the animations.
protected static boolean isDebugUiMode
          Indicates whether the application will be run in debug UI mode
protected static java.util.Set<LocaleChangeListener> localeChangeListeners
          List of all listeners on closing tabs.
static java.lang.String MENU_GUTTER_FILL_KIND
          Property name for specifying menu gutter fill kind.
protected static java.util.Map<java.lang.String,SubstanceMixTheme> mixedThemes
          List of all globally registered mixed themes.
static java.lang.String NO_EXTRA_ELEMENTS
          Property name for specifying that no extra UI elements (such as menu items in system menu or menu search panel) should be shown.
static java.lang.String OVERLAY_PROPERTY
          Client property name for specifying that a single control / all application controls have overlay functionality.
static java.lang.String PAINT_ACTIVE_PROPERTY
          Client property name for specifying that a single control / all application controls should always be painted in active color (unless a control is disabled).
protected static org.jvnet.lafplugin.PluginManager painterPlugins
          Plugin manager for gradient painter plugins.
protected static ParamReader paramReader
          The parameter reader.
static java.lang.String PASSWORD_ECHO_PER_CHAR
          Client property name for specifying the number of echo characters for each password character.
static java.lang.String PLUGIN_XML
          The name of plugin configuration XML resource name.
static java.lang.String SCROLL_PANE_BUTTONS_POLICY
          Client property name for specifying scroll pane button policy.
protected static org.jvnet.lafplugin.PluginManager shaperPlugins
          Plugin manager for button shaper plugins.
protected static java.util.Set<SkinChangeListener> skinChangeListeners
          List of all listeners on skin changes.
protected static org.jvnet.lafplugin.PluginManager skinPlugins
          Plugin manager for skin plugins.
protected static java.lang.String SUBSTANCE_FONT_POLICY_KEY
          Internal client property name for storing application-specific font policy.
static java.lang.String TABBED_PANE_CLOSE_BUTTONS_MODIFIED_ANIMATION
          Client property name for specifying that only the close button of a marked-as-modified tab component should pulsate.
static java.lang.String TABBED_PANE_CLOSE_BUTTONS_PROPERTY
          Client property name for specifying that a single tab / all tabs of a single tabbed pane / all tabs of all tabbed panes should have close buttons.
static java.lang.String TABBED_PANE_CLOSE_CALLBACK
          Client property name for specifying the callback for deciding on the tab close type.
static java.lang.String TABBED_PANE_CONTENT_BORDER_KIND
          Client property name for specifying the content pane border kind.
static java.lang.String TABBED_PANE_TEXT_ALIGNMENT_KIND
          Client property name for specifying the text alignment kind for on SwingConstants.LEFT and SwingConstants.RIGHT tab placements.
static java.lang.String TABBED_PANE_VERTICAL_ORIENTATION
          Client property name for specifying that a single tabbed pane / all tabbed panes should have vertical layout (rotated tabs) on SwingConstants.LEFT and SwingConstants.RIGHT tab placements.
static java.lang.String TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS
          Client property name for specifying that when a single tabbed pane / all tabbed panes is layed-out vertically, the tab icons remain unrotated.This property can be specified on a single tab component, on a JTabbedPane itself (will hold for all tab components that don't define this property) or on UIManager.
static java.lang.String THEME_PROPERTY
          Property name for setting theme.
protected static java.util.Set<ThemeChangeListener> themeChangeListeners
          List of all listeners on theme changes.
protected static org.jvnet.lafplugin.PluginManager themePlugins
          Plugin manager for theme plugins.
static java.lang.String TITLE_PAINTER_PROPERTY
          Property name for specifying title painter.
protected static java.util.Set<TitlePainterChangeListener> titlePainterChangeListeners
          List of all listeners on title painter changes.
protected static org.jvnet.lafplugin.PluginManager titlePainterPlugins
          Plugin manager for title painter plugins.
protected static boolean toBleedWatermark
          Indicates whether the watermark should "bleed" through lists, tables and trees.
protected static boolean toEnableInvertedThemes
          Indicates whether inverted themes should be enabled.
protected static boolean toEnableNegatedThemes
          Indicates whether inverted themes should be enabled.
protected static boolean toShowExtraElements
          Indicates whether extra UI elements (such as menu items in system menu or menu search panel) should be shown.
protected static boolean toUseConstantThemesOnDialogs
          Indicates whether option dialogs (error, question, warning, info) should use constant themes for icon coloring.
static java.lang.String TRACE_FILE
          VM property name for specifying the trace file.
static org.jvnet.lafwidget.animation.FadeKind TREE_DECORATIONS_ANIMATION_KIND
           Fade kind for tree decorations animation kind.
static org.jvnet.lafwidget.animation.FadeKind TREE_SMART_SCROLL_ANIMATION_KIND
          Fade kind for smart tree scroll.
static java.lang.String USE_THEMED_DEFAULT_ICONS
           Client property name for specifying that icons on buttons and toggle buttons should match the color of the current theme when they are in default state.
static java.lang.String WATERMARK_IGNORE
          Client property name for requesting that watermark should not be painted on the component and its descendants.
static java.lang.String WATERMARK_IMAGE_KIND
          VM property for specifying the image watermark kind.
static java.lang.String WATERMARK_IMAGE_OPACITY
          VM property for specifying the image watermark opacity.
static java.lang.String WATERMARK_IMAGE_PROPERTY
          Property name for setting SubstanceImageWatermark watermark image.
static java.lang.String WATERMARK_PROPERTY
          Property name for setting watermark.
static java.lang.String WATERMARK_TO_BLEED
          Property name for requesting that watermark should bleed through lists, trees and tables.
protected static java.util.Set<WatermarkChangeListener> watermarkChangeListeners
          List of all listeners on watermark changes.
protected static org.jvnet.lafplugin.PluginManager watermarkPlugins
          Plugin manager for watermark plugins.
static java.lang.String WINDOW_MODIFIED
          Client property name for specifying that contents of some frame, dialog, internal frame, desktop icon or tab have been modified and not saved.
 
Constructor Summary
SubstanceLookAndFeel()
          Creates new instance of Substance look and feel.
 
Method Summary
static void addMixedTheme(SubstanceMixTheme mixedTheme)
          Globally registers a new mixed theme.
static void addMixedTheme(SubstanceTheme... themes)
          Globally registers a new mixed theme.
static void addMixedThemeBy(SubstanceTheme mainTheme)
          Globally registers a collection of mixed themes such as: The specified theme is the main theme for a new mixed theme. The secondary theme is of the same kind.
static ColorScheme getActiveColorScheme()
          Returns the current color scheme for components in active visual state.
static java.util.Map<java.lang.String,BorderPainterInfo> getAllBorderPainters()
          Returns all available border painters.
static java.util.Map<java.lang.String,ButtonShaperInfo> getAllButtonShapers()
          Returns all available button shapers.
static java.util.Map<java.lang.String,GradientPainterInfo> getAllGradientPainters()
          Returns all available gradient painters.
static java.util.Map<java.lang.String,SkinInfo> getAllSkins()
          Returns all available skins.
static java.util.Set<BaseTabCloseListener> getAllTabCloseListeners()
          Returns the set of all listeners registered on tab-close events on all tabbed panes.
static java.util.Set<BaseTabCloseListener> getAllTabCloseListeners(javax.swing.JTabbedPane tabbedPane)
          Returns all listeners registered on tab closing of the specified tabbed pane.
static java.util.Map<java.lang.String,ThemeInfo> getAllThemes()
          Returns all available themes.
static java.util.Map<java.lang.String,TitlePainterInfo> getAllTitlePainters()
          Returns all available title painters.
static java.util.Map<java.lang.String,WatermarkInfo> getAllWatermarks()
          Returns all available watermarks.
static ControlBackgroundComposite getBackgroundComposite(java.awt.Component component)
          Returns the default background composite for the specified component.
static SubstanceBorderPainter getCurrentBorderPainter()
          Returns the current Border painter.
static java.lang.String getCurrentBorderPainterName()
          Returns the current border painter name.
static SubstanceButtonShaper getCurrentButtonShaper()
          Returns the current button shaper.
static java.lang.String getCurrentButtonShaperName()
          Returns the current button shaper name.
static SubstanceGradientPainter getCurrentGradientPainter()
          Returns the current gradient painter.
static java.lang.String getCurrentGradientPainterName()
          Returns the current gradient painter name.
static java.lang.String getCurrentThemeName()
          Returns the current color theme name.
static SubstanceTitlePainter getCurrentTitlePainter()
          Returns the current title painter.
static java.lang.String getCurrentTitlePainterName()
          Returns the current title painter name.
static SubstanceWatermark getCurrentWatermark()
          Returns the current watermark.
static java.lang.String getCurrentWatermarkName()
          Returns the current watermark name.
static ColorScheme getDefaultColorScheme()
          Returns the current color scheme for components in default visual state.
 javax.swing.UIDefaults getDefaults()
           
 java.lang.String getDescription()
           
static ColorScheme getDisabledColorScheme()
          Returns the current color scheme for components in disabled visual state.
static FontPolicy getFontPolicy()
          Looks up and retrieves the FontPolicy used by the Substance family.
 java.lang.String getID()
           
static SubstanceConstants.ImageWatermarkKind getImageWatermarkKind()
          Returns the global kind for image-based watermarks.
static float getImageWatermarkOpacity()
          Returns the global opacity for image-based watermarks.
static java.util.ResourceBundle getLabelBundle()
          Retrieves the current label bundle.
static java.util.ResourceBundle getLabelBundle(java.util.Locale locale)
          Retrieves the label bundle for the specified locale.
static java.util.Set<LocaleChangeListener> getLocaleListeners()
          Returns all listeners registered on locale change.
 java.lang.String getName()
           
static ParamReader getParamReader()
          Returns the parameter reader.
static java.util.Set getPlugins()
          Returns all available plugins.
 boolean getSupportsWindowDecorations()
           
static SubstanceTheme getTheme()
          Returns the current theme.
static javax.swing.JComponent getTitlePaneComponent(java.awt.Window window)
          Returns the title pane of the specified top-level window.
static boolean hasMixedThemes()
          Checks whether there are any mixed themes registered globally.
static void hideMenuSearchPanels()
          Hides menu search panels on all open frames.
static void ignoreAnimationsOnClass(java.lang.Class<?> componentClazz)
          Requests that animations be ignored on all instances of the specified class.
static void ignoreAnimationsOnClass(java.lang.String componentClazzName)
          Requests that animations be ignored on all instances of the specified class.
protected  void initClassDefaults(javax.swing.UIDefaults table)
           
protected  void initComponentDefaults(javax.swing.UIDefaults table)
           
 void initialize()
           
static boolean isDebugUiMode()
          Returns indication whether the application is in debug UI mode.
 boolean isNativeLookAndFeel()
           
 boolean isSupportedLookAndFeel()
           
static boolean isToUseConstantThemesOnDialogs()
          Checks whether the JOptionPanes created with predefined message types should use constant themes for the icons.
static void permanentlyHideHeapStatusPanel(javax.swing.JRootPane pane)
          Makes the heap status panels disappear permanently on the specified title pane and removes the corresponding check box menu items from the system menu.
static void permanentlyShowHeapStatusPanel(javax.swing.JRootPane pane)
          Makes the heap status panels appear permanently on the specified title pane and removes the corresponding check box menu items from the system menu.
static void registerBorderPainterChangeListener(BorderPainterChangeListener borderPainterChangeListener)
          Registers a new listener on border painter change.
static void registerButtonShaperChangeListener(ButtonShaperChangeListener buttonShaperChangeListener)
          Registers a new listener on button shaper change.
static void registerGradientPainterChangeListener(GradientPainterChangeListener gradientPainterChangeListener)
          Registers a new listener on gradient painter change.
static void registerLocaleChangeListener(LocaleChangeListener localeListener)
          Registers a new listener on locale change.
static void registerSkinChangeListener(SkinChangeListener skinChangeListener)
          Registers a new listener on skin change.
static void registerTabCloseChangeListener(BaseTabCloseListener tabCloseListener)
          Registers the specified listener on tab-close events on all tabbed panes.
static void registerTabCloseChangeListener(javax.swing.JTabbedPane tabbedPane, BaseTabCloseListener tabCloseListener)
          Registers the specified listener on tab-close events on the specified tabbed pane.
static void registerThemeChangeListener(ThemeChangeListener themeChangeListener)
          Registers a new listener on theme change.
static void registerTitlePainterChangeListener(TitlePainterChangeListener titlePainterChangeListener)
          Registers a new listener on title painter change.
static void registerWatermarkChangeListener(WatermarkChangeListener watermarkChangeListener)
          Registers a new listener on watermark change.
static void removeMixedTheme(SubstanceMixTheme mixedTheme)
          Globally unregisters the specified mixed theme.
static void removeMixedThemeBy(SubstanceTheme mainTheme)
          Globally unregisters a collection of mixed themes such that the specified theme is the main theme.
static void resetLabelBundle()
          Resets the current label bundle.
static void setBackgroundComposite(java.lang.Class<?> clazz, ControlBackgroundComposite composite)
          Specifies that a control of some class should use the specified background composite when it (the control) doesn't define the BACKGROUND_COMPOSITE client property.
static boolean setCurrentBorderPainter(java.lang.String borderPainterClassName)
          Sets new border painter.
static boolean setCurrentBorderPainter(SubstanceBorderPainter currentBorderPainter)
          Sets new border painter.
static boolean setCurrentButtonShaper(java.lang.String buttonShaperClassName)
          Sets new button shaper.
static boolean setCurrentButtonShaper(SubstanceButtonShaper currentButtonShaper)
          Sets new button shaper.
static boolean setCurrentGradientPainter(java.lang.String gradientPainterClassName)
          Sets new gradient painter.
static boolean setCurrentGradientPainter(SubstanceGradientPainter currentGradientPainter)
          Sets new gradient painter.
static boolean setCurrentTheme(java.lang.String themeClassName)
          Sets new theme.
static boolean setCurrentTheme(SubstanceTheme theme)
          Sets new theme.
static boolean setCurrentTheme(ThemeInfo themeInfo)
          Sets new theme.
static boolean setCurrentTitlePainter(java.lang.String titlePainterClassName)
          Sets new title painter.
static boolean setCurrentTitlePainter(SubstanceTitlePainter currentTitlePainter)
          Sets new title painter.
static boolean setCurrentWatermark(java.lang.String watermarkClassName)
          Sets new watermark.
static boolean setCurrentWatermark(SubstanceWatermark currentWatermark)
          Sets new watermark.
static void setFontPolicy(FontPolicy fontPolicy)
          Sets the FontPolicy to be used with Substance family.
static void setImageWatermarkKind(SubstanceConstants.ImageWatermarkKind kind)
          Sets the global kind for image-based watermarks.
static void setImageWatermarkOpacity(float opacity)
          Sets the global opacity for image-based watermarks.
static void setLabelBundleClassLoader(java.lang.ClassLoader labelBundleClassLoader)
          Sets the class loader for LABEL_BUNDLE.
static boolean setSkin(java.lang.String skinClassName)
          Sets the specified skin.
static boolean setSkin(SubstanceSkin skin)
          Sets the specified skin.
static void setToUseConstantThemesOnDialogs(boolean toUseConstantThemesOnDialogs)
          Sets the new setting for the icons of the JOptionPanes created with predefined message types.
static void showMenuSearchPanels()
          Shows menu search panels on all open frames.
static void stopThreads()
          Stops all Substance threads.
static boolean toBleedWatermark()
          Returns indication whether the watermark should "bleed" through list, table and tree renderers (where possible).
static boolean toEnableInvertedThemes()
          Returns indication whether inverted themes should be enabled.
static boolean toEnableNegatedThemes()
          Returns indication whether negated themes should be enabled.
static boolean toIgnoreAnimation(java.lang.Class<?> componentClazz)
          Checks whether animations should be ignored on instances of the specified class.
static boolean toShowExtraElements()
          Returns indication whether extra UI elements (such as menu items in system menu or menu search panel) should be shown.
 void uninitialize()
           
static void unregisterBorderPainterChangeListener(BorderPainterChangeListener borderPainterChangeListener)
          Unregisters a listener on border painter change.
static void unregisterButtonShaperChangeListener(ButtonShaperChangeListener buttonShaperChangeListener)
          Unregisters a listener on button shaper change.
static void unregisterGradientPainterChangeListener(GradientPainterChangeListener gradientPainterChangeListener)
          Unregisters a listener on gradient painter change.
static void unregisterLocaleChangeListener(LocaleChangeListener localeListener)
          Unregisters a listener on locale change.
static void unregisterSkinChangeListener(SkinChangeListener skinChangeListener)
          Unregisters a listener on skin change.
static void unregisterTabCloseChangeListener(BaseTabCloseListener tabCloseListener)
          Unregisters the specified listener on tab-close events on all tabbed panes.
static void unregisterTabCloseChangeListener(javax.swing.JTabbedPane tabbedPane, BaseTabCloseListener tabCloseListener)
          Unregisters the specified listener on tab-close events on the specified tabbed pane.
static void unregisterThemeChangeListener(ThemeChangeListener themeChangeListener)
          Unregisters a listener on theme change.
static void unregisterTitlePainterChangeListener(TitlePainterChangeListener titlePainterChangeListener)
          Unregisters a listener on title painter change.
static void unregisterWatermarkChangeListener(WatermarkChangeListener watermarkChangeListener)
          Unregisters a listener on watermark change.
 
Methods inherited from class javax.swing.plaf.basic.BasicLookAndFeel
createAudioAction, getAudioActionMap, initSystemColorDefaults, loadSystemColors, playSound
 
Methods inherited from class javax.swing.LookAndFeel
getDesktopPropertyValue, getDisabledIcon, getDisabledSelectedIcon, getLayoutStyle, installBorder, installColors, installColorsAndFont, installProperty, loadKeyBindings, makeComponentInputMap, makeIcon, makeInputMap, makeKeyBindings, provideErrorFeedback, toString, uninstallBorder
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

PLUGIN_XML

public static final java.lang.String PLUGIN_XML
The name of plugin configuration XML resource name. This is used for the laf-plugin support layer of third-party components.

See Also:
Constant Field Values

componentPlugins

protected static org.jvnet.lafplugin.ComponentPluginManager componentPlugins
Plugin manager for component plugins.


themePlugins

protected static org.jvnet.lafplugin.PluginManager themePlugins
Plugin manager for theme plugins.


skinPlugins

protected static org.jvnet.lafplugin.PluginManager skinPlugins
Plugin manager for skin plugins.


watermarkPlugins

protected static org.jvnet.lafplugin.PluginManager watermarkPlugins
Plugin manager for watermark plugins.


shaperPlugins

protected static org.jvnet.lafplugin.PluginManager shaperPlugins
Plugin manager for button shaper plugins.


painterPlugins

protected static org.jvnet.lafplugin.PluginManager painterPlugins
Plugin manager for gradient painter plugins.


titlePainterPlugins

protected static org.jvnet.lafplugin.PluginManager titlePainterPlugins
Plugin manager for title painter plugins.


borderPainterPlugins

protected static org.jvnet.lafplugin.PluginManager borderPainterPlugins
Plugin manager for border painter plugins.


skinChangeListeners

protected static java.util.Set<SkinChangeListener> skinChangeListeners
List of all listeners on skin changes.


themeChangeListeners

protected static java.util.Set<ThemeChangeListener> themeChangeListeners
List of all listeners on theme changes.


watermarkChangeListeners

protected static java.util.Set<WatermarkChangeListener> watermarkChangeListeners
List of all listeners on watermark changes.


buttonShaperChangeListeners

protected static java.util.Set<ButtonShaperChangeListener> buttonShaperChangeListeners
List of all listeners on button shaper changes.


gradientPainterChangeListeners

protected static java.util.Set<GradientPainterChangeListener> gradientPainterChangeListeners
List of all listeners on gradient painter changes.


titlePainterChangeListeners

protected static java.util.Set<TitlePainterChangeListener> titlePainterChangeListeners
List of all listeners on title painter changes.


borderPainterChangeListeners

protected static java.util.Set<BorderPainterChangeListener> borderPainterChangeListeners
List of all listeners on border painter changes.


localeChangeListeners

protected static java.util.Set<LocaleChangeListener> localeChangeListeners
List of all listeners on closing tabs.


ignoreAnimationsSet

protected static java.util.Set<java.lang.String> ignoreAnimationsSet
Contains a list of all control class names that should ignore the animations.


mixedThemes

protected static java.util.Map<java.lang.String,SubstanceMixTheme> mixedThemes
List of all globally registered mixed themes.


backgroundComposites

protected static java.util.Map<java.lang.Class<?>,ControlBackgroundComposite> backgroundComposites
Contains default background composites on per-class basis. This map is "consulted" if no BACKGROUND_COMPOSITE property is set on the control.

See Also:
BACKGROUND_COMPOSITE, setBackgroundComposite(Class, ControlBackgroundComposite), getBackgroundComposite(Component)

toShowExtraElements

protected static boolean toShowExtraElements
Indicates whether extra UI elements (such as menu items in system menu or menu search panel) should be shown.

See Also:
toShowExtraElements(), NO_EXTRA_ELEMENTS

toUseConstantThemesOnDialogs

protected static boolean toUseConstantThemesOnDialogs
Indicates whether option dialogs (error, question, warning, info) should use constant themes for icon coloring. Note that since version 4.0, the default setting is true (use constant theme). To use theme-consistent coloring, call setToUseConstantThemesOnDialogs(boolean) and pass true.

See Also:
isToUseConstantThemesOnDialogs(), setToUseConstantThemesOnDialogs(boolean)

toEnableInvertedThemes

protected static boolean toEnableInvertedThemes
Indicates whether inverted themes should be enabled.

See Also:
toEnableInvertedThemes(), ENABLE_INVERTED_THEMES

toEnableNegatedThemes

protected static boolean toEnableNegatedThemes
Indicates whether inverted themes should be enabled.

See Also:
toEnableNegatedThemes(), ENABLE_NEGATED_THEMES

toBleedWatermark

protected static boolean toBleedWatermark
Indicates whether the watermark should "bleed" through lists, tables and trees.

See Also:
toBleedWatermark(), WATERMARK_TO_BLEED

isDebugUiMode

protected static boolean isDebugUiMode
Indicates whether the application will be run in debug UI mode

See Also:
isDebugUiMode(), DEBUG_UI_MODE

focusOwnerChangeListener

protected java.beans.PropertyChangeListener focusOwnerChangeListener
Change listener on keyboard focus manager - fix for defect 208.


currentKeyboardFocusManager

protected java.awt.KeyboardFocusManager currentKeyboardFocusManager
The current keyboard focus manager - fix for defect 208.


BORDER_ANIMATION_KIND

public static final org.jvnet.lafwidget.animation.FadeKind BORDER_ANIMATION_KIND
Fade kind for border animations. Enabled by default, use FadeConfigurationManager.disallowFades(FadeKind) to disable.


TREE_DECORATIONS_ANIMATION_KIND

public static final org.jvnet.lafwidget.animation.FadeKind TREE_DECORATIONS_ANIMATION_KIND

Fade kind for tree decorations animation kind. Disabled by default, use FadeConfigurationManager.allowFades(FadeKind) to enable.

Tree decorations include collapse / expand icons and vertical / horizontal lines.

Since:
version 3.3

TREE_SMART_SCROLL_ANIMATION_KIND

public static final org.jvnet.lafwidget.animation.FadeKind TREE_SMART_SCROLL_ANIMATION_KIND
Fade kind for smart tree scroll. Disabled by default, use FadeConfigurationManager.allowFades(FadeKind) to enable.

Smart tree scroll is relevant for scroll panes containing a tree. When enabled, it automatically scrolls the tree horizontally when the viewport shows mainly empty area (especially relevant for multi-level trees with narrow viewports).

Since:
4.0

DEBUG_UI_MODE

public static final java.lang.String DEBUG_UI_MODE
Property name for specifying the debug UI mode. Application running in debug UI mode will have additional UI controls for inspecting / changing the state of various controls. This property can be set as either VM flag (no value needed) or as a global setting on UIManager. In the latter case, the value should be either Boolean.TRUE or Boolean.FALSE.

Example of setting this property via VM flag:

-Dsubstancelaf.debugUiMode

Example of setting this property on UIManager:

UIManager.put(SubstanceLookAndFeel.DEBUG_UI_MODE, Boolean.TRUE);

Since:
version 3.1
See Also:
Constant Field Values

THEME_PROPERTY

public static final java.lang.String THEME_PROPERTY
Property name for setting theme. This property is used both as a JVM flag and as a client property that can be set on a specific component.

If this property is used as a JVM flag, the value should be a fully-qualified name of the theme class. This class must have a default (no-argument) constructor. This means that you can not specify "generic" themes such as SubstanceMixTheme or SubstanceToneTheme.

If this property is used as a client property, the value can be one of:

Example of specifying a custom default theme as a VM flag:

-Dsubstancelaf.theme=org.jvnet.substance.theme.SubstanceBottleGreenTheme

Example of using a theme display name as client property value:

JCheckBox cb = new JCheckBox("text");
cb.putClientProperty(SubstanceLookAndFeel.THEME_PROPERTY, "Bottle Green");

Example of using a ThemeInfo object as client property value:

JCheckBox cb = new JCheckBox("text");
ThemeInfo ti = SubstanceLookAndFeel.getAllThemes().get("Bottle Green");
cb.putClientProperty(SubstanceLookAndFeel.THEME_PROPERTY, ti);

Example of using a SubstanceTheme object as client property value:

JCheckBox cb = new JCheckBox("text");
cb.putClientProperty(SubstanceLookAndFeel.THEME_PROPERTY,
  new SubstanceBottleGreenTheme());

Since:
version 2.0
See Also:
getCurrentThemeName(), getTheme(), setCurrentTheme(String), setCurrentTheme(SubstanceTheme), setCurrentTheme(ThemeInfo), registerThemeChangeListener(ThemeChangeListener), unregisterThemeChangeListener(ThemeChangeListener), Constant Field Values

WATERMARK_PROPERTY

public static final java.lang.String WATERMARK_PROPERTY
Property name for setting watermark. This is only for JVM flag. The value should be a fully-qualified name of the watermark class. This class must have a default (no-argument) constructor. This means that you can not specify "generic" watermark such as SubstanceNoiseWatermark.

Example of specifying a custom default watermark as a VM flag:

-Dsubstancelaf.watermark=org.jvnet.substance.watermark.SubstanceKatakanaWatermark

Since:
version 2.0
See Also:
getCurrentWatermark(), getCurrentWatermarkName(), setCurrentWatermark(String), setCurrentWatermark(SubstanceWatermark), registerWatermarkChangeListener(WatermarkChangeListener), unregisterWatermarkChangeListener(WatermarkChangeListener), Constant Field Values

WATERMARK_IMAGE_PROPERTY

public static final java.lang.String WATERMARK_IMAGE_PROPERTY
Property name for setting SubstanceImageWatermark watermark image. This is only for JVM flag. The value should be a location of watermark image as either filename or http-prefixed URL.

Example of specifying a local image as watermark image:

-Dsubstancelaf.watermark.image=C:/images/myimage.jpg

Example of specifying a URL image as watermark image:

-Dsubstancelaf.watermark.image=http://images.com/myimage.jpg

Since:
version 2.0
See Also:
getImageWatermarkKind(), getImageWatermarkOpacity(), #setImageWatermarkKind(ImageWatermarkKind), setImageWatermarkOpacity(float), WATERMARK_IMAGE_KIND, WATERMARK_IMAGE_OPACITY, Constant Field Values

WATERMARK_TO_BLEED

public static final java.lang.String WATERMARK_TO_BLEED
Property name for requesting that watermark should bleed through lists, trees and tables. This is both a JVM flag and a client property on UIManager (global setting).

When this property is used as a JVM flag, there is no need to specify any value:

-Dsubstancelaf.watermark.tobleed

When this property is set a client property on UIManager, the value should be one of Boolean.TRUE or Boolean.FALSE. For example,

  UIManager.put(SubstanceLookAndFeel.WATERMARK_TO_BLEED, Boolean.TRUE);

Since:
version 2.2
See Also:
Constant Field Values

WATERMARK_IGNORE

public static final java.lang.String WATERMARK_IGNORE
Client property name for requesting that watermark should not be painted on the component and its descendants. This property can be set either as client property on some component or as global property on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE.

In order to compute whether the current watermark should be painted on some component, the component's hierarchy is traversed bottom up. The first component that has this property set, defines the watermark visibility. Finally, if neither component not its ancestors define this property, the global setting on UIManager is checked. If there is no global setting, the watermark is not ignored (it is painted). Here is an example to illustrate the above:

JPanel topPanel = new JPanel();
topPanel.putClientProperty(SubstanceLookAndFeel.WATERMARK_IGNORE,
  Boolean.TRUE);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel2.putClientProperty(SubstanceLookAndFeel.WATERMARK_IGNORE,
  Boolean.FALSE);
JTextField tf1 = new JTextField("field1");
tf1.putClientProperty(SubstanceLookAndFeel.WATERMARK_IGNORE, Boolean.TRUE);
JTextField tf2 = new JTextField("field2");
panel1.add(tf1);
panel1.add(tf2);
topPanel.add(panel1);
topPanel.add(panel2);

In the code above, if UIManager has no value for this property, the watermark will be painted only on panel2 and tf1. The panel1 and tf2 "inherit" the watermark-ignore setting from their topPanel ancestor.

Since:
version 2.2
See Also:
Constant Field Values

WATERMARK_IMAGE_KIND

public static final java.lang.String WATERMARK_IMAGE_KIND
VM property for specifying the image watermark kind. Should be the name of one of the values in SubstanceConstants.ImageWatermarkKind enum. Is used only as a JVM flag. The default value (if no VM flag is specified) is SubstanceConstants.ImageWatermarkKind#SCREEN_CENTER_SCALE. Example of specifying custom default image watermark kind:

-Dsubstancelaf.watermark.image.kind=APP_ANCHOR

Since:
version 2.3
See Also:
getImageWatermarkKind(), getImageWatermarkOpacity(), #setImageWatermarkKind(ImageWatermarkKind), setImageWatermarkOpacity(float), WATERMARK_IMAGE_OPACITY, WATERMARK_IMAGE_PROPERTY, Constant Field Values

WATERMARK_IMAGE_OPACITY

public static final java.lang.String WATERMARK_IMAGE_OPACITY
VM property for specifying the image watermark opacity. Should be in 0.0-1.0 range. Is used only as a JVM flag. The default value (if no VM flag is specified) is 0.2. The default value is also taken if the VM flag value can not be parsed as a float number. If the VM flag value can be parsed as a float, but is outside of 0.0-1.0 range, an IllegalArgumentException will be thrown at the application startup. Example of setting custom default watermark image opacity: *

-Dsubstancelaf.watermark.image.opacity=0.6

Since:
version 2.3
See Also:
getImageWatermarkKind(), getImageWatermarkOpacity(), #setImageWatermarkKind(ImageWatermarkKind), setImageWatermarkOpacity(float), WATERMARK_IMAGE_KIND, WATERMARK_IMAGE_PROPERTY, Constant Field Values

BUTTON_NO_MIN_SIZE_PROPERTY

public static final java.lang.String BUTTON_NO_MIN_SIZE_PROPERTY
Client property name for ignoring default (minimum) dimension for a single button. This property can be set either as a client property on a specific button or as a global setting on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE.

Note that SubstanceButtonShaper implementations are not required to respect this property. The current implementations of the default StandardButtonShaper and ClassicButtonShaper respect this property.

Example of marking a button to ignore minimum dimension settings:

JButton button = new JButton("text");
button.putClientProperty(SubstanceLookAndFeel.BUTTON_NO_MIN_SIZE_PROPERTY,
  Boolean.TRUE);

Example of marking all application buttons to ignore minimum dimension settings:

UIManager.put(SubstanceLookAndFeel.BUTTON_NO_MIN_SIZE_PROPERTY,
  Boolean.TRUE);

Since:
version 2.1
See Also:
Constant Field Values

PAINT_ACTIVE_PROPERTY

public static final java.lang.String PAINT_ACTIVE_PROPERTY
Client property name for specifying that a single control / all application controls should always be painted in active color (unless a control is disabled). This property can be set either as a client property on a specific control or as a global setting on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE.

Example of marking a button to be painted active:

JButton button = new JButton("text");
button.putClientProperty(SubstanceLookAndFeel.PAINT_ACTIVE_PROPERTY,
  Boolean.TRUE);

Example of marking all application controls to be painted active:

UIManager.put(SubstanceLookAndFeel.PAINT_ACTIVE_PROPERTY,
  Boolean.TRUE);

Since:
version 3.0
See Also:
Constant Field Values

BUTTON_PAINT_NEVER_PROPERTY

public static final java.lang.String BUTTON_PAINT_NEVER_PROPERTY
Client property name for specifying that a single button / all application buttons should never paint the background. This property can be set either as a client property on a specific button or as a global setting on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE. Note that unlike the FLAT_PROPERTY, a button marked with this property will never show the background (will always be painted flat).

Example of marking a button to never paint background:

JButton button = new JButton("text");
button.putClientProperty(SubstanceLookAndFeel.BUTTON_PAINT_NEVER_PROPERTY,
  Boolean.TRUE);

Example of marking all application buttons to never paint background:

UIManager.put(SubstanceLookAndFeel.BUTTON_PAINT_NEVER_PROPERTY,
  Boolean.TRUE);

Since:
version 2.3
See Also:
FLAT_PROPERTY, Constant Field Values

BUTTON_SIDE_PROPERTY

public static final java.lang.String BUTTON_SIDE_PROPERTY
Client property name for specifying a straight side for a single button. This property must be set as a client property on a specific button. The value can be:

Note that not all SubstanceButtonShaper implementations are required to respect this property. The default StandardButtonShaper and ClassicButtonShaper respect this property.

Example of marking a button to have straight north side:

JButton button = new JButton("text");
button.putClientProperty(SubstanceLookAndFeel.BUTTON_SIDE_PROPERTY,
  SubstanceConstants.Side.RIGHT.name());

Since:
version 2.1
See Also:
BUTTON_OPEN_SIDE_PROPERTY, Constant Field Values

BUTTON_OPEN_SIDE_PROPERTY

public static final java.lang.String BUTTON_OPEN_SIDE_PROPERTY
Client property name for specifying an open side for a single button. This property must be set as a client property on a specific button. The value can be:

Example of marking a button to have open north side:

JButton button = new JButton("text");
Set openSides = new HashSet();
openSides.put(Side.TOP);
button.putClientProperty(SubstanceLookAndFeel.BUTTON_OPEN_SIDE_PROPERTY,
  openSides);

Since:
version 3.1
See Also:
BUTTON_SIDE_PROPERTY, Constant Field Values

BUTTON_SHAPER_PROPERTY

public static final java.lang.String BUTTON_SHAPER_PROPERTY
Property name for specifying button shaper. This property is used both as a JVM flag and as a client property that can be set on a specific button.

If this property is used as a JVM flag, the value should be a fully-qualified name of the button shaper class. This class must have a default (no-argument) constructor.

If this property is used as a client property, the value can be one of:

Example of specifying a custom default button shaper as a VM flag:

-Dsubstancelaf.buttonShaper=org.jvnet.substance.button.ClassicButtonShaper

Example of using a shaper class name as client property value:

JButton b = new JButton("text");
b.putClientProperty(SubstanceLookAndFeel.BUTTON_SHAPER_PROPERTY,
  "org.jvnet.substance.button.ClassicButtonShaper");

Example of using a SubstanceButtonShaper object as client property value:

JButton b = new JButton("text");
b.putClientProperty(SubstanceLookAndFeel.BUTTON_SHAPER_PROPERTY,
  new ClassicButtonShaper());

Since:
version 2.1
See Also:
getCurrentButtonShaper(), getCurrentButtonShaperName(), setCurrentButtonShaper(String), setCurrentButtonShaper(SubstanceButtonShaper), registerButtonShaperChangeListener(ButtonShaperChangeListener), unregisterButtonShaperChangeListener(ButtonShaperChangeListener), Constant Field Values

CORNER_RADIUS

public static final java.lang.String CORNER_RADIUS
Client property name for specifying the corner radius for buttons. Currently, this property is respected only on toolbar buttons. This property can be set either as a client property on a specific toolbar button, a client property on a specific toolbar (will hold for all buttons in the toolbar) or as a global setting on UIManager. The value should be a Float instance.

Example of specifying a (toolbar) button to have corner radius of 5 pixels:

JButton button = new JButton("text");
button.putClientProperty(SubstanceLookAndFeel.CORNER_RADIUS,
  Float.valueOf(5.0f));

Example of specifying all buttons of a toolbar to have corner radius of 3 pixels:

JToolBar toolbar = new JToolBar("toolbar");
toolbar.putClientProperty(SubstanceLookAndFeel.CORNER_RADIUS,
  Float.valueOf(3.0f));

Example of specifying all toolbar buttons to have corner radius of 0 pixels:

UIManager.put(SubstanceLookAndFeel.CORNER_RADIUS, Float.valueOf(0.0f));

Since:
version 3.0
See Also:
Constant Field Values

FLAT_PROPERTY

public static final java.lang.String FLAT_PROPERTY
Property name for specifying that the component should be painted flat (no background / border) when it's inactive. This property should be specified on a specific component or its parent and must have either Boolean.TRUE or Boolean.FALSE value. For example, this is how to mark a button to appear flat:

JButton button = new JButton("text");
button.putClientProperty(SubstanceLookAndFeel.FLAT_PROPERTY,
  Boolean.TRUE);

Since:
version 3.0
See Also:
BUTTON_PAINT_NEVER_PROPERTY, Constant Field Values

OVERLAY_PROPERTY

public static final java.lang.String OVERLAY_PROPERTY
Client property name for specifying that a single control / all application controls have overlay functionality. This property can be set either as a client property on a specific control or as a global setting on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE.

Example of marking a scroll pane to have overlays on the scroll bars:

JPanel myPanel = new JPanel();
JScrollPane jsp = new JScrollPane(myPanel);
myPanel.putClientProperty(SubstanceLookAndFeel.OVERLAY_PROPERTY,
  Boolean.TRUE);

Example of marking all application controls to have overlays:

UIManager.put(SubstanceLookAndFeel.OVERLAY_PROPERTY,
  Boolean.TRUE);

Since:
version 3.2
See Also:
Constant Field Values

GRIP_PAINTER

public static final java.lang.String GRIP_PAINTER
Property name for specifying custom grip handles. This applies to scroll bars, split pane dividers and other relevant controls. The value should be an instance of GripPainter interface.

Example of marking a scroll pane to have custom grip handles on its scroll bars:

JPanel myPanel = new JPanel();
JScrollPane jsp = new JScrollPane(myPanel);
myPanel.putClientProperty(SubstanceLookAndFeel.GRIP_PAINTER,
  new DragBumpsGripPainter());

Since:
version 3.2
See Also:
Constant Field Values

GRADIENT_PAINTER_PROPERTY

public static final java.lang.String GRADIENT_PAINTER_PROPERTY
Property name for specifying gradient painter. This property is used both as a JVM flag and as a client property that can be set on a specific button.

For the JVM flag, the value should be fully-qualified name of the gradient painter class. This class must have a default (no-argument) constructor. For the client property, the value can be either a fully-qualified class name as above or an instance of SubstanceGradientPainter.

Example of specifying a custom default gradient painter as a VM flag:

-Dsubstancelaf.gradientPainter=org.jvnet.substance.painter.SpecularGradientPainter

Example of using a painter class name as client property value:

JButton b = new JButton("text");
b.putClientProperty(SubstanceLookAndFeel.GRADIENT_PAINTER_PROPERTY,
  "org.jvnet.substance.painter.SpecularGradientPainter");

Example of using a painter instance as client property value:

JButton b = new JButton("text");
b.putClientProperty(SubstanceLookAndFeel.GRADIENT_PAINTER_PROPERTY,
  new SpecularGradientPainter());

Since:
version 2.1
See Also:
getCurrentGradientPainter(), getCurrentGradientPainterName(), setCurrentGradientPainter(String), setCurrentGradientPainter(SubstanceGradientPainter), registerGradientPainterChangeListener(GradientPainterChangeListener), unregisterGradientPainterChangeListener(GradientPainterChangeListener), Constant Field Values

TITLE_PAINTER_PROPERTY

public static final java.lang.String TITLE_PAINTER_PROPERTY
Property name for specifying title painter. This property is used both as a JVM flag and as a client property that can be set on a specific root pane / internal frame.

For JVM flag, the value should be a fully-qualified name of the title painter class. This class must have a default (no-argument) constructor. For client property, the value should be either a fully-qualified class name as above or an instance of SubstanceTitlePainter.

Example of specifying a custom default title painter as a VM flag:

-Dsubstancelaf.titlePainter=org.jvnet.substance.title.ClassicTitlePainter

Example of using a painter class name as client property value:

JFrame fr = new JFrame("text");
fr.getRootPane().putClientProperty(SubstanceLookAndFeel.TITLE_PAINTER_PROPERTY,
  "org.jvnet.substance.title.ClassicTitlePainter");

Since:
version 3.0
See Also:
getCurrentTitlePainter(), getCurrentTitlePainterName(), setCurrentTitlePainter(String), setCurrentTitlePainter(SubstanceTitlePainter), registerTitlePainterChangeListener(TitlePainterChangeListener), unregisterTitlePainterChangeListener(TitlePainterChangeListener), Constant Field Values

BORDER_PAINTER_PROPERTY

public static final java.lang.String BORDER_PAINTER_PROPERTY
Property name for specifying border painter. This property is used both as a JVM flag and as a client property that can be set on a specific component.

For JVM flag, the value should be a fully-qualified name of the border painter class. This class must have a default (no-argument) constructor. For client property, the value should be either a fully-qualified class name as above or an instance of SubstanceBorderPainter.

Example of specifying a custom default border painter as a VM flag:

-Dsubstancelaf.borderPainter=org.jvnet.substance.border.ClassicBorderPainter

Example of using a painter class name as client property value:

JButton button = new JButton("text");
button.putClientProperty(SubstanceLookAndFeel.BORDER_PAINTER_PROPERTY,
  "org.jvnet.substance.border.ClassicBorderPainter");

Since:
version 4.0
See Also:
getCurrentBorderPainter(), getCurrentBorderPainterName(), setCurrentBorderPainter(String), setCurrentBorderPainter(SubstanceBorderPainter), registerBorderPainterChangeListener(BorderPainterChangeListener), unregisterBorderPainterChangeListener(BorderPainterChangeListener), Constant Field Values

HEAP_STATUS_PANEL

public static final java.lang.String HEAP_STATUS_PANEL
Property name for specifying that custom frame title panes should show the heap status panel. Can be used as a VM flag.

When this VM flag is set (no need to specify a value), the system menu on decorated title panes will have a check box menu item that controls the visibility of the heap status panel. The permanentlyShowHeapStatusPanel(JRootPane) (can be called only when the VM flag is set) removes the above check box menu item and adds the heap status panel to the title pane (if it wasn't shown prior to calling that method). The permanentlyHideHeapStatusPanel(JRootPane) (can be called only when the VM flag is set) removes the above check box menu item and removes the heap status panel to the title pane (if it was shown prior to calling that method).

-Dsubstancelaf.heapStatusPanel

Since:
version 2.1
See Also:
permanentlyHideHeapStatusPanel(JRootPane), permanentlyShowHeapStatusPanel(JRootPane), Constant Field Values

WINDOW_MODIFIED

public static final java.lang.String WINDOW_MODIFIED
Client property name for specifying that contents of some frame, dialog, internal frame, desktop icon or tab have been modified and not saved. The property can be set on:

The animation cycles between red, orange and yellow themes. In most cases (all but tabs not marked with TABBED_PANE_CLOSE_BUTTONS_MODIFIED_ANIMATION property), the animation will be visible only when the mouse hovers over the close button of the matching container (frame, dialog, internal frame, desktop icon, tab). The tooltip of the close button is changed as well to reflect that the container contents are marked as modified.

Here is a sample text editing application that illustrates the use of this property. Once the contents of the text pane are changed, the frame is marked as modified. The Save button marks the frame as not-modified. In the real application, the listener on this button will need to persist the changes as well.

public class Changer extends JFrame {
  public Changer() {
    super("Changer");

    this.setLayout(new BorderLayout());
    JTextPane textArea = new JTextPane();
    this.add(textArea, BorderLayout.CENTER);
    textArea.getDocument().addDocumentListener(new DocumentListener() {
      private void handleChange() {
        getRootPane().putClientProperty(
            SubstanceLookAndFeel.WINDOW_MODIFIED, Boolean.TRUE);
      }

      public void changedUpdate(DocumentEvent e) {
        handleChange();
      }

      public void insertUpdate(DocumentEvent e) {
        handleChange();
      }

      public void removeUpdate(DocumentEvent e) {
        handleChange();
      }
    });
    
    JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    JButton saveButton = new JButton("Save");
    saveButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        getRootPane().putClientProperty(
            SubstanceLookAndFeel.WINDOW_MODIFIED, Boolean.FALSE);
      }
    });
    
    buttons.add(saveButton);
    this.add(buttons, BorderLayout.SOUTH);
    
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  public static void main(String ... args) {
    try {
      UIManager.setLookAndFeel(new SubstanceLookAndFeel());
    }
    catch (Exception exc) {}
    JFrame.setDefaultLookAndFeelDecorated(true);
    Changer ch = new Changer();
    ch.setPreferredSize(new Dimension(200, 200));
    ch.setSize(ch.getPreferredSize());
    ch.setLocationRelativeTo(null);
    ch.setVisible(true);
  }
}

Since:
version 2.1
See Also:
Constant Field Values

BACKGROUND_COMPOSITE

public static final java.lang.String BACKGROUND_COMPOSITE
Client property name for specifying the background composite for various translucency effects. This property can be set either as a client property on a specific control or as a global setting on UIManager. The value should be an instance of ControlBackgroundComposite. Available core implementations include AlphaControlBackgroundComposite, DefaultControlBackgroundComposite and DecayControlBackgroundComposite.

Note that setting this property on a container (such as JScrollPane) will affect all its children (recursively) unless they set this property.

Example of setting a custom background composite on a scroll pane (will affect the painting of the scroll bars and all its children):

JPanel myPanel = new JPanel();
JScrollPane jsp = new JScrollPane(myPanel);
myPanel.putClientProperty(SubstanceLookAndFeel.BACKGROUND_COMPOSITE,
  new AlphaControlBackgroundComposite(0.4f, 0.7f));

Example of marking all application controls with the same background composite:

UIManager.put(SubstanceLookAndFeel.BACKGROUND_COMPOSITE,
  new AlphaControlBackgroundComposite(0.6f));

Since:
version 3.1
See Also:
Constant Field Values

TABBED_PANE_CLOSE_BUTTONS_PROPERTY

public static final java.lang.String TABBED_PANE_CLOSE_BUTTONS_PROPERTY
Client property name for specifying that a single tab / all tabs of a single tabbed pane / all tabs of all tabbed panes should have close buttons. This property can be specified on a single tab component, on a JTabbedPane itself (will hold for all tab components that don't define this property) or on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE. By default, the close buttons are not displayed.

Example of setting that all tabs in the application will have close buttons:

UIManager.put(SubstanceLookAndFeel.TABBED_PANE_CLOSE_BUTTONS_PROPERTY,
  Boolean.TRUE);

A more complex example:

UIManager.put(SubstanceLookAndFeel.TABBED_PANE_CLOSE_BUTTONS_PROPERTY,
  Boolean.TRUE);
JTabbedPane jtpMain = new JTabbedPane();
JTabbedPane jtpSecondary = new JTabbedPane();
jtpSecondary.putClientProperty(SubstanceLookAndFeel.TABBED_PANE_CLOSE_BUTTONS_PROPERTY,
  Boolean.FALSE);
JPanel panelSecondary = new JPanel();
jtpMain.addTab(jtpSecondary);
jtpMain.addTab(panelSecondary);
JPanel tab1 = new JPanel();
JPanel tab2 = new JPanel();
tab2.putClientProperty(SubstanceLookAndFeel.TABBED_PANE_CLOSE_BUTTONS_PROPERTY,
  Boolean.TRUE);
jtpSecondary.addTab(tab1);
jtpSecondary.addTab(tab2);

In the example above, the first first-level child (jtpSecondary) doesn't have the close button (since it overrides the global setting). The second first-level child tab (panelSecondary) has close button (from the global UIManager setting). The first second-level tab doesn't have the close button (setting inherited from the parent jtpSecondary tab that overrides the global setting). The second second-level tab has the close button (since its setting overrides the parent setting).

Since:
version 2.1
See Also:
TABBED_PANE_CLOSE_BUTTONS_MODIFIED_ANIMATION, TABBED_PANE_CLOSE_CALLBACK, Constant Field Values

TABBED_PANE_VERTICAL_ORIENTATION

public static final java.lang.String TABBED_PANE_VERTICAL_ORIENTATION
Client property name for specifying that a single tabbed pane / all tabbed panes should have vertical layout (rotated tabs) on SwingConstants.LEFT and SwingConstants.RIGHT tab placements. This property can be specified either on a single JTabbedPane or on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE. By default, the tab orientation on all placements is horizontal.

Example of setting that all tabbed panes in the application will be vertically oriented:

UIManager.put(SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION,
  Boolean.TRUE);

Example of specifying that the specific tabbed pane will be vertically oriented:

JTabbedPane jtpMain = new JTabbedPane();
jtpMain.putClientProperty(SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION,
  Boolean.TRUE);

Since:
version 2.2
See Also:
TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS, Constant Field Values

TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS

public static final java.lang.String TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS
Client property name for specifying that when a single tabbed pane / all tabbed panes is layed-out vertically, the tab icons remain unrotated.This property can be specified on a single tab component, on a JTabbedPane itself (will hold for all tab components that don't define this property) or on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE. By default, the vertically oriented tabs will have the rotated icons. In case the icon internal layout has horizontal / vertical meaning, using this property with value Boolean.TRUE will preserve the icon orientation. Note that this setting is only relevant for tabs marked with TABBED_PANE_VERTICAL_ORIENTATION property.

Example of setting that all vertically-oriented tabs in the application will have unrotated icons:

UIManager.put(SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS,
  Boolean.TRUE);

An example of tabbed pane with two different kinds of icon orientation:

UIManager.put(SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS,
  Boolean.TRUE);
JTabbedPane jtp = new JTabbedPane();
jtp.setTabPlacement(SwingConstants.LEFT);
JPanel tab1 = new JPanel();
JPanel tab2 = new JPanel();
tab2.putClientProperty(SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS,
  Boolean.FALSE);
jtp.addTab(tab1);
jtp.addTab(tab2);

In the example above, the first tab (tab1) has the horizontally-oriented icon (the same as with SwingConstants.TOP or SwingConstants.BOTTOM) , while the second tab (tab2) has the rotated icon (oriented along the tab text).

Since:
version 2.2
See Also:
TABBED_PANE_VERTICAL_ORIENTATION, Constant Field Values

TABBED_PANE_CLOSE_BUTTONS_MODIFIED_ANIMATION

public static final java.lang.String TABBED_PANE_CLOSE_BUTTONS_MODIFIED_ANIMATION
Client property name for specifying that only the close button of a marked-as-modified tab component should pulsate. This property can be specified on a single tab component, on a JTabbedPane itself (will hold for all tab components that don't define this property) or on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE. By default, the animation on modified tabs is on the entire tab rectangle. Note that this setting is only relevant for tabs marked with WINDOW_MODIFIED property.

Example of setting that all tabs in the application will have modified animation on close button:

UIManager.put(SubstanceLookAndFeel.TABBED_PANE_CLOSE_BUTTONS_MODIFIED_ANIMATION,
  Boolean.TRUE);

A more complex example:

UIManager.put(SubstanceLookAndFeel.TABBED_PANE_CLOSE_BUTTONS_MODIFIED_ANIMATION,
  Boolean.TRUE);
JTabbedPane jtpMain = new JTabbedPane();
JTabbedPane jtpSecondary = new JTabbedPane();
jtpSecondary.putClientProperty(SubstanceLookAndFeel.TABBED_PANE_CLOSE_BUTTONS_MODIFIED_ANIMATION,
  Boolean.FALSE);
JPanel panelSecondary = new JPanel();
jtpMain.addTab(jtpSecondary);
jtpMain.addTab(panelSecondary);
JPanel tab1 = new JPanel();
JPanel tab2 = new JPanel();
tab2.putClientProperty(SubstanceLookAndFeel.TABBED_PANE_CLOSE_BUTTONS_MODIFIED_ANIMATION,
  Boolean.TRUE);
jtpSecondary.addTab(tab1);
jtpSecondary.addTab(tab2);

In the example above, the first first-level child (jtpSecondary) has the animation on the entire tab (since it overrides the global setting). The second first-level child tab (panelSecondary) has animation on the close button (from the global UIManager setting). The first second-level tab has the animation on the entire tab (setting inherited from the parent jtpSecondary tab that overrides the global setting). The second second-level tab has animation on the close button (since its setting overrides the parent setting).

Since:
version 2.2
See Also:
TABBED_PANE_CLOSE_BUTTONS_PROPERTY, TABBED_PANE_CLOSE_CALLBACK, Constant Field Values

TABBED_PANE_CLOSE_CALLBACK

public static final java.lang.String TABBED_PANE_CLOSE_CALLBACK
Client property name for specifying the callback for deciding on the tab close type. This property can be specified on a single tab component, on a JTabbedPane itself (will hold for all tab components that don't define this property) or on UIManager. The value should be an instance of TabCloseCallback. Note that this setting is only relevant for tabs marked with TABBED_PANE_CLOSE_BUTTONS_PROPERTY property.

Example of custom tab close callback set on a tabbed pane:

TabCloseCallback closeCallback = new TabCloseCallback() {
  public TabCloseKind onAreaClick(JTabbedPane tabbedPane,
      int tabIndex, MouseEvent mouseEvent) {
    if (mouseEvent.getButton() != MouseEvent.BUTTON3)
      return TabCloseKind.NONE;
    if (mouseEvent.isShiftDown()) {
      return TabCloseKind.ALL;
    }
    return TabCloseKind.THIS;
  }

  public TabCloseKind onCloseButtonClick(JTabbedPane tabbedPane,
      int tabIndex, MouseEvent mouseEvent) {
    if (mouseEvent.isAltDown()) {
      return TabCloseKind.ALL_BUT_THIS;
    }
    if (mouseEvent.isShiftDown()) {
      return TabCloseKind.ALL;
    }
    return TabCloseKind.THIS;
  }

  public String getAreaTooltip(JTabbedPane tabbedPane, int tabIndex) {
    return null;
  }

  public String getCloseButtonTooltip(JTabbedPane tabbedPane,
      int tabIndex) {
    StringBuffer result = new StringBuffer();
    result.append("<html><body>");
    result.append("Mouse click closes <b>"
        + tabbedPane.getTitleAt(tabIndex) + "</b> tab");
    result.append("<br><b>Alt</b>-Mouse click closes all tabs but <b>"
        + tabbedPane.getTitleAt(tabIndex) + "</b> tab");
    result.append("<br><b>Shift</b>-Mouse click closes all tabs");
    result.append("</body></html>");
    return result.toString();
  }
};
JTabbedPane jtp = new JTabbedPane();
jtp.putClientProperty(
    SubstanceLookAndFeel.TABBED_PANE_CLOSE_CALLBACK,
    closeCallback);

Since:
version 2.3
See Also:
Constant Field Values

TABBED_PANE_TEXT_ALIGNMENT_KIND

public static final java.lang.String TABBED_PANE_TEXT_ALIGNMENT_KIND
Client property name for specifying the text alignment kind for on SwingConstants.LEFT and SwingConstants.RIGHT tab placements. This property can be specified either on a single JTabbedPane or on UIManager. The value should be one of SubstanceConstants.TabTextAlignmentKind enum. By default, the text alignment is SubstanceConstants.TabTextAlignmentKind#DEFAULT (centered).

Example of setting that all tabbed panes in the application will follow placement for the text alignment:

UIManager.put(SubstanceLookAndFeel.TABBED_PANE_TEXT_ALIGNMENT_KIND,
  TabTextAlignmentKind.FOLLOW_PLACEMENT);

Example of specifying that the specific tabbed pane will follow placement for the text alignment:

JTabbedPane jtpMain = new JTabbedPane();
jtpMain.putClientProperty(SubstanceLookAndFeel.TABBED_PANE_TEXT_ALIGNMENT_KIND,
  TabTextAlignmentKind.FOLLOW_PLACEMENT);

Since:
version 2.3
See Also:
Constant Field Values

TABBED_PANE_CONTENT_BORDER_KIND

public static final java.lang.String TABBED_PANE_CONTENT_BORDER_KIND
Client property name for specifying the content pane border kind. This property can be specified either on a single JTabbedPane or on UIManager. The value should be one of SubstanceConstants.TabContentPaneBorderKind enum. By default, the border kind is SubstanceConstants.TabContentPaneBorderKind#DOUBLE_FULL.

Example of setting that all tabbed panes in the application have single full border (default setting prior to version 4.1):

UIManager.put(SubstanceLookAndFeel.TABBED_PANE_CONTENT_BORDER_KIND,
  TabContentPaneBorderKind.SINGLE_FULL);

Example of specifying that the specific tabbed pane has single full border (default setting prior to version 4.1):

JTabbedPane jtpMain = new JTabbedPane();
jtpMain.putClientProperty(SubstanceLookAndFeel.TABBED_PANE_CONTENT_BORDER_KIND,
  TabContentPaneBorderKind.SINGLE_FULL);

Since:
version 4.1
See Also:
Constant Field Values

COMBO_BOX_POPUP_FLYOUT_ORIENTATION

public static final java.lang.String COMBO_BOX_POPUP_FLYOUT_ORIENTATION
Client property name for specifying combo popup flyout orientation. This property can be set on either a specific JComboBox or globally on UIManager. The value should be one of the Integers below:

Note that the combo arrow changes in accordance with the combo popup flyout orientation. Example of setting a combobox with a custom flyout orientation:

JComboBox cb = new JComboBox(
  new Object[] { "Ester", "Jordi", "Jordina", "Jorge", "Sergi" });
cb.putClientProperty(SubstanceLookAndFeel.COMBO_BOX_POPUP_FLYOUT_ORIENTATION,
  SwingConstants.CENTER);

Since:
version 2.3
See Also:
COMBO_POPUP_PROTOTYPE, Constant Field Values

SCROLL_PANE_BUTTONS_POLICY

public static final java.lang.String SCROLL_PANE_BUTTONS_POLICY
Client property name for specifying scroll pane button policy. This property can be set on either a specific JScrollPane or globally on UIManager. The value should be one of the SubstanceConstants.ScrollPaneButtonPolicyKind enum. Example of setting a scroll pane with a custom button policy:

JScrollPane jsp = new JScrollPane(new JPanel());
jsp.putClientProperty(SubstanceLookAndFeel.SCROLL_PANE_BUTTONS_POLICY,
  ScrollPaneButtonPolicyKind.MULTIPLE);

Since:
version 3.1
See Also:
Constant Field Values

NO_EXTRA_ELEMENTS

public static final java.lang.String NO_EXTRA_ELEMENTS
Property name for specifying that no extra UI elements (such as menu items in system menu or menu search panel) should be shown. This property can be set as either VM flag (no value needed) or as a global setting on UIManager. In the latter case, the value should be either Boolean.TRUE or Boolean.FALSE. Partial list of UI elements that will not be present when this property is specified:

Example of setting this property via VM flag:

-Dsubstancelaf.noExtraElements

Example of setting this property on UIManager:

UIManager.put(SubstanceLookAndFeel.NO_EXTRA_ELEMENTS, Boolean.TRUE); SwingUtilities.updateComponentTree(myFrame);

Since:
version 2.1
See Also:
toShowExtraElements, Constant Field Values

MENU_GUTTER_FILL_KIND

public static final java.lang.String MENU_GUTTER_FILL_KIND
Property name for specifying menu gutter fill kind. Menu gutter is the part of the menu where checkmarks and icons are painted. The value should be one of SubstanceConstants.MenuGutterFillKind enum. This property can be set globally on the UIManager. The default value is SubstanceConstants.MenuGutterFillKind.HARD.

Example of setting soft fill kind:

UIManager.put(SubstanceLookAndFeel.MENU_GUTTER_FILL_KIND, MenuGutterFillKind.SOFT);

Since:
version 3.2
See Also:
Constant Field Values

FOCUS_KIND

public static final java.lang.String FOCUS_KIND
Client property name for specifying the kind of focus indication on buttons, check boxes and radio buttons. The value should be one of SubstanceConstants.FocusKind enum. This property can be set either as client property on some component or as global property on UIManager.

In order to compute the kind of focus indication for some component, the component's hierarchy is traversed bottom up. The first component that has this property set, defines the focus indication kind. Finally, if neither component not its ancestors define this property, the global setting on UIManager is checked. If there is no global setting, the default SubstanceConstants.FocusKind#ALL_INNER is used. Here is an example to illustrate the above:

  JPanel topPanel = new JPanel();
  topPanel.putClientProperty(SubstanceLookAndFeel.FOCUS_KIND, FocusKind.UNDERLINE);
  JPanel panel1 = new JPanel();
  JButton b1 = new JButton("button1");
  b1.putClientProperty(SubstanceLookAndFeel.FOCUS_KIND, FocusKind.TEXT);
  JButton b2 = new JButton("button2");
  JButton b3 = new JButton("button3");
  b3.putClientProperty(SubstanceLookAndFeel.FOCUS_KIND, FocusKind.ALL_INNER);
  panel1.add(b1);
  panel1.add(b2);
  topPanel.add(panel1);
  topPanel.add(b3);

In the code above:

Since:
2.2
See Also:
SubstanceConstants.FocusKind, Constant Field Values

COMBO_POPUP_PROTOTYPE

public static final java.lang.String COMBO_POPUP_PROTOTYPE
Property name for specifying the combobox popup prototype display value which is used to compute the width of the popup at runtime. The property value should be one of:

This property can be set either on a specific JComboBox or globally on UIManager.

Here is an example of combo popup prototype set to a model element:

JComboBox comboProto1 = new JComboBox(new Object[] { "aa", "aaaaa",
  "aaaaaaaaaa", "this one is the one", "aaaaaaaaaaaaaaaaaaaaa" });
comboProto1.setPrototypeDisplayValue("aaaaa");
comboProto1.putClientProperty(SubstanceLookAndFeel.COMBO_POPUP_PROTOTYPE,
  "this one is the one");

Here is an example of combo popup prototype set to a dynamic callback. This callback always returns the last model element:

JComboBox comboProto3 = new JComboBox(new Object[] { "aa", "aaaaa",
  "this is not", "this one is not it",
  "this one is it that is for the popup" });
comboProto3.setPrototypeDisplayValue("aaaaa");
comboProto3.putClientProperty(SubstanceLookAndFeel.COMBO_POPUP_PROTOTYPE,
  new ComboPopupPrototypeCallback() {
    public Object getPopupPrototypeDisplayValue(JComboBox jc) {
      return jc.getModel().getElementAt(
        jc.getModel().getSize() - 1);
    }
  });

Since:
version 3.0
See Also:
COMBO_BOX_POPUP_FLYOUT_ORIENTATION, Constant Field Values

TRACE_FILE

public static final java.lang.String TRACE_FILE
VM property name for specifying the trace file. The trace file will contain output of the memory analyser which can be used to pinpoint the memory leaks. The property value is used as a filename for tracing the memory allocations. Example for specifying the trace file name:

-Dsubstancelaf.traceFile=C:/temp/myApp.substance.log

Since:
version 2.0
See Also:
MemoryAnalyzer, Constant Field Values

CONFIG_FILE

public static final java.lang.String CONFIG_FILE
VM property name for the configuration file. If this property is specified in the VM flags, all other global VM Substance-specific settings are ignored and are read instead from the (local) configuration file. The property value should point to a file in the regular Properties format. Example of specifying configuration file:

-Dsubstancelaf.configFile=C:/myConfigSubstance.properties

Since:
version 2.2
See Also:
Constant Field Values

ENABLE_INVERTED_THEMES

public static final java.lang.String ENABLE_INVERTED_THEMES
Property name for enabling inverted themes. This property can be set as either VM flag (no value needed) or as a global setting on UIManager. In the latter case, the value should be either Boolean.TRUE or Boolean.FALSE. When this property is set, the getAllThemes() method will return entries for all SubstanceTheme.ThemeKind#BRIGHT and SubstanceTheme.ThemeKind#COLD themes. All these entries will be marked with SubstanceTheme.ThemeKind#INVERTED kind.

Example of setting this property via VM flag:

-Dsubstancelaf.enableInvertedThemes

Example of setting this property on UIManager:

UIManager.put(SubstanceLookAndFeel.ENABLE_INVERTED_THEMES,
  Boolean.TRUE);

Since:
version 2.3
See Also:
ENABLE_NEGATED_THEMES, Constant Field Values

ENABLE_NEGATED_THEMES

public static final java.lang.String ENABLE_NEGATED_THEMES
Property name for enabling negated themes. This property can be set as either VM flag (no value needed) or as a global setting on UIManager. In the latter case, the value should be either Boolean.TRUE or Boolean.FALSE. When this property is set, the getAllThemes() method will return entries for all SubstanceTheme.ThemeKind#BRIGHT and SubstanceTheme.ThemeKind#COLD themes. All these entries will be marked with SubstanceTheme.ThemeKind#NEGATED kind.

Example of setting this property via VM flag:

-Dsubstancelaf.enableNegatedThemes

Example of setting this property on UIManager:

UIManager.put(SubstanceLookAndFeel.ENABLE_NEGATED_THEMES,
  Boolean.TRUE);

Since:
version 3.1
See Also:
ENABLE_INVERTED_THEMES, Constant Field Values

PASSWORD_ECHO_PER_CHAR

public static final java.lang.String PASSWORD_ECHO_PER_CHAR
Client property name for specifying the number of echo characters for each password character. The value should be an instance of Integer, otherwise will be ignored. This property can be set either on a specific JPasswordField or globally on UIManager.

Example of having all password fields echo 3 characters per each typed user character:

UIManager.put(SubstanceLookAndFeel.PASSWORD_ECHO_PER_CHAR,
  new Integer(3));

Example of having a specific password field echo 2 characters per each typed user character:

JPasswordField jpf = new JPasswordField();
jpf.putClientProperty(SubstanceLookAndFeel.PASSWORD_ECHO_PER_CHAR,
  new Integer(2));

Since:
version 2.2
See Also:
Constant Field Values

USE_THEMED_DEFAULT_ICONS

public static final java.lang.String USE_THEMED_DEFAULT_ICONS

Client property name for specifying that icons on buttons and toggle buttons should match the color of the current theme when they are in default state. The button is in default state when it's not pressed, not selected, not armed and not rolled over. The value should be an instance of Boolean. By default, all buttons show regular (full-color original) icons. The value can be set on the specific button or globally on UIManager.

Example of marking a button to have theme-matching icon in default state:

JButton jb = new JButton("sample", myIcon);
jb.putClientProperty(SubstanceLookAndFeel.USE_THEMED_DEFAULT_ICONS,
  Boolean.TRUE);

Since:
version 3.3
See Also:
Constant Field Values

SUBSTANCE_FONT_POLICY_KEY

protected static final java.lang.String SUBSTANCE_FONT_POLICY_KEY
Internal client property name for storing application-specific font policy.

Since:
version 3.3
See Also:
setFontPolicy(FontPolicy), getFontPolicy(), Constant Field Values

paramReader

protected static ParamReader paramReader
The parameter reader.

Constructor Detail

SubstanceLookAndFeel

public SubstanceLookAndFeel()
Creates new instance of Substance look and feel.

Method Detail

getLabelBundle

public static java.util.ResourceBundle getLabelBundle()
Retrieves the current label bundle.

Returns:
The current label bundle.
See Also:
resetLabelBundle()

getLabelBundle

public static java.util.ResourceBundle getLabelBundle(java.util.Locale locale)
Retrieves the label bundle for the specified locale.

Parameters:
locale - Locale.
Returns:
The label bundle for the specified locale.

resetLabelBundle

public static void resetLabelBundle()
Resets the current label bundle. Useful when the application changes Locale at runtime.

See Also:
getLabelBundle()

getTheme

public static SubstanceTheme getTheme()
Returns the current theme.

Returns:
The current theme.
See Also:
getCurrentThemeName(), setCurrentTheme(String), setCurrentTheme(SubstanceTheme), setCurrentTheme(ThemeInfo), registerThemeChangeListener(ThemeChangeListener), unregisterThemeChangeListener(ThemeChangeListener), THEME_PROPERTY

getActiveColorScheme

public static ColorScheme getActiveColorScheme()
Returns the current color scheme for components in active visual state.

Returns:
Current color scheme for components in active visual state.
See Also:
getDefaultColorScheme(), getDisabledColorScheme()

getDefaultColorScheme

public static ColorScheme getDefaultColorScheme()
Returns the current color scheme for components in default visual state.

Returns:
Current color scheme for components in default visual state.
See Also:
getActiveColorScheme(), getDisabledColorScheme()

getDisabledColorScheme

public static ColorScheme getDisabledColorScheme()
Returns the current color scheme for components in disabled visual state.

Returns:
Current color scheme for components in disabled visual state.
See Also:
getActiveColorScheme(), getDefaultColorScheme()

setCurrentTheme

public static boolean setCurrentTheme(java.lang.String themeClassName)
Sets new theme. In order for the theme to be correctly set, you need to call SwingUtilities.updateComponentTreeUI(java.awt.Component) on all open frames (call Frame.getFrames() to get a list of all open frames).

Parameters:
themeClassName - Theme class name (full qualified).
Returns:
The status of the theme change.
See Also:
getCurrentThemeName(), getTheme(), setCurrentTheme(SubstanceTheme), setCurrentTheme(ThemeInfo), registerThemeChangeListener(ThemeChangeListener), unregisterThemeChangeListener(ThemeChangeListener), THEME_PROPERTY

setCurrentTheme

public static boolean setCurrentTheme(ThemeInfo themeInfo)
Sets new theme. In order for the theme to be correctly set, you need to call SwingUtilities.updateComponentTreeUI(java.awt.Component) on all open frames (call Frame.getFrames() to get a list of all open frames).

Parameters:
themeInfo - Theme information.
Returns:
The status of the theme change.
See Also:
getCurrentThemeName(), getTheme(), setCurrentTheme(String), setCurrentTheme(SubstanceTheme), registerThemeChangeListener(ThemeChangeListener), unregisterThemeChangeListener(ThemeChangeListener), THEME_PROPERTY

setCurrentTheme

public static boolean setCurrentTheme(SubstanceTheme theme)
Sets new theme. In order for the theme to be correctly set, you need to call SwingUtilities.updateComponentTreeUI(java.awt.Component) on all open frames (call Frame.getFrames() to get a list of all open frames).

Parameters:
theme - Theme object.
Returns:
The status of the theme change.
See Also:
getCurrentThemeName(), getTheme(), setCurrentTheme(String), setCurrentTheme(ThemeInfo), registerThemeChangeListener(ThemeChangeListener), unregisterThemeChangeListener(ThemeChangeListener), THEME_PROPERTY

getCurrentThemeName

public static java.lang.String getCurrentThemeName()
Returns the current color theme name.

Returns:
Current color theme name.
See Also:
getTheme(), setCurrentTheme(String), setCurrentTheme(SubstanceTheme), setCurrentTheme(ThemeInfo), registerThemeChangeListener(ThemeChangeListener), unregisterThemeChangeListener(ThemeChangeListener), THEME_PROPERTY

getAllThemes

public static java.util.Map<java.lang.String,ThemeInfo> getAllThemes()
Returns all available themes.

Returns:
All available color themes. Key - theme name, value - theme information.

getCurrentWatermarkName

public static java.lang.String getCurrentWatermarkName()
Returns the current watermark name.

Returns:
Current watermark name.
See Also:
getCurrentWatermark(), setCurrentWatermark(String), setCurrentWatermark(SubstanceWatermark), registerWatermarkChangeListener(WatermarkChangeListener), unregisterWatermarkChangeListener(WatermarkChangeListener), WATERMARK_PROPERTY

getAllWatermarks

public static java.util.Map<java.lang.String,WatermarkInfo> getAllWatermarks()
Returns all available watermarks.

Returns:
All available watermarks. Key - watermark name, value - watermark information.

getCurrentWatermark

public static SubstanceWatermark getCurrentWatermark()
Returns the current watermark.

Returns:
The current watermark.
See Also:
getCurrentWatermarkName(), setCurrentWatermark(String), setCurrentWatermark(SubstanceWatermark), registerWatermarkChangeListener(WatermarkChangeListener), unregisterWatermarkChangeListener(WatermarkChangeListener), WATERMARK_PROPERTY

setCurrentWatermark

public static boolean setCurrentWatermark(java.lang.String watermarkClassName)
Sets new watermark.

Parameters:
watermarkClassName - Watermark class name (full qualified).
Returns:
The status of the watermark change.
See Also:
getCurrentWatermark(), getCurrentWatermarkName(), setCurrentWatermark(SubstanceWatermark), registerWatermarkChangeListener(WatermarkChangeListener), unregisterWatermarkChangeListener(WatermarkChangeListener), WATERMARK_PROPERTY

setCurrentWatermark

public static boolean setCurrentWatermark(SubstanceWatermark currentWatermark)
Sets new watermark.

Parameters:
currentWatermark - Watermark object.
Returns:
The status of the watermark change.
See Also:
getCurrentWatermark(), getCurrentWatermarkName(), setCurrentWatermark(String), registerWatermarkChangeListener(WatermarkChangeListener), unregisterWatermarkChangeListener(WatermarkChangeListener), WATERMARK_PROPERTY

getCurrentButtonShaperName

public static java.lang.String getCurrentButtonShaperName()
Returns the current button shaper name.

Returns:
Current button shaper name.
See Also:
getCurrentButtonShaperName(), setCurrentButtonShaper(String), setCurrentButtonShaper(SubstanceButtonShaper), registerButtonShaperChangeListener(ButtonShaperChangeListener), unregisterButtonShaperChangeListener(ButtonShaperChangeListener), BUTTON_SHAPER_PROPERTY

getAllButtonShapers

public static java.util.Map<java.lang.String,ButtonShaperInfo> getAllButtonShapers()
Returns all available button shapers.

Returns:
All available button shapers. Key - button shaper name, value - button shaper information.

getCurrentButtonShaper

public static SubstanceButtonShaper getCurrentButtonShaper()
Returns the current button shaper.

Returns:
The current button shaper.
See Also:
getCurrentButtonShaperName(), setCurrentButtonShaper(String), setCurrentButtonShaper(SubstanceButtonShaper), registerButtonShaperChangeListener(ButtonShaperChangeListener), unregisterButtonShaperChangeListener(ButtonShaperChangeListener), BUTTON_SHAPER_PROPERTY

setCurrentButtonShaper

public static boolean setCurrentButtonShaper(java.lang.String buttonShaperClassName)
Sets new button shaper.

Parameters:
buttonShaperClassName - Button shaper class name (full qualified).
Returns:
The status of the button shaper change.
See Also:
getCurrentButtonShaper(), getCurrentButtonShaperName(), setCurrentButtonShaper(SubstanceButtonShaper), registerButtonShaperChangeListener(ButtonShaperChangeListener), unregisterButtonShaperChangeListener(ButtonShaperChangeListener), BUTTON_SHAPER_PROPERTY

setCurrentButtonShaper

public static boolean setCurrentButtonShaper(SubstanceButtonShaper currentButtonShaper)
Sets new button shaper.

Parameters:
currentButtonShaper - Button shaper object.
Returns:
The status of the button shaper change.
See Also:
getCurrentButtonShaper(), getCurrentButtonShaperName(), setCurrentButtonShaper(String), registerButtonShaperChangeListener(ButtonShaperChangeListener), unregisterButtonShaperChangeListener(ButtonShaperChangeListener), BUTTON_SHAPER_PROPERTY

getCurrentGradientPainterName

public static java.lang.String getCurrentGradientPainterName()
Returns the current gradient painter name.

Returns:
Current gradient painter name.
See Also:
getCurrentGradientPainter(), setCurrentGradientPainter(String), setCurrentGradientPainter(SubstanceGradientPainter), registerGradientPainterChangeListener(GradientPainterChangeListener), unregisterGradientPainterChangeListener(GradientPainterChangeListener), GRADIENT_PAINTER_PROPERTY

getAllGradientPainters

public static java.util.Map<java.lang.String,GradientPainterInfo> getAllGradientPainters()
Returns all available gradient painters.

Returns:
All available gradient painters. Key - gradient painter name, value - gradient painter information.

getCurrentGradientPainter

public static SubstanceGradientPainter getCurrentGradientPainter()
Returns the current gradient painter.

Returns:
The current gradient painter.
See Also:
getCurrentGradientPainterName(), setCurrentGradientPainter(String), setCurrentGradientPainter(SubstanceGradientPainter), registerGradientPainterChangeListener(GradientPainterChangeListener), unregisterGradientPainterChangeListener(GradientPainterChangeListener), GRADIENT_PAINTER_PROPERTY

setCurrentGradientPainter

public static boolean setCurrentGradientPainter(java.lang.String gradientPainterClassName)
Sets new gradient painter.

Parameters:
gradientPainterClassName - Gradient painter class name (full qualified).
Returns:
The status of the gradient painter change.
See Also:
getCurrentGradientPainter(), getCurrentGradientPainterName(), setCurrentGradientPainter(SubstanceGradientPainter), registerGradientPainterChangeListener(GradientPainterChangeListener), unregisterGradientPainterChangeListener(GradientPainterChangeListener), GRADIENT_PAINTER_PROPERTY

setCurrentGradientPainter

public static boolean setCurrentGradientPainter(SubstanceGradientPainter currentGradientPainter)
Sets new gradient painter.

Parameters:
currentGradientPainter - Gradient painter object.
Returns:
The status of the gradient painter change.
See Also:
getCurrentGradientPainter(), getCurrentGradientPainterName(), setCurrentGradientPainter(String), registerGradientPainterChangeListener(GradientPainterChangeListener), unregisterGradientPainterChangeListener(GradientPainterChangeListener), GRADIENT_PAINTER_PROPERTY

getCurrentTitlePainterName

public static java.lang.String getCurrentTitlePainterName()
Returns the current title painter name.

Returns:
Current title painter name.
Since:
version 3.0
See Also:
getCurrentTitlePainter(), setCurrentTitlePainter(String), setCurrentTitlePainter(SubstanceTitlePainter), registerTitlePainterChangeListener(TitlePainterChangeListener), unregisterTitlePainterChangeListener(TitlePainterChangeListener), TITLE_PAINTER_PROPERTY

getAllTitlePainters

public static java.util.Map<java.lang.String,TitlePainterInfo> getAllTitlePainters()
Returns all available title painters.

Returns:
All available title painters. Key - title painter name, value - title painter information.
Since:
version 3.0

getCurrentTitlePainter

public static SubstanceTitlePainter getCurrentTitlePainter()
Returns the current title painter.

Returns:
The current title painter.
Since:
version 3.0
See Also:
getCurrentTitlePainterName(), setCurrentTitlePainter(String), setCurrentTitlePainter(SubstanceTitlePainter), registerTitlePainterChangeListener(TitlePainterChangeListener), unregisterTitlePainterChangeListener(TitlePainterChangeListener), TITLE_PAINTER_PROPERTY

setCurrentTitlePainter

public static boolean setCurrentTitlePainter(java.lang.String titlePainterClassName)
Sets new title painter.

Parameters:
titlePainterClassName - Title painter class name (full qualified).
Returns:
The status of the title painter change.
Since:
version 3.0
See Also:
getCurrentTitlePainter(), getCurrentTitlePainterName(), setCurrentTitlePainter(SubstanceTitlePainter), registerTitlePainterChangeListener(TitlePainterChangeListener), unregisterTitlePainterChangeListener(TitlePainterChangeListener), TITLE_PAINTER_PROPERTY

setCurrentTitlePainter

public static boolean setCurrentTitlePainter(SubstanceTitlePainter currentTitlePainter)
Sets new title painter.

Parameters:
currentTitlePainter - Title painter object.
Returns:
The status of the title painter change.
Since:
version 3.0
See Also:
getCurrentTitlePainter(), getCurrentTitlePainterName(), setCurrentTitlePainter(String), registerTitlePainterChangeListener(TitlePainterChangeListener), unregisterTitlePainterChangeListener(TitlePainterChangeListener), TITLE_PAINTER_PROPERTY

getCurrentBorderPainterName

public static java.lang.String getCurrentBorderPainterName()
Returns the current border painter name.

Returns:
Current border painter name.
Since:
version 4.0
See Also:
getCurrentBorderPainter(), setCurrentBorderPainter(String), setCurrentBorderPainter(SubstanceBorderPainter), registerBorderPainterChangeListener(BorderPainterChangeListener), unregisterBorderPainterChangeListener(BorderPainterChangeListener), BORDER_PAINTER_PROPERTY

getAllBorderPainters

public static java.util.Map<java.lang.String,BorderPainterInfo> getAllBorderPainters()
Returns all available border painters.

Returns:
All available border painters. Key - border painter name, value - border painter information.
Since:
version 4.0

getCurrentBorderPainter

public static SubstanceBorderPainter getCurrentBorderPainter()
Returns the current Border painter.

Returns:
The current Border painter.
Since:
version 4.0
See Also:
getCurrentBorderPainterName(), setCurrentBorderPainter(String), setCurrentBorderPainter(SubstanceBorderPainter), registerBorderPainterChangeListener(BorderPainterChangeListener), unregisterBorderPainterChangeListener(BorderPainterChangeListener), BORDER_PAINTER_PROPERTY

setCurrentBorderPainter

public static boolean setCurrentBorderPainter(java.lang.String borderPainterClassName)
Sets new border painter.

Parameters:
borderPainterClassName - Border painter class name (full qualified).
Returns:
The status of the border painter change.
Since:
version 4.0
See Also:
getCurrentBorderPainter(), getCurrentBorderPainterName(), setCurrentBorderPainter(SubstanceBorderPainter), registerBorderPainterChangeListener(BorderPainterChangeListener), unregisterBorderPainterChangeListener(BorderPainterChangeListener), BORDER_PAINTER_PROPERTY

setCurrentBorderPainter

public static boolean setCurrentBorderPainter(SubstanceBorderPainter currentBorderPainter)
Sets new border painter.

Parameters:
currentBorderPainter - Border painter object.
Returns:
The status of the border painter change.
Since:
version 4.0
See Also:
getCurrentBorderPainter(), getCurrentBorderPainterName(), setCurrentBorderPainter(String), registerBorderPainterChangeListener(BorderPainterChangeListener), unregisterBorderPainterChangeListener(BorderPainterChangeListener), BORDER_PAINTER_PROPERTY

getDescription

public java.lang.String getDescription()
Specified by:
getDescription in class javax.swing.LookAndFeel

getID

public java.lang.String getID()
Specified by:
getID in class javax.swing.LookAndFeel

getName

public java.lang.String getName()
Specified by:
getName in class javax.swing.LookAndFeel

isNativeLookAndFeel

public boolean isNativeLookAndFeel()
Specified by:
isNativeLookAndFeel in class javax.swing.LookAndFeel

isSupportedLookAndFeel

public boolean isSupportedLookAndFeel()
Specified by:
isSupportedLookAndFeel in class javax.swing.LookAndFeel

initClassDefaults

protected void initClassDefaults(javax.swing.UIDefaults table)
Overrides:
initClassDefaults in class javax.swing.plaf.basic.BasicLookAndFeel

initComponentDefaults

protected void initComponentDefaults(javax.swing.UIDefaults table)
Overrides:
initComponentDefaults in class javax.swing.plaf.basic.BasicLookAndFeel

setFontPolicy

public static void setFontPolicy(FontPolicy fontPolicy)
Sets the FontPolicy to be used with Substance family. If the specified policy is null, the default will be reset. Note that after calling this method you need to call UIManager.setLookAndFeel(LookAndFeel) with Substance and SwingUtilities.updateComponentTreeUI(Component) to have the new font policy applied to your windows.

Parameters:
fontPolicy - The FontPolicy to be used with Substance family, or null to reset to the default
See Also:
getFontPolicy(), SUBSTANCE_FONT_POLICY_KEY

getFontPolicy

public static FontPolicy getFontPolicy()
Looks up and retrieves the FontPolicy used by the Substance family. If a FontPolicy has been set, it'll be returned. Otherwise, this method checks if a FontPolicy or FontSet is defined in the system properties or UIDefaults. If so, it is returned. If no FontPolicy has been set for this look, in the system properties or UIDefaults, the default Substance font policy will be returned.

Returns:
the FontPolicy set for this Look&feel - if any, the FontPolicy specified in the system properties or UIDefaults - if any, or the default Substance font policy.
See Also:
setFontPolicy(org.jvnet.substance.fonts.FontPolicy), FontPolicies, FontPolicies.customSettingsPolicy(FontPolicy)

getDefaults

public javax.swing.UIDefaults getDefaults()
Overrides:
getDefaults in class javax.swing.plaf.basic.BasicLookAndFeel

initialize

public void initialize()
Overrides:
initialize in class javax.swing.plaf.basic.BasicLookAndFeel

uninitialize

public void uninitialize()
Overrides:
uninitialize in class javax.swing.plaf.basic.BasicLookAndFeel

stopThreads

public static void stopThreads()
Stops all Substance threads. Use with extreme caution - improper use may result in UI artifacts and runtime exceptions. In general, this method is for internal use only.


getPlugins

public static java.util.Set getPlugins()
Returns all available plugins. Each entry is LafPlugin.

Returns:
All available plugins.

registerSkinChangeListener

public static void registerSkinChangeListener(SkinChangeListener skinChangeListener)
Registers a new listener on skin change.

Parameters:
skinChangeListener - New listener on skin change.
See Also:
setSkin(String), setSkin(SubstanceSkin), unregisterSkinChangeListener(SkinChangeListener)

unregisterSkinChangeListener

public static void unregisterSkinChangeListener(SkinChangeListener skinChangeListener)
Unregisters a listener on skin change.

Parameters:
skinChangeListener - The listener to unregister.
See Also:
setSkin(String), setSkin(SubstanceSkin), registerSkinChangeListener(SkinChangeListener)

registerThemeChangeListener

public static void registerThemeChangeListener(ThemeChangeListener themeChangeListener)
Registers a new listener on theme change.

Parameters:
themeChangeListener - New listener on theme change.
See Also:
getCurrentThemeName(), getTheme(), setCurrentTheme(String), setCurrentTheme(SubstanceTheme), setCurrentTheme(ThemeInfo), unregisterThemeChangeListener(ThemeChangeListener), THEME_PROPERTY

unregisterThemeChangeListener

public static void unregisterThemeChangeListener(ThemeChangeListener themeChangeListener)
Unregisters a listener on theme change.

Parameters:
themeChangeListener - The listener to unregister.
See Also:
getCurrentThemeName(), getTheme(), setCurrentTheme(String), setCurrentTheme(SubstanceTheme), setCurrentTheme(ThemeInfo), registerThemeChangeListener(ThemeChangeListener), THEME_PROPERTY

registerWatermarkChangeListener

public static void registerWatermarkChangeListener(WatermarkChangeListener watermarkChangeListener)
Registers a new listener on watermark change.

Parameters:
watermarkChangeListener - New listener on watermark change.
See Also:
getCurrentWatermark(), getCurrentWatermarkName(), setCurrentWatermark(String), setCurrentWatermark(SubstanceWatermark), unregisterWatermarkChangeListener(WatermarkChangeListener), WATERMARK_PROPERTY

unregisterWatermarkChangeListener

public static void unregisterWatermarkChangeListener(WatermarkChangeListener watermarkChangeListener)
Unregisters a listener on watermark change.

Parameters:
watermarkChangeListener - The listener to unregister.
See Also:
getCurrentWatermark(), getCurrentWatermarkName(), setCurrentWatermark(String), setCurrentWatermark(SubstanceWatermark), registerWatermarkChangeListener(WatermarkChangeListener), WATERMARK_PROPERTY

registerButtonShaperChangeListener

public static void registerButtonShaperChangeListener(ButtonShaperChangeListener buttonShaperChangeListener)
Registers a new listener on button shaper change.

Parameters:
buttonShaperChangeListener - New listener on button shaper change.
See Also:
getCurrentButtonShaper(), getCurrentButtonShaperName(), setCurrentButtonShaper(String), setCurrentButtonShaper(SubstanceButtonShaper), unregisterButtonShaperChangeListener(ButtonShaperChangeListener), BUTTON_SHAPER_PROPERTY

unregisterButtonShaperChangeListener

public static void unregisterButtonShaperChangeListener(ButtonShaperChangeListener buttonShaperChangeListener)
Unregisters a listener on button shaper change.

Parameters:
buttonShaperChangeListener - The listener to unregister.
See Also:
getCurrentButtonShaper(), getCurrentButtonShaperName(), setCurrentButtonShaper(String), setCurrentButtonShaper(SubstanceButtonShaper), registerButtonShaperChangeListener(ButtonShaperChangeListener), BUTTON_SHAPER_PROPERTY

registerGradientPainterChangeListener

public static void registerGradientPainterChangeListener(GradientPainterChangeListener gradientPainterChangeListener)
Registers a new listener on gradient painter change.

Parameters:
gradientPainterChangeListener - New listener on gradient painter change.
See Also:
getCurrentGradientPainter(), getCurrentGradientPainterName(), setCurrentGradientPainter(String), setCurrentGradientPainter(SubstanceGradientPainter), unregisterGradientPainterChangeListener(GradientPainterChangeListener), GRADIENT_PAINTER_PROPERTY

unregisterGradientPainterChangeListener

public static void unregisterGradientPainterChangeListener(GradientPainterChangeListener gradientPainterChangeListener)
Unregisters a listener on gradient painter change.

Parameters:
gradientPainterChangeListener - The listener to unregister.
See Also:
getCurrentGradientPainter(), getCurrentGradientPainterName(), setCurrentGradientPainter(String), setCurrentGradientPainter(SubstanceGradientPainter), registerGradientPainterChangeListener(GradientPainterChangeListener), GRADIENT_PAINTER_PROPERTY

registerTitlePainterChangeListener

public static void registerTitlePainterChangeListener(TitlePainterChangeListener titlePainterChangeListener)
Registers a new listener on title painter change.

Parameters:
titlePainterChangeListener - New listener on title painter change.
See Also:
getCurrentTitlePainter(), getCurrentTitlePainterName(), setCurrentTitlePainter(String), setCurrentTitlePainter(SubstanceTitlePainter), unregisterTitlePainterChangeListener(TitlePainterChangeListener), TITLE_PAINTER_PROPERTY

unregisterTitlePainterChangeListener

public static void unregisterTitlePainterChangeListener(TitlePainterChangeListener titlePainterChangeListener)
Unregisters a listener on title painter change.

Parameters:
titlePainterChangeListener - The listener to unregister.
See Also:
getCurrentTitlePainter(), getCurrentTitlePainterName(), setCurrentTitlePainter(String), setCurrentTitlePainter(SubstanceTitlePainter), registerTitlePainterChangeListener(TitlePainterChangeListener), TITLE_PAINTER_PROPERTY

registerBorderPainterChangeListener

public static void registerBorderPainterChangeListener(BorderPainterChangeListener borderPainterChangeListener)
Registers a new listener on border painter change.

Parameters:
borderPainterChangeListener - New listener on border painter change.
See Also:
getCurrentBorderPainter(), getCurrentBorderPainterName(), setCurrentBorderPainter(String), setCurrentBorderPainter(SubstanceBorderPainter), unregisterBorderPainterChangeListener(BorderPainterChangeListener), BORDER_PAINTER_PROPERTY

unregisterBorderPainterChangeListener

public static void unregisterBorderPainterChangeListener(BorderPainterChangeListener borderPainterChangeListener)
Unregisters a listener on border painter change.

Parameters:
borderPainterChangeListener - The listener to unregister.
See Also:
getCurrentBorderPainter(), getCurrentBorderPainterName(), setCurrentBorderPainter(String), setCurrentBorderPainter(SubstanceBorderPainter), registerBorderPainterChangeListener(BorderPainterChangeListener), BORDER_PAINTER_PROPERTY

registerTabCloseChangeListener

public static void registerTabCloseChangeListener(BaseTabCloseListener tabCloseListener)
Registers the specified listener on tab-close events on all tabbed panes.

Parameters:
tabCloseListener - Listener to register.
See Also:
registerTabCloseChangeListener(JTabbedPane, BaseTabCloseListener), unregisterTabCloseChangeListener(BaseTabCloseListener), unregisterTabCloseChangeListener(JTabbedPane, BaseTabCloseListener)

registerTabCloseChangeListener

public static void registerTabCloseChangeListener(javax.swing.JTabbedPane tabbedPane,
                                                  BaseTabCloseListener tabCloseListener)
Registers the specified listener on tab-close events on the specified tabbed pane.

Parameters:
tabbedPane - Tabbed pane. If null, the tab close listener is registered globally (for all tabbed panes).
tabCloseListener - Listener to register.
See Also:
registerTabCloseChangeListener(BaseTabCloseListener), unregisterTabCloseChangeListener(BaseTabCloseListener), unregisterTabCloseChangeListener(JTabbedPane, BaseTabCloseListener)

unregisterTabCloseChangeListener

public static void unregisterTabCloseChangeListener(BaseTabCloseListener tabCloseListener)
Unregisters the specified listener on tab-close events on all tabbed panes.

Parameters:
tabCloseListener - Listener to unregister.
See Also:
registerTabCloseChangeListener(BaseTabCloseListener), registerTabCloseChangeListener(JTabbedPane, BaseTabCloseListener), unregisterTabCloseChangeListener(JTabbedPane, BaseTabCloseListener)

unregisterTabCloseChangeListener

public static void unregisterTabCloseChangeListener(javax.swing.JTabbedPane tabbedPane,
                                                    BaseTabCloseListener tabCloseListener)
Unregisters the specified listener on tab-close events on the specified tabbed pane.

Parameters:
tabbedPane - Tabbed pane. If null, the tab close listener is unregistered globally (for all tabbed panes).
tabCloseListener - Listener to unregister.
See Also:
registerTabCloseChangeListener(BaseTabCloseListener), registerTabCloseChangeListener(JTabbedPane, BaseTabCloseListener), unregisterTabCloseChangeListener(BaseTabCloseListener)

getAllTabCloseListeners

public static java.util.Set<BaseTabCloseListener> getAllTabCloseListeners()
Returns the set of all listeners registered on tab-close events on all tabbed panes.

Returns:
Set of all listeners registered on tab-close events on all tabbed panes.

getAllTabCloseListeners

public static java.util.Set<BaseTabCloseListener> getAllTabCloseListeners(javax.swing.JTabbedPane tabbedPane)
Returns all listeners registered on tab closing of the specified tabbed pane.

Parameters:
tabbedPane - A tabbed pane. If null, all globally registered tab close listeners are returned.
Returns:
All listeners registered on tab closing of the specified tabbed pane.

registerLocaleChangeListener

public static void registerLocaleChangeListener(LocaleChangeListener localeListener)
Registers a new listener on locale change.

Parameters:
localeListener - New listener on locale change.

unregisterLocaleChangeListener

public static void unregisterLocaleChangeListener(LocaleChangeListener localeListener)
Unregisters a listener on locale change.

Parameters:
localeListener - The listener to unregister.

getLocaleListeners

public static java.util.Set<LocaleChangeListener> getLocaleListeners()
Returns all listeners registered on locale change.

Returns:
All listeners registered on locale change.

toShowExtraElements

public static boolean toShowExtraElements()
Returns indication whether extra UI elements (such as menu items in system menu or menu search panel) should be shown.

Returns:
true if extra UI elements (such as menu items in system menu or menu search panel) should be shown, false otherwise.

toEnableInvertedThemes

public static boolean toEnableInvertedThemes()
Returns indication whether inverted themes should be enabled.

Returns:
true if inverted themes should be enabled, false otherwise.

toEnableNegatedThemes

public static boolean toEnableNegatedThemes()
Returns indication whether negated themes should be enabled.

Returns:
true if negated themes should be enabled, false otherwise.

toBleedWatermark

public static boolean toBleedWatermark()
Returns indication whether the watermark should "bleed" through list, table and tree renderers (where possible).

Returns:
true if the watermark should "bleed" through list, table and tree renderers (where possible), false otherwise.

isDebugUiMode

public static boolean isDebugUiMode()
Returns indication whether the application is in debug UI mode.

Returns:
true if the application is in debug UI mode, false otherwise.
Since:
version 3.1

getParamReader

public static ParamReader getParamReader()
Returns the parameter reader.

Returns:
Parameter reader.

hideMenuSearchPanels

public static void hideMenuSearchPanels()
Hides menu search panels on all open frames.

See Also:
showMenuSearchPanels()

showMenuSearchPanels

public static void showMenuSearchPanels()
Shows menu search panels on all open frames. For each panel, the menu search panel will be shown only if the corresponding settings allow it.

See Also:
hideMenuSearchPanels()

ignoreAnimationsOnClass

public static void ignoreAnimationsOnClass(java.lang.Class<?> componentClazz)
Requests that animations be ignored on all instances of the specified class.

Parameters:
componentClazz - Component class.

ignoreAnimationsOnClass

public static void ignoreAnimationsOnClass(java.lang.String componentClazzName)
Requests that animations be ignored on all instances of the specified class.

Parameters:
componentClazzName - Component class name.

toIgnoreAnimation

public static boolean toIgnoreAnimation(java.lang.Class<?> componentClazz)
Checks whether animations should be ignored on instances of the specified class.

Parameters:
componentClazz - Component class.
Returns:
true if animations should be ignored on instances of the specified class, false otherwise.

permanentlyShowHeapStatusPanel

public static void permanentlyShowHeapStatusPanel(javax.swing.JRootPane pane)
Makes the heap status panels appear permanently on the specified title pane and removes the corresponding check box menu items from the system menu. Note that heap status panel can be shown only on custom decorated frames / dialogs. Use JFrame.setDefaultLookAndFeelDecorated(boolean) with true or -Dsubstancelaf.useDecorations VM flag to run your app in custom decoration mode.

Parameters:
pane - The root pane.
Throws:
java.lang.IllegalArgumentException - if the heap status panel functionality is not available (was not enabled).
See Also:
permanentlyHideHeapStatusPanel(JRootPane), HEAP_STATUS_PANEL

permanentlyHideHeapStatusPanel

public static void permanentlyHideHeapStatusPanel(javax.swing.JRootPane pane)
Makes the heap status panels disappear permanently on the specified title pane and removes the corresponding check box menu items from the system menu.

Parameters:
pane - The root pane.
Throws:
java.lang.IllegalArgumentException - if the heap status panel functionality is not available (was not enabled).
See Also:
permanentlyShowHeapStatusPanel(JRootPane), HEAP_STATUS_PANEL

setImageWatermarkKind

public static void setImageWatermarkKind(SubstanceConstants.ImageWatermarkKind kind)
Sets the global kind for image-based watermarks.

Parameters:
kind - New value for the global kind for image-based watermarks.
See Also:
getImageWatermarkKind(), getImageWatermarkOpacity(), setImageWatermarkOpacity(float), WATERMARK_IMAGE_KIND, WATERMARK_IMAGE_OPACITY, WATERMARK_IMAGE_PROPERTY

getImageWatermarkKind

public static SubstanceConstants.ImageWatermarkKind getImageWatermarkKind()
Returns the global kind for image-based watermarks.

Returns:
The global kind for image-based watermarks.
See Also:
getImageWatermarkOpacity(), #setImageWatermarkKind(ImageWatermarkKind), setImageWatermarkOpacity(float), WATERMARK_IMAGE_KIND, WATERMARK_IMAGE_OPACITY, WATERMARK_IMAGE_PROPERTY

setImageWatermarkOpacity

public static void setImageWatermarkOpacity(float opacity)
Sets the global opacity for image-based watermarks.

Parameters:
opacity - New value for the global opacity for image-based watermarks. Should be in 0.0-1.0 range.
Throws:
java.lang.IllegalArgumentException - If the value is not in 0.0-1.0 range.
See Also:
getImageWatermarkKind(), getImageWatermarkOpacity(), #setImageWatermarkKind(ImageWatermarkKind), WATERMARK_IMAGE_KIND, WATERMARK_IMAGE_OPACITY, WATERMARK_IMAGE_PROPERTY

getImageWatermarkOpacity

public static float getImageWatermarkOpacity()
Returns the global opacity for image-based watermarks.

Returns:
The global opacity for image-based watermarks. The value is in 0.0-1.0 range.
See Also:
getImageWatermarkKind(), #setImageWatermarkKind(ImageWatermarkKind), setImageWatermarkOpacity(float), WATERMARK_IMAGE_KIND, WATERMARK_IMAGE_OPACITY, WATERMARK_IMAGE_PROPERTY

addMixedTheme

public static void addMixedTheme(SubstanceMixTheme mixedTheme)
Globally registers a new mixed theme.

Parameters:
mixedTheme - A mixed theme to register.
See Also:
addMixedTheme(SubstanceTheme...), addMixedThemeBy(SubstanceTheme), hasMixedThemes(), removeMixedTheme(SubstanceMixTheme), removeMixedThemeBy(SubstanceTheme)

addMixedTheme

public static void addMixedTheme(SubstanceTheme... themes)
Globally registers a new mixed theme.

Parameters:
themes - The base themes for the new mixed theme.
See Also:
addMixedTheme(SubstanceMixTheme), addMixedThemeBy(SubstanceTheme), hasMixedThemes(), removeMixedTheme(SubstanceMixTheme), removeMixedThemeBy(SubstanceTheme)

addMixedThemeBy

public static void addMixedThemeBy(SubstanceTheme mainTheme)
Globally registers a collection of mixed themes such as:

Parameters:
mainTheme - The main theme for the new mixed themes.
See Also:
addMixedTheme(SubstanceMixTheme), addMixedTheme(SubstanceTheme...), hasMixedThemes(), removeMixedTheme(SubstanceMixTheme), removeMixedThemeBy(SubstanceTheme)

removeMixedTheme

public static void removeMixedTheme(SubstanceMixTheme mixedTheme)
Globally unregisters the specified mixed theme.

Parameters:
mixedTheme - The mixed theme to unregister.
See Also:
addMixedTheme(SubstanceMixTheme), addMixedTheme(SubstanceTheme...), addMixedThemeBy(SubstanceTheme), hasMixedThemes(), removeMixedThemeBy(SubstanceTheme)

removeMixedThemeBy

public static void removeMixedThemeBy(SubstanceTheme mainTheme)
Globally unregisters a collection of mixed themes such that the specified theme is the main theme.

Parameters:
mainTheme - The main theme for the mixed themes to be unregistered.
See Also:
addMixedTheme(SubstanceMixTheme), addMixedTheme(SubstanceTheme...), addMixedThemeBy(SubstanceTheme), hasMixedThemes(), removeMixedTheme(SubstanceMixTheme)

hasMixedThemes

public static boolean hasMixedThemes()
Checks whether there are any mixed themes registered globally.

Returns:
true if there is at least one mixed theme registered globally, false otherwise.
See Also:
addMixedTheme(SubstanceMixTheme), addMixedTheme(SubstanceTheme...), addMixedThemeBy(SubstanceTheme), removeMixedTheme(SubstanceMixTheme), removeMixedThemeBy(SubstanceTheme)

isToUseConstantThemesOnDialogs

public static boolean isToUseConstantThemesOnDialogs()
Checks whether the JOptionPanes created with predefined message types should use constant themes for the icons.

Returns:
true if the JOptionPanes created with predefined message types should use constant themes for the icons, false otherwise.
See Also:
setToUseConstantThemesOnDialogs(boolean)

setToUseConstantThemesOnDialogs

public static void setToUseConstantThemesOnDialogs(boolean toUseConstantThemesOnDialogs)
Sets the new setting for the icons of the JOptionPanes created with predefined message types.

Parameters:
toUseConstantThemesOnDialogs - if true, the JOptionPanes created with predefined message types should use constant themes for the icons.
See Also:
isToUseConstantThemesOnDialogs()

setSkin

public static boolean setSkin(SubstanceSkin skin)
Sets the specified skin.

Parameters:
skin - Skin to set.
Returns:
true if the specified skin has been set successfully, false otherwise.
Since:
version 3.1
See Also:
setSkin(SubstanceSkin), registerSkinChangeListener(SkinChangeListener), unregisterSkinChangeListener(SkinChangeListener)

setSkin

public static boolean setSkin(java.lang.String skinClassName)
Sets the specified skin.

Parameters:
skinClassName - Skin to set.
Returns:
true if the specified skin has been set successfully, false otherwise.
Since:
version 3.1
See Also:
setSkin(SubstanceSkin), registerSkinChangeListener(SkinChangeListener), unregisterSkinChangeListener(SkinChangeListener)

getAllSkins

public static java.util.Map<java.lang.String,SkinInfo> getAllSkins()
Returns all available skins.

Returns:
All available skins. Key - skin display name, value - skin information.

getSupportsWindowDecorations

public boolean getSupportsWindowDecorations()
Overrides:
getSupportsWindowDecorations in class javax.swing.LookAndFeel

setLabelBundleClassLoader

public static void setLabelBundleClassLoader(java.lang.ClassLoader labelBundleClassLoader)
Sets the class loader for LABEL_BUNDLE.

Parameters:
labelBundleClassLoader - Class loader for LABEL_BUNDLE.
Since:
version 3.1

getTitlePaneComponent

public static javax.swing.JComponent getTitlePaneComponent(java.awt.Window window)
Returns the title pane of the specified top-level window.

Parameters:
window - Top-level window.
Returns:
If the parameter is either JFrame or JDialog and has custom decorations, the result is the title pane, null otherwise.
Since:
version 3.1

setBackgroundComposite

public static void setBackgroundComposite(java.lang.Class<?> clazz,
                                          ControlBackgroundComposite composite)
Specifies that a control of some class should use the specified background composite when it (the control) doesn't define the BACKGROUND_COMPOSITE client property.

Parameters:
clazz - Component class.
composite - Default background composite for controls of the specified class.

getBackgroundComposite

public static ControlBackgroundComposite getBackgroundComposite(java.awt.Component component)
Returns the default background composite for the specified component.

Parameters:
component - Component.
Returns:
The default background composite for the specified component.