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 }