org.jdesktop.swingx.decorator
Class PainterHighlighter

java.lang.Object
  extended by org.jdesktop.swingx.decorator.AbstractHighlighter
      extended by org.jdesktop.swingx.decorator.PainterHighlighter
All Implemented Interfaces:
Highlighter

public class PainterHighlighter
extends AbstractHighlighter

Highlighter implementation which uses a Painter to decorate the component.

As Painter implementations can be mutable and Highlighters have the responsibility to notify their own listeners about any changes which might effect the visuals, this class provides api to install/uninstall a listener to the painter, as appropriate. It takes care of Painters of type AbstractHighlighter by registering a PropertyChangeListener. Subclasses might override to correctly handle different types as well.

Subclasses might be implemented to change the Painter during the decoration process, which must not passed-on to the Highlighter's listeners. The default routing is controlled by a flag isAdjusting. This is set/reset in this implementation's highlight method to ease subclass' burden (and to keep backward compatibility with implementations preceding the introduction of the painter listener). That is, subclasses are free to change painter properties during the decoration.

As an example, a ValueBasedPainterHighlighter might safely change any painter property to decorate a component depending on content.


Author:
Jeanette Winzenburg

Constructor Summary
PainterHighlighter()
          Instantiates a PainterHighlighter with null painter and default predicate.
PainterHighlighter(HighlightPredicate predicate)
          Instantiates a PainterHighlighter with null painter which uses the given predicate.
PainterHighlighter(HighlightPredicate predicate, Painter painter)
          Instantiates a PainterHighlighter with the given painter and predicate.
PainterHighlighter(Painter painter)
          Instantiates a PainterHighlighter with the given Painter and default predicate.
 
Method Summary
 Painter getPainter()
          Returns to Painter used in this Highlighter.
 java.awt.Component highlight(java.awt.Component component, ComponentAdapter adapter)
          Decorates the specified component for the given component adapter.
 void setPainter(Painter painter)
          Sets the Painter to use in this Highlighter, may be null.
 
Methods inherited from class org.jdesktop.swingx.decorator.AbstractHighlighter
addChangeListener, getChangeListeners, getHighlightPredicate, removeChangeListener, setHighlightPredicate
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PainterHighlighter

public PainterHighlighter()
Instantiates a PainterHighlighter with null painter and default predicate.


PainterHighlighter

public PainterHighlighter(HighlightPredicate predicate)
Instantiates a PainterHighlighter with null painter which uses the given predicate.

Parameters:
predicate - the HighlightPredicate which controls the highlight application.

PainterHighlighter

public PainterHighlighter(Painter painter)
Instantiates a PainterHighlighter with the given Painter and default predicate.

Parameters:
painter - the painter to use

PainterHighlighter

public PainterHighlighter(HighlightPredicate predicate,
                          Painter painter)
Instantiates a PainterHighlighter with the given painter and predicate.

Parameters:
predicate -
painter -
Method Detail

getPainter

public Painter getPainter()
Returns to Painter used in this Highlighter.

Returns:
the Painter used in this Highlighter, may be null.

setPainter

public void setPainter(Painter painter)
Sets the Painter to use in this Highlighter, may be null. Un/installs the listener to changes painter's properties.

Parameters:
painter - the Painter to uses for decoration.

highlight

public java.awt.Component highlight(java.awt.Component component,
                                    ComponentAdapter adapter)
Decorates the specified component for the given component adapter. This calls doHighlight to apply the decoration if both HighlightPredicate isHighlighted and canHighlight return true. Returns the undecorated component otherwise.

Overridden to set/reset the flag indicating whether or not painter's property changes should be passed on to the Highlighter's listener.

Specified by:
highlight in interface Highlighter
Overrides:
highlight in class AbstractHighlighter
Parameters:
component - the cell renderer component that is to be decorated
adapter - the ComponentAdapter for this decorate operation
Returns:
the decorated cell rendering component
See Also:
AbstractHighlighter.canHighlight(Component, ComponentAdapter), AbstractHighlighter.doHighlight(Component, ComponentAdapter), AbstractHighlighter.getHighlightPredicate()