001 /* 002 * $Id: JXTitledPanelAddon.java,v 1.11 2006/04/12 09:27:48 kleopatra Exp $ 003 * 004 * Copyright 2004 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 package org.jdesktop.swingx.plaf; 022 023 import java.awt.Color; 024 import java.util.Arrays; 025 import java.util.List; 026 027 import javax.swing.UIManager; 028 import javax.swing.plaf.ColorUIResource; 029 import javax.swing.plaf.metal.MetalLookAndFeel; 030 031 import org.jdesktop.swingx.JXTitledPanel; 032 import org.jdesktop.swingx.painter.gradient.BasicGradientPainter; 033 034 /** 035 * Addon for <code>JXTitledPanel</code>.<br> 036 * 037 */ 038 public class JXTitledPanelAddon extends AbstractComponentAddon { 039 040 public JXTitledPanelAddon() { 041 super("JXTitledPanel"); 042 } 043 044 @Override 045 protected void addBasicDefaults(LookAndFeelAddons addon, List<Object> defaults) { 046 super.addBasicDefaults(addon, defaults); 047 defaults.addAll(Arrays.asList(new Object[] { 048 JXTitledPanel.uiClassID, 049 "org.jdesktop.swingx.plaf.metal.MetalTitledPanelUI", 050 "JXTitledPanel.title.font", 051 UIManager.getFont("Button.font"), 052 "JXTitledPanel.title.foreground", new ColorUIResource(Color.WHITE), 053 "JXTitledPanel.title.painter", new PainterUIResource( 054 new BasicGradientPainter(0, 0, Color.LIGHT_GRAY, 0, 1, Color.GRAY)) 055 })); 056 } 057 058 @Override 059 protected void addMetalDefaults(LookAndFeelAddons addon, List<Object> defaults) { 060 super.addMetalDefaults(addon, defaults); 061 062 if (isPlastic()) { 063 defaults.addAll(Arrays.asList(new Object[] { 064 "JXTitledPanel.title.foreground", new ColorUIResource(255, 255, 255), 065 "JXTitledPanel.title.painter", new PainterUIResource( 066 new BasicGradientPainter(0, 0, 067 new Color(49, 121, 242), 068 0, 1, 069 new Color(198, 211, 247) 070 )) 071 })); 072 } else { 073 defaults.addAll(Arrays.asList(new Object[] { 074 "JXTitledPanel.title.foreground", new ColorUIResource(255, 255, 255), 075 "JXTitledPanel.title.painter", new PainterUIResource( 076 new BasicGradientPainter(0, 0, 077 MetalLookAndFeel.getCurrentTheme().getPrimaryControl(), 0, 1, 078 MetalLookAndFeel.getCurrentTheme().getPrimaryControlDarkShadow())) 079 })); 080 } 081 } 082 083 @Override 084 protected void addWindowsDefaults(LookAndFeelAddons addon, List<Object> defaults) { 085 super.addWindowsDefaults(addon, defaults); 086 // JW: copied to get hold of the old colors 087 // "JXTitledPanel.title.foreground", new ColorUIResource(255, 255, 255), 088 // "JXTitledPanel.title.darkBackground", new ColorUIResource(49, 121, 242), 089 // "JXTitledPanel.title.lightBackground", new ColorUIResource(198, 211, 247), 090 091 // JW: hot fix for #291-swingx 092 // was tracked down by Neil Weber - the requested colors are not available in 093 // all LFs, so changed to fall-back to something real 094 // don't understand why this has blown when trying to toggle to Metal... 095 // definitely needs deeper digging 096 defaults.addAll(Arrays.asList(new Object[] { 097 "JXTitledPanel.title.foreground", 098 getSafeColor("InternalFrame.activeTitleForeground", new ColorUIResource(255, 255, 255)), 099 "JXTitledPanel.title.painter", new PainterUIResource( 100 new BasicGradientPainter(0, 0, 101 getSafeColor("InternalFrame.inactiveTitleGradient", new ColorUIResource(49, 121, 242)), 0, 1, 102 getSafeColor("InternalFrame.activeTitleBackground", new ColorUIResource(198, 211, 247)))) 103 })); 104 105 // defaults.addAll(Arrays.asList(new Object[] { 106 // "JXTitledPanel.title.foreground", UIManager.getColor("InternalFrame.activeTitleForeground"), 107 // "JXTitledPanel.title.painter", new PainterUIResource( 108 // new BasicGradientPainter(0, 0, 109 // UIManager.getColor("InternalFrame.inactiveTitleGradient"), 0, 1, 110 // UIManager.getColor("InternalFrame.activeTitleBackground"))) 111 // })); 112 113 114 } 115 116 protected Color getSafeColor(String uiKey, Color fallBack) { 117 Color color = UIManager.getColor(uiKey); 118 if (color == null) { 119 color = fallBack; 120 } 121 return color; 122 } 123 }