Class PlasticLookAndFeel

All Implemented Interfaces:
Serializable
Direct Known Subclasses:
Plastic3DLookAndFeel

public class PlasticLookAndFeel extends MetalLookAndFeel
The base class for the JGoodies Plastic look&feel family. Initializes class and component defaults for the Plastic L&f and provides keys and optional features for the Plastic family.
Version:
$Revision: 1.46 $
See Also:
  • Field Details

    • BORDER_STYLE_KEY

      public static final String BORDER_STYLE_KEY
      Client property key to set a border style - shadows the header style.
      See Also:
    • IS_3D_KEY

      public static final String IS_3D_KEY
      Client property key to disable the pseudo 3D effect.
      See Also:
    • DEFAULT_THEME_KEY

      public static final String DEFAULT_THEME_KEY
      A System property key to set the default theme.
      See Also:
    • HIGH_CONTRAST_FOCUS_ENABLED_KEY

      public static final String HIGH_CONTRAST_FOCUS_ENABLED_KEY
      A System property key that indicates that the high contrast focus colors shall be choosen - if applicable. If not set, some focus colors look good but have low contrast. Basically, the low contrast scheme uses the Plastic colors before 1.0.7, and the high contrast scheme is 1.0.7 - 1.0.9.
      See Also:
    • TAB_STYLE_KEY

      protected static final String TAB_STYLE_KEY
      A System property key for the rendering style of the Plastic TabbedPane. Valid values are: default for the Plastic 1.0 tabs, and metal for the Metal L&F tabs.
      See Also:
    • TAB_STYLE_DEFAULT_VALUE

      public static final String TAB_STYLE_DEFAULT_VALUE
      A System property value that indicates that Plastic shall render tabs in the Plastic 1.0 style. This is the default.
      See Also:
    • TAB_STYLE_METAL_VALUE

      public static final String TAB_STYLE_METAL_VALUE
      A System property value that indicates that Plastic shall render tabs in the Metal L&F style.
      See Also:
    • useMetalTabs

      private static boolean useMetalTabs
      Holds whether Plastic uses Metal or Plastic tabbed panes.
    • useHighContrastFocusColors

      private static boolean useHighContrastFocusColors
      Holds whether we are using the high contrast focus colors.
    • installedThemes

      private static List<PlasticTheme> installedThemes
      The List of installed Plastic themes.
    • is3DEnabled

      private static boolean is3DEnabled
      The look-global state for the 3D enablement.
    • selectTextOnKeyboardFocusGained

      private static boolean selectTextOnKeyboardFocusGained
    • THEME_CLASSNAME_PREFIX

      private static final String THEME_CLASSNAME_PREFIX
      See Also:
  • Constructor Details

    • PlasticLookAndFeel

      public PlasticLookAndFeel()
      Constructs the PlasticLookAndFeel, creates the default theme and sets it as current Plastic theme.
  • Method Details

    • getID

      public String getID()
      Overrides:
      getID in class MetalLookAndFeel
    • getName

      public String getName()
      Overrides:
      getName in class MetalLookAndFeel
    • getDescription

      public String getDescription()
      Overrides:
      getDescription in class MetalLookAndFeel
    • getFontPolicy

      public static FontPolicy getFontPolicy()
      Looks up and retrieves the FontPolicy used by the JGoodies Plastic Look&Feel 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 Plastic 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 Plastic font policy.
      See Also:
    • setFontPolicy

      public static void setFontPolicy(FontPolicy fontPolicy)
      Sets the FontPolicy to be used with the JGoodies Plastic L&F family. If the specified policy is null, the default will be reset.
      Parameters:
      fontPolicy - the FontPolicy to be used with the JGoodies Plastic L&F family, or null to reset to the default
      See Also:
    • getMicroLayoutPolicy

      public static MicroLayoutPolicy getMicroLayoutPolicy()
      Looks up and retrieves the MicroLayoutPolicy used by the JGoodies Plastic Look&Fs. If a MicroLayoutPolicy has been set for this look, it'll be returned. Otherwise, the default Plastic micro layout policy will be returned.
      Returns:
      the MicroLayoutPolicy set for this Look&feel - if any, or the default Plastic MicroLayoutPolicy.
      See Also:
    • setMicroLayoutPolicy

      public static void setMicroLayoutPolicy(MicroLayoutPolicy microLayoutPolicy)
      Sets the MicroLayoutPolicy to be used with the JGoodies Plastic L&Fs. If the specified policy is null, the default will be reset.
      Parameters:
      microLayoutPolicy - the MicroLayoutPolicy to be used with the JGoodies Plastic L&Fs, or null to reset to the default
      See Also:
    • is3DEnabled

      protected boolean is3DEnabled()
    • set3DEnabled

      public static void set3DEnabled(boolean b)
    • getTabStyle

      public static String getTabStyle()
    • setTabStyle

      public static void setTabStyle(String tabStyle)
    • getHighContrastFocusColorsEnabled

      public static boolean getHighContrastFocusColorsEnabled()
    • setHighContrastFocusColorsEnabled

      public static void setHighContrastFocusColorsEnabled(boolean b)
    • isSelectTextOnKeyboardFocusGained

      public static boolean isSelectTextOnKeyboardFocusGained()
    • setSelectTextOnKeyboardFocusGained

      public static void setSelectTextOnKeyboardFocusGained(boolean b)
      Sets whether text field text shall be selected when it gains focus via the keyboard. This is enabled on Windows by default and disabled on all other platforms.
      Parameters:
      b - true to enabled, false to disable
    • initialize

      public void initialize()
      Invoked during UIManager#setLookAndFeel. In addition to the superclass behavior, we install the ShadowPopupFactory.
      Overrides:
      initialize in class BasicLookAndFeel
      See Also:
    • uninitialize

      public void uninitialize()
      Invoked during UIManager#setLookAndFeel. In addition to the superclass behavior, we uninstall the ShadowPopupFactory.
      Overrides:
      uninitialize in class BasicLookAndFeel
      See Also:
    • getDisabledIcon

      public Icon getDisabledIcon(JComponent component, Icon icon)
      Returns an icon with a disabled appearance. This method is used to generate a disabled icon when one has not been specified.

      This method will be used only on JDK 5.0 and later.

      Overrides:
      getDisabledIcon in class MetalLookAndFeel
      Parameters:
      component - the component that will display the icon, may be null.
      icon - the icon to generate disabled icon from.
      Returns:
      disabled icon, or null if a suitable icon can not be generated.
    • initClassDefaults

      protected void initClassDefaults(UIDefaults table)
      Initializes the class defaults, that is, overrides some UI delegates with JGoodies Plastic implementations.
      Overrides:
      initClassDefaults in class MetalLookAndFeel
      Parameters:
      table - the UIDefaults table to work with
      See Also:
    • initComponentDefaults

      protected void initComponentDefaults(UIDefaults table)
      Overrides:
      initComponentDefaults in class MetalLookAndFeel
    • initSystemColorDefaults

      protected void initSystemColorDefaults(UIDefaults table)
      Unlike my superclass I register a unified shadow color. This color is used by my ThinBevelBorder class.
      Overrides:
      initSystemColorDefaults in class MetalLookAndFeel
      Parameters:
      table - the UIDefaults table to work with
    • createMyDefaultTheme

      public static PlasticTheme createMyDefaultTheme()
      Creates and returns the default color theme. Honors the current platform and platform flavor - if available.
      Returns:
      the default color theme for the current environment
    • getDefaultXPTheme

      private static String getDefaultXPTheme()
    • getInstalledThemes

      public static List getInstalledThemes()
      Lazily initializes and returns the List of installed color themes.
      Returns:
      a list of installed color/font themes
    • installDefaultThemes

      protected static void installDefaultThemes()
      Install the default color themes.
    • createTheme

      protected static PlasticTheme createTheme(String themeName)
      Creates and returns a color theme from the specified theme name.
      Parameters:
      themeName - the unqualified name of the theme to create
      Returns:
      the associated color theme or null in case of a problem
    • installTheme

      public static void installTheme(PlasticTheme theme)
      Installs a color theme.
      Parameters:
      theme - the theme to install
    • getPlasticTheme

      public static PlasticTheme getPlasticTheme()
      Lazily initializes and returns the PlasticTheme.
      Returns:
      the current PlasticTheme
    • setPlasticTheme

      public static void setPlasticTheme(PlasticTheme theme)
      Sets the theme for colors and fonts used by the Plastic L&F.

      After setting the theme, you need to re-install the Look&Feel, as well as update the UI's of any previously created components - just as if you'd change the Look&Feel.

      Parameters:
      theme - the PlasticTheme to be set
      Throws:
      NullPointerException - if the theme is null.
      See Also:
    • getInternalFrameBorder

      public static BorderUIResource getInternalFrameBorder()
    • getPaletteBorder

      public static BorderUIResource getPaletteBorder()
    • getPrimaryControlDarkShadow

      public static ColorUIResource getPrimaryControlDarkShadow()
    • getPrimaryControlHighlight

      public static ColorUIResource getPrimaryControlHighlight()
    • getPrimaryControlInfo

      public static ColorUIResource getPrimaryControlInfo()
    • getPrimaryControlShadow

      public static ColorUIResource getPrimaryControlShadow()
    • getPrimaryControl

      public static ColorUIResource getPrimaryControl()
    • getControlHighlight

      public static ColorUIResource getControlHighlight()
    • getControlDarkShadow

      public static ColorUIResource getControlDarkShadow()
    • getControl

      public static ColorUIResource getControl()
    • getFocusColor

      public static ColorUIResource getFocusColor()
    • getMenuItemBackground

      public static ColorUIResource getMenuItemBackground()
    • getMenuItemSelectedBackground

      public static ColorUIResource getMenuItemSelectedBackground()
    • getMenuItemSelectedForeground

      public static ColorUIResource getMenuItemSelectedForeground()
    • getWindowTitleBackground

      public static ColorUIResource getWindowTitleBackground()
    • getWindowTitleForeground

      public static ColorUIResource getWindowTitleForeground()
    • getWindowTitleInactiveBackground

      public static ColorUIResource getWindowTitleInactiveBackground()
    • getWindowTitleInactiveForeground

      public static ColorUIResource getWindowTitleInactiveForeground()
    • getSimpleInternalFrameForeground

      public static ColorUIResource getSimpleInternalFrameForeground()
    • getSimpleInternalFrameBackground

      public static ColorUIResource getSimpleInternalFrameBackground()
    • getTitleTextColor

      public static ColorUIResource getTitleTextColor()
    • getTitleTextFont

      public static FontUIResource getTitleTextFont()
    • append

      private static Object[] append(Object[] source, String key, Object value)
      Appends the key and value to the given source array and returns a copy that has the two new elements at its end.
      Returns:
      an array with the key and value appended