package org.chartsy.chatsy.chat.component; import javax.swing.Icon; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; import java.awt.Component; import java.awt.Font; public class JiveTreeCellRenderer extends DefaultTreeCellRenderer { private Object value; private boolean isExpanded; public JiveTreeCellRenderer() { } public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { this.value = value; final Component c = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); isExpanded = expanded; setIcon(getCustomIcon()); JiveTreeNode node = (JiveTreeNode)value; if (node.getAllowsChildren()) setFont(new Font("Arial", Font.BOLD, 11)); else setFont(new Font("Arial", Font.PLAIN, 11)); return c; } private Icon getCustomIcon() { if (value instanceof JiveTreeNode) { JiveTreeNode node = (JiveTreeNode)value; if (isExpanded) return node.getOpenIcon(); return node.getClosedIcon(); } return null; } public Icon getClosedIcon() { return getCustomIcon(); } public Icon getDefaultClosedIcon() { return getCustomIcon(); } public Icon getDefaultLeafIcon() { return getCustomIcon(); } public Icon getDefaultOpenIcon() { return getCustomIcon(); } public Icon getLeafIcon() { return getCustomIcon(); } public Icon getOpenIcon() { return getCustomIcon(); } }