/*
 * Fichero: MiRender.java
 * Autor: Chuidiang
 * Fecha: 2/03/07 6:40
 */
package chuidiang.ejemplos;

import java.awt.Component;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeCellRenderer;


/**
 * Un Render propio para árbol
 *
 @author Chuidiang
 *
  */
public class MiRender extends JPanel implements TreeCellRenderer
{
    /**
     * Serial uid para evitar warnings.
     */
    private static final long serialVersionUID = 7187242510053519089L;

    /** Boton con el icono */
    private JButton botonIcono = new JButton();

    /**
     * Botón para el texto
     */
    private JButton botonTexto = new JButton();

    /**
     * Icono para las hojas del arbol
     */
    private ImageIcon iconoHoja = new ImageIcon("d:/futbol.gif");

    /**
     * Icono para nodos abiertos
     */
    private ImageIcon iconoAbierto = new ImageIcon("d:/hombre.gif");

    /**
     * Icono para nodos cerrados
     */
    private ImageIcon iconoCerrado = new ImageIcon("d:/viejo.gif");

    /**
     * Crea un nuevo objeto MiRender.
     */
    public MiRender()
    {
        add(botonIcono);
        add(botonTexto);
        setOpaque(false);
    }

    /**
     * Implementación del método de la interface TreeCellRenderer
     */
    public Component getTreeCellRendererComponent(
        JTree tree, Object value, boolean selected, boolean expanded,
        boolean leaf, int row, boolean hasFocus)
    {
      // Se pone el icono adecuado
        if (leaf)
        {
            botonIcono.setIcon(iconoHoja);
        }
        else if (expanded)
        {
            botonIcono.setIcon(iconoAbierto);
        }
        else
        {
            botonIcono.setIcon(iconoCerrado);
        }

        // Y el texto.
        botonTexto.setText(
            ((DefaultMutableTreeNodevalue).getUserObject().toString());

        return this;
    }
}