org.jdesktop.swingx.decorator
Class ResetDTCRColorHighlighter

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

public class ResetDTCRColorHighlighter
extends ColorHighlighter

This is a hack around DefaultTableCellRenderer color "memory", see Issue #258-swingx.

The issue is that the default has internal color management which is different from other types of renderers. The consequence of the internal color handling is that there's a color memory which must be reset somehow. The "old" hack around reset the xxColors of all types of renderers to the adapter's target XXColors, introducing #178-swingx (Highlighgters must not change any colors except those for which their color properties are explicitly set).

This hack limits the interference to renderers of type DefaultTableCellRenderer, applying a hacking highlighter which resets the renderers XXColors to a previously "memorized" color. Note that setting the color to null didn't have the desired effect.

PENDING: extend ColorHighlighter


Field Summary
 
Fields inherited from class org.jdesktop.swingx.decorator.AbstractHighlighter
listenerList
 
Constructor Summary
ResetDTCRColorHighlighter()
           
 
Method Summary
protected  void applyBackground(Component renderer, ComponentAdapter adapter)
          Applies a suitable background for the renderer component within the specified adapter.
protected  void applyForeground(Component renderer, ComponentAdapter adapter)
          Applies a suitable foreground for the renderer component within the specified adapter.
 Component highlight(Component renderer, ComponentAdapter adapter)
          applies the memory hack for renderers of type DefaultTableCellRenderer, does nothing for other types.
 
Methods inherited from class org.jdesktop.swingx.decorator.ColorHighlighter
doHighlight, getBackground, getForeground, getSelectedBackground, getSelectedForeground, setBackground, setForeground, setSelectedBackground, setSelectedForeground
 
Methods inherited from class org.jdesktop.swingx.decorator.AbstractHighlighter
addChangeListener, areEqual, canHighlight, 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

ResetDTCRColorHighlighter

public ResetDTCRColorHighlighter()
Method Detail

highlight

public Component highlight(Component renderer,
                           ComponentAdapter adapter)
applies the memory hack for renderers of type DefaultTableCellRenderer, does nothing for other types.

Specified by:
highlight in interface Highlighter
Overrides:
highlight in class AbstractHighlighter
Parameters:
renderer - the component to highlight
adapter - the renderee's component state.
Returns:
the decorated cell rendering component
See Also:
AbstractHighlighter.canHighlight(Component, ComponentAdapter), AbstractHighlighter.doHighlight(Component, ComponentAdapter), AbstractHighlighter.getHighlightPredicate()

applyBackground

protected void applyBackground(Component renderer,
                               ComponentAdapter adapter)
Description copied from class: ColorHighlighter
Applies a suitable background for the renderer component within the specified adapter.

This implementation applies its background or selectedBackground color (depending on the adapter's selected state) if != null. Otherwise it does nothing.

Overrides:
applyBackground in class ColorHighlighter
Parameters:
renderer - the cell renderer component that is to be decorated
adapter - the ComponentAdapter for this decorate operation

applyForeground

protected void applyForeground(Component renderer,
                               ComponentAdapter adapter)
Description copied from class: ColorHighlighter
Applies a suitable foreground for the renderer component within the specified adapter.

This implementation applies its foreground or selectedfForeground color (depending on the adapter's selected state) if != null. Otherwise it does nothing.

Overrides:
applyForeground in class ColorHighlighter
Parameters:
renderer - the cell renderer component that is to be decorated
adapter - the ComponentAdapter for this decorate operation