/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package practica1.ui;
import java.awt.Color;
import java.awt.Component;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import practica1.controller.Controller;
import practica1.img.Imagenes;
import practica1.logic.LogicExperimento;
import practica1.logic.LogicPoblacion;
/**
* Clase que extiende de DefaultTreeCellRenderer y personaliza como se
* visualiza el jtree
* @author Miguel González - Ceura
*/
public class TreeCellRendererComponent extends DefaultTreeCellRenderer {
/**
* Devuelve el componente que representa un nodo del JTree
* @param tree JTree que llama a renderizar
* @param value Valor a renderizar
* @param selected Si el nodo está seleccionado
* @param expanded Si el nodo está expandido
* @param leaf Si es una hoja
* @param row Fila donde se encuentra
* @param hasFocus Si tiene el foco
* @return Componente que representa el nodo
*/
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(
tree, value, selected,
expanded, leaf, row,
hasFocus);
Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
if(userObject instanceof String) {
setIcon(new ImageIcon(Imagenes.getImagen("experimentos.gif").
getScaledInstance(32, 32, Image.SCALE_DEFAULT)));
}
if(userObject instanceof LogicExperimento) {
setIcon(new ImageIcon(Imagenes.getImagen("experimento.gif").
getScaledInstance(32, 32, Image.SCALE_DEFAULT)));
LogicExperimento exPrin = Controller.getInstance().
getExperimentoPrincipal();
if(exPrin != null) {
if(exPrin.equals(userObject)) {
//Ponemos en negrita
setText("<html><b>" + getText() + "</b></html>");
}
}
if(((LogicExperimento)userObject).isModified()) {
setForeground(Color.RED);
} else {
setForeground(Color.BLACK);
}
}
if(userObject instanceof LogicPoblacion) {
setIcon(new ImageIcon(Imagenes.getImagen("poblacion.gif").
getScaledInstance(24, 24, Image.SCALE_DEFAULT)));
LogicPoblacion pob = (LogicPoblacion) userObject;
if(pob.isModified()) {
setForeground(Color.RED);
} else {
setForeground(Color.BLACK);
}
}
return this;
}
}