001 /*
002 * $Id: DefaultXTreeCellRenderer.java 3304 2009-03-20 15:11:25Z kleopatra $
003 *
004 * Copyright 2007 Sun Microsystems, Inc., 4150 Network Circle,
005 * Santa Clara, California 95054, U.S.A. All rights reserved.
006 *
007 * This library is free software; you can redistribute it and/or
008 * modify it under the terms of the GNU Lesser General Public
009 * License as published by the Free Software Foundation; either
010 * version 2.1 of the License, or (at your option) any later version.
011 *
012 * This library is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015 * Lesser General Public License for more details.
016 *
017 * You should have received a copy of the GNU Lesser General Public
018 * License along with this library; if not, write to the Free Software
019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
020 *
021 */
022 package org.jdesktop.swingx.tree;
023
024 import javax.swing.UIManager;
025 import javax.swing.tree.DefaultTreeCellRenderer;
026
027 import org.jdesktop.swingx.SwingXUtilities;
028
029 /**
030 * Quick fix for #1061-swingx (which actually is a core issue):
031 * tree icons lost on toggle laf. Updates colors as well -
032 * but beware: this is incomplete as some of super's properties are private!
033 *
034 * Will not do more because in the longer run (as soon as we've fixed the editor issues)
035 * the JXTree's default renderer will be changed to SwingX DefaultTreeRenderer.
036 *
037 * @author Jeanette Winzenburg
038 */
039 public class DefaultXTreeCellRenderer extends DefaultTreeCellRenderer {
040
041 /**
042 * {@inheritDoc} <p>
043 *
044 * Overridden to update icons and colors.
045 */
046 @Override
047 public void updateUI() {
048 super.updateUI();
049 updateIcons();
050 updateColors();
051 }
052
053 /**
054 *
055 */
056 protected void updateColors() {
057 if (SwingXUtilities.isUIInstallable(getTextSelectionColor())) {
058 setTextSelectionColor(UIManager.getColor("Tree.selectionForeground"));
059 }
060 if (SwingXUtilities.isUIInstallable(getTextNonSelectionColor())) {
061 setTextNonSelectionColor(UIManager.getColor("Tree.textForeground"));
062 }
063 if (SwingXUtilities.isUIInstallable(getBackgroundSelectionColor())) {
064 setBackgroundSelectionColor(UIManager.getColor("Tree.selectionBackground"));
065 }
066 if (SwingXUtilities.isUIInstallable(getBackgroundNonSelectionColor())) {
067 setBackgroundNonSelectionColor(UIManager.getColor("Tree.textBackground"));
068 }
069 if (SwingXUtilities.isUIInstallable(getBorderSelectionColor())) {
070 setBorderSelectionColor(UIManager.getColor("Tree.selectionBorderColor"));
071 }
072 // Object value = UIManager.get("Tree.drawsFocusBorderAroundIcon");
073 // drawsFocusBorderAroundIcon = (value != null && ((Boolean)value).
074 // booleanValue());
075 // value = UIManager.get("Tree.drawDashedFocusIndicator");
076 // drawDashedFocusIndicator = (value != null && ((Boolean)value).
077 // booleanValue());
078 }
079
080 /**
081 *
082 */
083 protected void updateIcons() {
084 if (SwingXUtilities.isUIInstallable(getLeafIcon())) {
085 setLeafIcon(UIManager.getIcon("Tree.leafIcon"));
086 }
087 if (SwingXUtilities.isUIInstallable(getClosedIcon())) {
088 setClosedIcon(UIManager.getIcon("Tree.closedIcon"));
089 }
090 if (SwingXUtilities.isUIInstallable(getOpenIcon())) {
091 setOpenIcon(UIManager.getIcon("Tree.openIcon"));
092 }
093
094 }
095
096
097
098 }