Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.jdesktop.swingx.decorator
Class PainterHighlighter

    java.lang.Object
      org.jdesktop.swingx.decorator.AbstractHighlighter
          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.

     @Override
     protected Component doHighlight(Component renderer, ComponentAdapter adapter) {
          float end = getEndOfGradient((Number) adapter.getValue());
          RelativePainter painter = (RelativePainter) getPainter();
          painter.setXFraction(end);
          ((PainterAware) renderer).setPainter(painter);
          return renderer;
     }

     @Override
     protected boolean canHighlight(Component renderer, ComponentAdapter adapter) {
         return super.canHighlight(renderer, adapter) &&
            (adapter.getValue() instanceof Number);
     }

NOTE: this will change once the Painter api is stable.

Author:
  Jeanette Winzenburg

Field Summary

Fields inherited from class org.jdesktop.swingx.decorator.AbstractHighlighter
`listenerList`

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
`protected boolean` | `canHighlight(java.awt.Component component, ComponentAdapter adapter)` Subclasses may override to further limit the highlighting based on Highlighter state, f.i.
`protected java.beans.PropertyChangeListener` | `createPainterListener()` Creates and returns the property change listener used to listen to changes of the painter.
`protected java.awt.Component` | `doHighlight(java.awt.Component component, ComponentAdapter adapter)` Apply the highlights.
`Painter` | `getPainter()` Returns to Painter used in this Highlighter.
`protected java.beans.PropertyChangeListener` | `getPainterListener()` Lazyly creates and returns the property change listener used to listen to changes of the painter.
`java.awt.Component` | `highlight(java.awt.Component component, ComponentAdapter adapter)` Decorates the specified component for the given component adapter.
`protected void` | `installPainterListener()` Installs a listener to the painter if appropriate.
`void` | `setPainter(Painter painter)` Sets the Painter to use in this Highlighter, may be null.
`protected void` | `uninstallPainterListener()` Uninstalls a listener from the painter if appropriate.

Methods inherited from class org.jdesktop.swingx.decorator.AbstractHighlighter
`addChangeListener, areEqual, fireStateChanged, getChangeListeners, getHighlightPredicate, removeChangeListener, setHighlightPredicate`

Methods inherited from class java.lang.Object
`clone, equals, finalize, 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.

### installPainterListener

    protected void installPainterListener()

  Installs a listener to the painter if appropriate. This implementation registers its painterListener if the Painter is of type AbstractPainter.

### uninstallPainterListener

    protected void uninstallPainterListener()

  Uninstalls a listener from the painter if appropriate. This implementation removes its painterListener if the Painter is of type AbstractPainter.

### getPainterListener

    protected final java.beans.PropertyChangeListener getPainterListener()

  Lazyly creates and returns the property change listener used to listen to changes of the painter.

  Returns:
    the property change listener used to listen to changes of the painter.

### createPainterListener

    protected java.beans.PropertyChangeListener createPainterListener()

  Creates and returns the property change listener used to listen to changes of the painter.

  This implementation fires a stateChanged on receiving any propertyChange, if the isAdjusting flag is false. Otherwise does nothing.

  Returns:
    the property change listener used to listen to changes of the painter.

### 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()`

### doHighlight

    protected java.awt.Component doHighlight(java.awt.Component component,
                                             ComponentAdapter adapter)

  Apply the highlights.

  This implementation sets the painter if it is not null. Does nothing otherwise.

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

### canHighlight

    protected boolean canHighlight(java.awt.Component component,
                                   ComponentAdapter adapter)

  Subclasses may override to further limit the highlighting based on Highlighter state, f.i. a PainterHighlighter can only be applied to PainterAware components.

  This implementation returns true always.

  Overridden to return false if the Painter is null or the component is not of type PainterAware.

  Overrides:
    `canHighlight` in class `AbstractHighlighter`
  Returns:
    a boolean indication if the adapter can be highlighted based general state. This implementation returns true always.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2010. All Rights Reserved.