Class DefaultVisuals<T extends JComponent>

java.lang.Object
org.jdesktop.swingx.renderer.DefaultVisuals<T>
All Implemented Interfaces:
Serializable

public class DefaultVisuals<T extends JComponent> extends Object implements Serializable
Encapsulates the default visual configuration of renderering components, respecting the state of the passed-in CellContext. It's basically re-usable across all types of renderees (JTable, JList, JTree).

Guarantees to completely configure the default visual properties (listed below) of a given component. As a consequence, client code (f.i. in Highlighters) can safely change them without long-lasting visual artefacts.

  • foreground and background, depending on selected and focused state
  • border
  • font
  • Painter (if applicable)
  • enabled
  • componentOrientation
  • toolTipText
  • minimum-, maximum-, preferredSize
  • name
Client code will rarely need to be aware of this class. It's the single place to change on introduction of new properties considered as belonging to the "default visuals" of rendering components.

PENDING: allow mutators for overruling the CellContexts defaults? Would prefer not to, as in the context of SwingX visual config on the renderer level is discouraged (the way to go are Highlighters.

PENDING: not yet quite decided whether the toolTipText property belongs into the visual default config. Doing so gives client code the choice to set it either in a Highlighter or a custom ComponentProvider.

Author:
Jeanette Winzenburg
See Also:
  • Constructor Details

    • DefaultVisuals

      public DefaultVisuals()
  • Method Details

    • setForeground

      public void setForeground(Color c)
      Sets the renderer's unselected-foreground color to the specified color. If not null this color will overrule the default color of the CellContext.
      Parameters:
      c - set the foreground color to this value
    • setBackground

      public void setBackground(Color c)
      Sets the renderer's unselected-background color to the specified color. If not null this color will overrule the default color of the CellContext.
      Parameters:
      c - set the background color to this value
    • configureVisuals

      public void configureVisuals(T renderingComponent, CellContext context)
      Configures all default visual state of the rendering component from the given cell context.
      Parameters:
      renderingComponent - the component to configure, must not be null
      context - the cell context to configure from, must not be null
      Throws:
      NullPointerException - if either renderingComponent or cellContext is null
    • configurePainter

      protected void configurePainter(T renderingComponent, CellContext context)
      Configures the default Painter if applicable. Here: set's to null.
      Parameters:
      renderingComponent - the component to configure, must not be null
      context - the cell context to configure from, must not be null
    • configureState

      protected void configureState(T renderingComponent, CellContext context)
      Configure "divers" visual state of the rendering component from the given cell context.

      Here: synch Font, ComponentOrientation and enabled to context's component. Resets toolTipText to null. Calls configureSizes to reset xxSize if appropriate. Resets the component's name property.

      PENDING: not fully defined - "divers" means everything that's not Colors nor Border nor Painter.

      Parameters:
      renderingComponent - the component to configure, must not be null
      context - the cell context to configure from, must not be null
    • configureSizes

      protected void configureSizes(T renderingComponent, CellContext context)
      Configures min-, max, preferredSize properties of the renderingComponent. Here: set all to null.
      Parameters:
      renderingComponent - the component to configure, must not be null
      context - the cell context to configure from, must not be null
    • configureColors

      protected void configureColors(T renderingComponent, CellContext context)
      Configures colors of rendering component from the given cell context.
      Parameters:
      renderingComponent - the component to configure, must not be null
      context - the cell context to configure from, must not be null
    • configureFocusColors

      protected void configureFocusColors(T renderingComponent, CellContext context)
      Configures focus-related colors form given cell context.

      PENDING: move to context as well? - it's the only comp with focus specifics? Problem is the parameter type...

      Parameters:
      renderingComponent - the component to configure, must not be null
      context - the cell context to configure from, must not be null
    • configureBorder

      protected void configureBorder(T renderingComponent, CellContext context)
      Configures the rendering component's border from the given cell context.
      Parameters:
      renderingComponent - the component to configure, must not be null
      context - the cell context to configure from, must not be null
    • getForeground

      protected Color getForeground(CellContext context)
      Returns the unselected foreground to use for the rendering component.

      Here: returns this renderer's unselected foreground is not null, returns the foreground from the given context. In other words: the renderer's foreground takes precedence if set.

      Parameters:
      context - the cell context.
      Returns:
      the unselected foreground.
    • getBackground

      protected Color getBackground(CellContext context)
      Returns the unselected background to use for the rendering component.

      Here: returns this renderer's unselected background is not null, returns the background from the given context. In other words: the renderer's background takes precedence if set.

      Parameters:
      context - the cell context.
      Returns:
      the unselected background.