Package com.cedarsoft.spring.rcp.tree

Source Code of com.cedarsoft.spring.rcp.tree.DelegatingTreeCellRenderer

package com.cedarsoft.spring.rcp.tree;

import org.jetbrains.annotations.NotNull;

import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeCellRenderer;
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;

/**
* A delegating tree cell renderer.
*/
public class DelegatingTreeCellRenderer implements TreeCellRenderer {
  @NotNull
  private final Map<Class<?>, TreeCellRenderer> delegates = new HashMap<Class<?>, TreeCellRenderer>();

  /**
   * Creates a new delegating tree cell renderer. Delegates must be added using {@link #addDelegate(Class, TreeCellRenderer)}
   */
  public DelegatingTreeCellRenderer() {
  }

  /**
   * Creates a new delegateing tree cell renderer
   *
   * @param delegates the delegates
   */
  public DelegatingTreeCellRenderer( @NotNull Map<Class<?>, TreeCellRenderer> delegates ) {
    this.delegates.putAll( delegates );
  }

  /**
   * Adds an delegate for the given type
   *
   * @param type     the type
   * @param delegate the delgate
   */
  public void addDelegate( @NotNull Class<?> type, @NotNull TreeCellRenderer delegate ) {
    this.delegates.put( type, delegate );
  }

  @Override
  @NotNull
  public Component getTreeCellRendererComponent( JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus ) {
    if ( value instanceof DefaultMutableTreeNode ) {
      //noinspection AssignmentToMethodParameter
      value = ( ( DefaultMutableTreeNode ) value ).getUserObject();
    }

    TreeCellRenderer renderer = delegates.get( value.getClass() );
    if ( renderer == null ) {
      throw new IllegalArgumentException( "No renderer found for " + value.getClass().getName() );
    }
    return renderer.getTreeCellRendererComponent( tree, value, selected, expanded, leaf, row, hasFocus );
  }
}
TOP

Related Classes of com.cedarsoft.spring.rcp.tree.DelegatingTreeCellRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.