Class JXTree.DelegatingRenderer

All Implemented Interfaces:
Serializable, TreeCellRenderer, UIDependent, StringValue, RolloverRenderer
Enclosing class:
JXTree

public class JXTree.DelegatingRenderer extends DefaultTreeRenderer 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 pasted from JXList ;-) PENDING JW: missing override of updateUI in xtree ...

See Also:
  • Constructor Details

    • DelegatingRenderer

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

      public DelegatingRenderer(StringValue sv)
    • DelegatingRenderer

      public DelegatingRenderer(IconValue iv, StringValue sv)
    • DelegatingRenderer

      public DelegatingRenderer(TreeCellRenderer delegate, IconValue iv, StringValue sv)
      Instantiates a DelegatingRenderer with the given delegate. If the delegate is null, the default is created via the trees's factory method.
      Parameters:
      delegate - the delegate to use, if not instanceof DefaultTreeCellRenderer the tree's default is created and used.
      iv - the IconValue to use for mapping a custom icon for a given value
      sv - the converter to use for mapping the content value to a String representation.
  • Method Details

    • setDelegateRenderer

      public void setDelegateRenderer(TreeCellRenderer delegate)
      Sets the delegate. If the delegate is null, the default is created via the tree'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)
      Returns a configured component, appropriate to render the given tree cell.

      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
      Overrides:
      getTreeCellRendererComponent in class DefaultTreeRenderer
      Parameters:
      tree - the JTree, might be null
      value - the value to assign to the cell
      selected - true if cell is selected
      expanded - true if the cell is expanded
      leaf - true if the cell is a leaf
      row - the row of the cell to render
      hasFocus - true if cell has focus
      Returns:
      a component to render the given list cell.
    • isEnabled

      public boolean isEnabled()
      Description copied from class: AbstractRenderer
      Specified by:
      isEnabled in interface RolloverRenderer
      Overrides:
      isEnabled in class AbstractRenderer
      Returns:
      true if rollover effects are on and clickable.
    • doClick

      public void doClick()
      Description copied from class: AbstractRenderer
      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
      Overrides:
      doClick in class AbstractRenderer