/** * $RCSfile: ,v $ * $Revision: $ * $Date: $ * * Copyright (C) 2004-2011 Jive Software. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jivesoftware.spark.component; import javax.swing.Icon; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; import java.awt.Component; import java.awt.Font; /** * <code>JiveTreeCellRenderer</code> class is a bare bone * TreeCellRenderer to easily add icons and not much else. * * @author Derek DeMoro */ public class JiveTreeCellRenderer extends DefaultTreeCellRenderer { private static final long serialVersionUID = -6115204089076392745L; private Object value; private boolean isExpanded; /** * Empty Constructor. */ 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()); // Root Nodes are always bold 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(); } }