Package generic.theme

Class ApplicationThemeManager

java.lang.Object
generic.theme.ThemeManager
generic.theme.ApplicationThemeManager

public class ApplicationThemeManager extends ThemeManager
This is the fully functional ThemeManager that manages themes in a application. To activate the theme functionality, Applications (or tests) must call initialize()
  • Field Details Link icon

  • Constructor Details Link icon

    • ApplicationThemeManager Link icon

      protected ApplicationThemeManager()
  • Method Details Link icon

    • initialize Link icon

      public static void initialize()
      Initialized the Theme and its values for the application.
    • doInitialize Link icon

      protected void doInitialize()
    • restoreThemeValues Link icon

      public void restoreThemeValues()
      Description copied from class: ThemeManager
      Restores all the current application back to the values as specified by the active theme. In other words, reverts any changes to the active theme that haven't been saved.
      Overrides:
      restoreThemeValues in class ThemeManager
    • restoreColor Link icon

      public void restoreColor(String id)
      Description copied from class: ThemeManager
      Restores the current color value for the given color id to the value established by the current theme.
      Overrides:
      restoreColor in class ThemeManager
      Parameters:
      id - the color id to restore back to the original theme value
    • restoreFont Link icon

      public void restoreFont(String id)
      Description copied from class: ThemeManager
      Restores the current font value for the given font id to the value established by the current theme.
      Overrides:
      restoreFont in class ThemeManager
      Parameters:
      id - the font id to restore back to the original theme value
    • restoreIcon Link icon

      public void restoreIcon(String id)
      Description copied from class: ThemeManager
      Restores the current icon value for the given icon id to the value established by the current theme.
      Overrides:
      restoreIcon in class ThemeManager
      Parameters:
      id - the icon id to restore back to the original theme value
    • isChangedColor Link icon

      public boolean isChangedColor(String id)
      Description copied from class: ThemeManager
      Returns true if the color associated with the given id has been changed from the current theme value for that id.
      Overrides:
      isChangedColor in class ThemeManager
      Parameters:
      id - the color id to check if it has been changed
      Returns:
      true if the color associated with the given id has been changed from the current theme value for that id.
    • isChangedFont Link icon

      public boolean isChangedFont(String id)
      Description copied from class: ThemeManager
      Returns true if the font associated with the given id has been changed from the current theme value for that id.
      Overrides:
      isChangedFont in class ThemeManager
      Parameters:
      id - the font id to check if it has been changed
      Returns:
      true if the font associated with the given id has been changed from the current theme value for that id.
    • isChangedIcon Link icon

      public boolean isChangedIcon(String id)
      Description copied from class: ThemeManager
      Returns true if the Icon associated with the given id has been changed from the current theme value for that id.
      Overrides:
      isChangedIcon in class ThemeManager
      Parameters:
      id - the Icon id to check if it has been changed
      Returns:
      true if the Icon associated with the given id has been changed from the current theme value for that id.
    • setTheme Link icon

      public void setTheme(GTheme theme)
      Description copied from class: ThemeManager
      Sets the application's active theme to the given theme.
      Overrides:
      setTheme in class ThemeManager
      Parameters:
      theme - the theme to make active
    • setLookAndFeel Link icon

      public void setLookAndFeel(LafType lafType, boolean useDarkDefaults)
      Description copied from class: ThemeManager
      Sets the current LookAndFeel. This is used by theme editors to allow users to see the effects of changing LookAndFeels when configuring a theme. Setting this different from the activeTheme's LookAndFeel setting means that the current theme is in an unsaved state and causes the ThemeManager.hasThemeChanges() method to return true.
      Overrides:
      setLookAndFeel in class ThemeManager
      Parameters:
      lafType - the LafType to set the LookAndFeel to
      useDarkDefaults - true if the application should used dark defaults with this LookAndFeel
    • setBlinkingCursors Link icon

      public void setBlinkingCursors(boolean b)
      Description copied from class: ThemeManager
      Sets application's blinking cursor state. This will affect all JTextFields, JTextAreas, JTextPanes via UIDefaults. Custom components can also respect this setting by either adding a ThemeListener or overriding JComponent.updateUI()

      NOTE: This method is a bit odd here as it doesn't really apply to a theme. But it requires manipulation of the look and feel which is managed by the theme. If other application level properties come along and also require changing the UIDefaults, perhaps a more general solution might be to add a way for clients to register a callback so that they get a chance to change the UIDefaults map as the look and feel is loaded.

      Overrides:
      setBlinkingCursors in class ThemeManager
      Parameters:
      b - true for blinking text cursors, false for non-blinking text cursors
    • isBlinkingCursors Link icon

      public boolean isBlinkingCursors()
      Description copied from class: ThemeManager
      Returns true if the application should allow blinking cursors, false otherwise. Custom components can use this method to determine if they should have a blinking cursor or not.
      Overrides:
      isBlinkingCursors in class ThemeManager
      Returns:
      true if the application should allow blinking cursors, false otherwise.
    • addTheme Link icon

      public void addTheme(GTheme newTheme)
      Description copied from class: ThemeManager
      Adds the given theme to set of all themes.
      Overrides:
      addTheme in class ThemeManager
      Parameters:
      newTheme - the theme to add
    • deleteTheme Link icon

      public void deleteTheme(GTheme theme)
      Description copied from class: ThemeManager
      Removes the theme from the set of all themes. Also, if the theme has an associated file, the file will be deleted.
      Overrides:
      deleteTheme in class ThemeManager
      Parameters:
      theme - the theme to delete
    • getAllThemes Link icon

      public Set<GTheme> getAllThemes()
      Description copied from class: ThemeManager
      Returns a set of all known themes.
      Overrides:
      getAllThemes in class ThemeManager
      Returns:
      a set of all known themes.
    • getSupportedThemes Link icon

      public List<GTheme> getSupportedThemes()
      Description copied from class: ThemeManager
      Returns a set of all known themes that are supported on the current platform.
      Overrides:
      getSupportedThemes in class ThemeManager
      Returns:
      a set of all known themes that are supported on the current platform.
    • getTheme Link icon

      public GTheme getTheme(String themeName)
      Description copied from class: ThemeManager
      Returns the known theme that has the given name.
      Overrides:
      getTheme in class ThemeManager
      Parameters:
      themeName - the name of the theme to retrieve
      Returns:
      the known theme that has the given name
    • setFont Link icon

      public void setFont(FontValue newValue)
      Description copied from class: ThemeManager
      Updates the current value for the font id in the newValue
      Overrides:
      setFont in class ThemeManager
      Parameters:
      newValue - the new FontValue to install in the current values.
    • setColor Link icon

      public void setColor(ColorValue newValue)
      Description copied from class: ThemeManager
      Updates the current value for the color id in the newValue
      Overrides:
      setColor in class ThemeManager
      Parameters:
      newValue - the new ColorValue to install in the current values.
    • setIcon Link icon

      public void setIcon(IconValue newValue)
      Description copied from class: ThemeManager
      Updates the current value for the Icon id in the newValue
      Overrides:
      setIcon in class ThemeManager
      Parameters:
      newValue - the new IconValue to install in the current values.
    • getGColorUiResource Link icon

      public GColorUIResource getGColorUiResource(String id)
      Gets a UIResource version of the GColor for the given id. Using this method ensures that the same instance is used for a given id. This fixes an issue with some LookAndFeels that internally use '==' comparisons.
      Parameters:
      id - the id to get a GColorUIResource for
      Returns:
      a GColorUIResource for the given id
    • setJavaDefaults Link icon

      public void setJavaDefaults(GThemeValueMap map)
      Sets the map of Java default UI values. These are the UI values defined by the current Java Look and Feel.
      Parameters:
      map - the default theme values defined by the LookAndFeel
    • hasThemeChanges Link icon

      public boolean hasThemeChanges()
      Description copied from class: ThemeManager
      Returns true if there are any unsaved changes to the current theme.
      Overrides:
      hasThemeChanges in class ThemeManager
      Returns:
      true if there are any unsaved changes to the current theme.
    • hasThemeValueChanges Link icon

      public boolean hasThemeValueChanges()
      Description copied from class: ThemeManager
      Returns true if any theme values have changed. This does not take into account the current Look and Feel. Use ThemeManager.hasThemeChanges() to also account for changes to the Look and Feel.
      Overrides:
      hasThemeValueChanges in class ThemeManager
      Returns:
      true if any theme values have changed
    • registerFont Link icon

      public void registerFont(Component component, String fontId)
      Description copied from class: ThemeManager
      Binds the component to the font identified by the given font id. Whenever the font for the font id changes, the component will updated with the new font.
      Overrides:
      registerFont in class ThemeManager
      Parameters:
      component - the component to set/update the font
      fontId - the id of the font to register with the given component
    • registerFont Link icon

      public void registerFont(Component component, String fontId, int fontStyle)
      Description copied from class: ThemeManager
      Binds the component to the font identified by the given font id. Whenever the font for the font id changes, the component will updated with the new font.

      This method is fairly niche and should not be called by most clients. Instead, call ThemeManager.registerFont(Component, String).

      Overrides:
      registerFont in class ThemeManager
      Parameters:
      component - the component to set/update the font
      fontId - the id of the font to register with the given component
      fontStyle - the font style
    • unRegisterFont Link icon

      public void unRegisterFont(JComponent component, String fontId)
      Description copied from class: ThemeManager
      Removes the component and font id binding made in a previous call to ThemeManager.registerFont(Component, String).
      Overrides:
      unRegisterFont in class ThemeManager
      Parameters:
      component - the component to remove
      fontId - the id of the font previously registered
    • buildCurrentValues Link icon

      protected void buildCurrentValues()
      Description copied from class: ThemeManager
      This method is called to create the internal set of theme value used by the application. To do this, we use a layered approach to install values, with the last values added overwriting any pre-existing values with the same key. The values are added in the following order:
       java defaults -> light values -> dark values -> look and feel values -> property file values -> theme values
       

      At the point this method is called, this is the state of these various values:

      • The 'javaValues' are normalized in the form of 'laf.font.TextArea'
      • The 'applicationDefaults' contains values loaded from the theme.properties files:
             font.listing.base
             font.monospaced
             [color]Viewport.background = color.bg
             [laf.font]TextArea.font = font.monospaced
             [laf.boolean]Button.rollover = true
             
      • The 'activeTheme' values are those loaded by the current theme, which has any changes made to the default values
      Overrides:
      buildCurrentValues in class ThemeManager
    • loadThemeFiles Link icon

      protected Collection<GTheme> loadThemeFiles()
    • refreshGThemeValues Link icon

      public void refreshGThemeValues()