org.jdesktop.swingx
Class JXTree.DelegatingRenderer

java.lang.Object
  extended by org.jdesktop.swingx.JXTree.DelegatingRenderer
All Implemented Interfaces:
TreeCellRenderer, RolloverRenderer
Enclosing class:
JXTree

public class JXTree.DelegatingRenderer
extends Object
implements TreeCellRenderer, RolloverRenderer

A decorator for the original TreeCellRenderer. Needed to hook highlighters after messaging the delegate.

PENDING JW: formally implement UIDependent? PENDING JW: missing updateUI anyway (got lost when c&p from JXList ;-) PENDING JW: missing override of updateUI in xtree ...


Constructor Summary
JXTree.DelegatingRenderer()
          Instantiates a DelegatingRenderer with tree's default renderer as delegate.
JXTree.DelegatingRenderer(TreeCellRenderer delegate)
          Instantiates a DelegatingRenderer with the given delegate.
 
Method Summary
 void doClick()
          Same as AbstractButton.doClick().
 TreeCellRenderer getDelegateRenderer()
          Returns the delegate.
 Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus)
          Sets the value of the current tree cell to value.
 boolean isEnabled()
           
 void setClosedIcon(Icon closedIcon)
           
 void setDelegateRenderer(TreeCellRenderer delegate)
          Sets the delegate.
 void setLeafIcon(Icon leafIcon)
           
 void setOpenIcon(Icon openIcon)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JXTree.DelegatingRenderer

public JXTree.DelegatingRenderer()
Instantiates a DelegatingRenderer with tree's default renderer as delegate.


JXTree.DelegatingRenderer

public JXTree.DelegatingRenderer(TreeCellRenderer delegate)
Instantiates a DelegatingRenderer with the given delegate. If the delegate is null, the default is created via the list's factory method.

Parameters:
delegate - the delegate to use, if null the tree's default is created and used.
Method Detail

setDelegateRenderer

public void setDelegateRenderer(TreeCellRenderer delegate)
Sets the delegate. If the delegate is null, the default is created via the list's factory method. Updates the folder/leaf icons. THINK: how to update? always override with this.icons, only if renderer's icons are null, update this icons if they are not, update all if only one is != null.... ??

Parameters:
delegate - the delegate to use, if null the list's default is created and used.

setClosedIcon

public void setClosedIcon(Icon closedIcon)

setOpenIcon

public void setOpenIcon(Icon openIcon)

setLeafIcon

public void setLeafIcon(Icon leafIcon)

getDelegateRenderer

public TreeCellRenderer getDelegateRenderer()
Returns the delegate.

Returns:
the delegate renderer used by this renderer, guaranteed to not-null.

getTreeCellRendererComponent

public Component getTreeCellRendererComponent(JTree tree,
                                              Object value,
                                              boolean selected,
                                              boolean expanded,
                                              boolean leaf,
                                              int row,
                                              boolean hasFocus)
Sets the value of the current tree cell to value. If selected is true, the cell will be drawn as if selected. If expanded is true the node is currently expanded and if leaf is true the node represets a leaf and if hasFocus is true the node currently has focus. tree is the JTree the receiver is being configured for. Returns the Component that the renderer uses to draw the value.

Overridden to apply the highlighters, if any, after calling the delegate. The decorators are not applied if the row is invalid.

Specified by:
getTreeCellRendererComponent in interface TreeCellRenderer
Returns:
the Component that the renderer uses to draw the value

isEnabled

public boolean isEnabled()
Specified by:
isEnabled in interface RolloverRenderer
Returns:
true if rollover effects are on and clickable.

doClick

public void doClick()
Description copied from interface: RolloverRenderer
Same as AbstractButton.doClick(). It's up to client code to prepare the renderer's component before calling this method.

Specified by:
doClick in interface RolloverRenderer