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 AbstractHighlighter

    java.lang.Object
      org.jdesktop.swingx.decorator.AbstractHighlighter

All Implemented Interfaces:
  Highlighter

Direct Known Subclasses:
  AlignmentHighlighter, BorderHighlighter, ColorHighlighter, CompoundHighlighter, EnabledHighlighter, FontHighlighter, IconHighlighter, PainterHighlighter, ToolTipHighlighter

    public abstract class AbstractHighlighter

extends java.lang.Object
implements Highlighter

Abstract `Highlighter` implementation which manages change notification and supports conditional highlighting. Subclasses are required to fire ChangeEvents on internal changes which might effect the highlight. The HighlightPredicate controls whether or not a highlight should be applied for the given ComponentAdapter, subclasses must guarantee to respect its decision.

Concrete custom implementations should focus on a single (or few) visual attribute to highlight. This allows easy re-use by composition. F.i. a custom FontHighlighter:

     public static class FontHighlighter extends AbstractHighlighter {

         private Font font;

         public FontHighlighter(HighlightPredicate predicate, Font font) {
             super(predicate);
             setFont(font);
         }

         @Override
         protected Component doHighlight(Component component,
                 ComponentAdapter adapter) {
             component.setFont(font);
             return component;
         }

         public final void setFont(Font font) {
            if (equals(font, this.font)) return;
            this.font = font;
            fireStateChanged();
         }

     }

Client code can combine the effect with a f.i. Color decoration, and use a shared HighlightPredicate to apply both for the same condition.

     HighlightPredicate predicate = new HighlightPredicate() {
         public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
             Object value = adapter.getFilteredValueAt(adapter.row, adapter.column);
             return (value instanceof Number) && ((Number) value).intValue() < 0;
         }
     };
     table.setHighlighters(
             new ColorHighlighter(predicate, Color.RED, null),
             new FontHighlighter(predicate, myBoldFont));

Author:
  Jeanette Winzenburg
See Also:
  `HighlightPredicate`, `ComponentProvider`

Field Summary
`protected WeakEventListenerList` | `listenerList` The listeners waiting for model changes.

Constructor Summary
`AbstractHighlighter()` Instantiates a Highlighter with default HighlightPredicate.
`AbstractHighlighter(HighlightPredicate predicate)` Instantiates a Highlighter with the given HighlightPredicate.

Method Summary
`void` | `addChangeListener(javax.swing.event.ChangeListener l)` Adds a `ChangeListener`.
`protected boolean` | `areEqual(java.lang.Object oneItem, java.lang.Object anotherItem)` Returns true if the to objects are either both null or equal each other.
`protected boolean` | `canHighlight(java.awt.Component component, ComponentAdapter adapter)` Subclasses may override to further limit the highlighting based on Highlighter state, f.i.
`protected abstract java.awt.Component` | `doHighlight(java.awt.Component component, ComponentAdapter adapter)` Apply the highlights.
`protected void` | `fireStateChanged()` Notifies registered `ChangeListener`s about state changes.
`javax.swing.event.ChangeListener[]` | `getChangeListeners()` Returns an array of all the change listeners registered on this `Highlighter`.
`HighlightPredicate` | `getHighlightPredicate()` Returns the HighlightPredicate used to decide whether a cell should be highlighted.
`java.awt.Component` | `highlight(java.awt.Component component, ComponentAdapter adapter)` Decorates the specified component for the given component adapter.
`void` | `removeChangeListener(javax.swing.event.ChangeListener l)` Removes a `ChangeListener`e.
`void` | `setHighlightPredicate(HighlightPredicate predicate)` Set the HighlightPredicate used to decide whether a cell should be highlighted.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### listenerList

    protected WeakEventListenerList listenerList

  The listeners waiting for model changes.

Constructor Detail

### AbstractHighlighter

    public AbstractHighlighter()

  Instantiates a Highlighter with default HighlightPredicate.

  See Also:
    `setHighlightPredicate(HighlightPredicate)`

### AbstractHighlighter

    public AbstractHighlighter(HighlightPredicate predicate)

  Instantiates a Highlighter with the given HighlightPredicate.

  Parameters:
    `predicate` - the HighlightPredicate to use.
  See Also:
    `setHighlightPredicate(HighlightPredicate)`

Method Detail

### setHighlightPredicate

    public void setHighlightPredicate(HighlightPredicate predicate)

  Set the HighlightPredicate used to decide whether a cell should be highlighted. If null, sets the predicate to HighlightPredicate.ALWAYS. The default value is HighlightPredicate.ALWAYS.

  Parameters:
    `predicate` - the HighlightPredicate to use.

### getHighlightPredicate

    public HighlightPredicate getHighlightPredicate()

  Returns the HighlightPredicate used to decide whether a cell should be highlighted. Guaranteed to be never null.

  Returns:
    the HighlightPredicate to use, never null.

### 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.

  Specified by:
    `highlight` in interface `Highlighter`
  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:
    `canHighlight(Component, ComponentAdapter)`, `doHighlight(Component, ComponentAdapter)`, `getHighlightPredicate()`

### 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.

  Parameters:
    `component` -
    `adapter` -
  Returns:
    a boolean indication if the adapter can be highlighted based general state. This implementation returns true always.

### doHighlight

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

  Apply the highlights.

  Parameters:
    `component` - the cell renderer component that is to be decorated
    `adapter` - the ComponentAdapter for this decorate operation
  See Also:
    `highlight(Component, ComponentAdapter)`

### areEqual

    protected boolean areEqual(java.lang.Object oneItem,
                               java.lang.Object anotherItem)

  Returns true if the to objects are either both null or equal each other.

  Parameters:
    `oneItem` - one item
    `anotherItem` - another item
  Returns:
    true if both are null or equal other, false otherwise.

### addChangeListener

    public final void addChangeListener(javax.swing.event.ChangeListener l)

  Adds a `ChangeListener`. ChangeListeners are notified after changes of any attribute.

  Specified by:
    `addChangeListener` in interface `Highlighter`
  Parameters:
    `l` - the ChangeListener to add
  See Also:
    `removeChangeListener(javax.swing.event.ChangeListener)`

### removeChangeListener

    public final void removeChangeListener(javax.swing.event.ChangeListener l)

  Removes a `ChangeListener`e.

  Specified by:
    `removeChangeListener` in interface `Highlighter`
  Parameters:
    `l` - the `ChangeListener` to remove
  See Also:
    `addChangeListener(javax.swing.event.ChangeListener)`

### getChangeListeners

    public final javax.swing.event.ChangeListener[] getChangeListeners()

  Returns an array of all the change listeners registered on this `Highlighter`.

  Specified by:
    `getChangeListeners` in interface `Highlighter`
  Returns:
    all of this model's `ChangeListener`s or an empty array if no change listeners are currently registered
  Since:
    1.4
  See Also:
    `addChangeListener(javax.swing.event.ChangeListener)`, `removeChangeListener(javax.swing.event.ChangeListener)`

### fireStateChanged

    protected final void fireStateChanged()

  Notifies registered `ChangeListener`s about state changes.

  Note: subclasses should be polite and implement any property setters to fire only if the property is really changed.

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.