package javacodebook.misc.log_gui;

import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.net.URL;
import java.util.logging.Level;

/**
 *
 * @author  Mark Donnermeyer
 */
public class LoggerTreeCellRenderer extends DefaultTreeCellRenderer {
    
    Icon loggerNoLevel;
    Icon loggerWithLevel;
    Icon noLoggerIcon;
    
    public LoggerTreeCellRenderer() {
        super();
        ClassLoader loader = this.getClass().getClassLoader();
        URL url = loader.getResource("javacodebook/misc/log_gui/notset.gif");
        loggerNoLevel = new ImageIcon(url);
        url = loader.getResource("javacodebook/misc/log_gui/set.gif");
        loggerWithLevel = new ImageIcon(url);
        noLoggerIcon = super.getDefaultOpenIcon();
    }
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
        DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
        TreeNodeObject nodeObject = (TreeNodeObject)node.getUserObject();
        if (nodeObject.isLogger()) {
            Level level = nodeObject.getLogger().getLevel();
            if (level == null) {
                super.setClosedIcon(loggerNoLevel);
                super.setOpenIcon(loggerNoLevel);
                super.setLeafIcon(loggerNoLevel);
            }
            else {
                super.setClosedIcon(loggerWithLevel);
                super.setOpenIcon(loggerWithLevel);
                super.setLeafIcon(loggerWithLevel);
            }
        }
        else {
            super.setClosedIcon(noLoggerIcon);
            super.setOpenIcon(noLoggerIcon);
        }
        return super.getTreeCellRendererComponent(tree, value, sel, expanded,  leaf, row, hasFocus);
    }
}