001 /* 002 * $Id: TaskPaneAddon.java 2474 2007-11-21 17:32:04Z kschaefe $ 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.awt.Font; 025 import java.awt.SystemColor; 026 import java.awt.Toolkit; 027 028 import javax.swing.UIDefaults; 029 import javax.swing.UIManager; 030 import javax.swing.plaf.ColorUIResource; 031 import javax.swing.plaf.FontUIResource; 032 import javax.swing.plaf.metal.MetalLookAndFeel; 033 import javax.swing.plaf.metal.OceanTheme; 034 035 import org.jdesktop.swingx.JXTaskPane; 036 import org.jdesktop.swingx.plaf.windows.WindowsClassicLookAndFeelAddons; 037 import org.jdesktop.swingx.plaf.windows.WindowsLookAndFeelAddons; 038 import org.jdesktop.swingx.util.OS; 039 040 /** 041 * Addon for <code>JXTaskPane</code>.<br> 042 * 043 * @author <a href="mailto:fred@L2FProd.com">Frederic Lavigne</a> 044 * @author Karl Schaefer 045 */ 046 public class TaskPaneAddon extends AbstractComponentAddon { 047 048 public TaskPaneAddon() { 049 super("JXTaskPane"); 050 } 051 052 @Override 053 protected void addBasicDefaults(LookAndFeelAddons addon, DefaultsList defaults) { 054 Font taskPaneFont = UIManagerExt.getSafeFont("Label.font", new Font( 055 "Dialog", Font.PLAIN, 12)); 056 taskPaneFont = taskPaneFont.deriveFont(Font.BOLD); 057 058 Color menuBackground = new ColorUIResource(SystemColor.menu); 059 060 defaults.add(JXTaskPane.uiClassID, "org.jdesktop.swingx.plaf.basic.BasicTaskPaneUI"); 061 defaults.add("TaskPane.font", new FontUIResource(taskPaneFont)); 062 defaults.add("TaskPane.background", UIManagerExt.getSafeColor("List.background", 063 new ColorUIResource(Color.decode("#005C5C")))); 064 defaults.add("TaskPane.specialTitleBackground", new ColorUIResource(menuBackground.darker())); 065 defaults.add("TaskPane.titleBackgroundGradientStart", menuBackground); 066 defaults.add("TaskPane.titleBackgroundGradientEnd", menuBackground); 067 defaults.add("TaskPane.titleForeground", new ColorUIResource(SystemColor.menuText)); 068 defaults.add("TaskPane.specialTitleForeground", new ColorUIResource(SystemColor.menuText.brighter())); 069 defaults.add("TaskPane.animate", Boolean.TRUE); 070 defaults.add("TaskPane.focusInputMap", new UIDefaults.LazyInputMap(new Object[] { 071 "ENTER", "toggleExpanded", 072 "SPACE", "toggleExpanded"})); 073 } 074 075 @Override 076 protected void addLinuxDefaults(LookAndFeelAddons addon, DefaultsList defaults) { 077 addMetalDefaults(addon, defaults); 078 } 079 080 @Override 081 protected void addMetalDefaults(LookAndFeelAddons addon, DefaultsList defaults) { 082 super.addMetalDefaults(addon, defaults); 083 084 if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme) { 085 defaults.add(JXTaskPane.uiClassID, "org.jdesktop.swingx.plaf.misc.GlossyTaskPaneUI"); 086 } else { 087 defaults.add(JXTaskPane.uiClassID, "org.jdesktop.swingx.plaf.metal.MetalTaskPaneUI"); 088 } 089 090 //TODO use safe methods 091 defaults.add("TaskPane.foreground", UIManager.getColor("activeCaptionText")); 092 defaults.add("TaskPane.background", MetalLookAndFeel.getControl()); 093 defaults.add("TaskPane.specialTitleBackground", MetalLookAndFeel.getPrimaryControl()); 094 defaults.add("TaskPane.titleBackgroundGradientStart", MetalLookAndFeel.getPrimaryControl()); 095 defaults.add("TaskPane.titleBackgroundGradientEnd", MetalLookAndFeel.getPrimaryControlHighlight()); 096 defaults.add("TaskPane.titleForeground", MetalLookAndFeel.getControlTextColor()); 097 defaults.add("TaskPane.specialTitleForeground", MetalLookAndFeel.getControlTextColor()); 098 defaults.add("TaskPane.borderColor", MetalLookAndFeel.getPrimaryControl()); 099 defaults.add("TaskPane.titleOver", new ColorUIResource(MetalLookAndFeel.getControl().darker())); 100 defaults.add("TaskPane.specialTitleOver", MetalLookAndFeel.getPrimaryControlHighlight()); 101 } 102 103 @Override 104 protected void addWindowsDefaults(LookAndFeelAddons addon, DefaultsList defaults) { 105 super.addWindowsDefaults(addon, defaults); 106 107 if (addon instanceof WindowsLookAndFeelAddons) { 108 defaults.add(JXTaskPane.uiClassID, "org.jdesktop.swingx.plaf.windows.WindowsTaskPaneUI"); 109 110 String xpStyle = OS.getWindowsVisualStyle(); 111 if (WindowsLookAndFeelAddons.HOMESTEAD_VISUAL_STYLE 112 .equalsIgnoreCase(xpStyle)) { 113 defaults.add("TaskPane.foreground", new ColorUIResource(86, 102, 45)); 114 defaults.add("TaskPane.background", new ColorUIResource(246, 246, 236)); 115 defaults.add("TaskPane.specialTitleBackground", new ColorUIResource(224, 231, 184)); 116 defaults.add("TaskPane.titleBackgroundGradientStart", new ColorUIResource(Color.WHITE)); 117 defaults.add("TaskPane.titleBackgroundGradientEnd", new ColorUIResource(224, 231, 184)); 118 defaults.add("TaskPane.titleForeground", new ColorUIResource(86, 102, 45)); 119 defaults.add("TaskPane.titleOver", new ColorUIResource(114, 146, 29)); 120 defaults.add("TaskPane.specialTitleForeground", new ColorUIResource(86, 102, 45)); 121 defaults.add("TaskPane.specialTitleOver", new ColorUIResource(114, 146, 29)); 122 defaults.add("TaskPane.borderColor", new ColorUIResource(Color.WHITE)); 123 } else if (WindowsLookAndFeelAddons.SILVER_VISUAL_STYLE 124 .equalsIgnoreCase(xpStyle)) { 125 defaults.add("TaskPane.foreground", new ColorUIResource(Color.BLACK)); 126 defaults.add("TaskPane.background", new ColorUIResource(240, 241, 245)); 127 defaults.add("TaskPane.specialTitleBackground", new ColorUIResource(222, 222, 222)); 128 defaults.add("TaskPane.titleBackgroundGradientStart", new ColorUIResource(Color.WHITE)); 129 defaults.add("TaskPane.titleBackgroundGradientEnd", new ColorUIResource(214, 215, 224)); 130 defaults.add("TaskPane.titleForeground", new ColorUIResource(Color.BLACK)); 131 defaults.add("TaskPane.titleOver", new ColorUIResource(126, 124, 124)); 132 defaults.add("TaskPane.specialTitleForeground", new ColorUIResource(Color.BLACK)); 133 defaults.add("TaskPane.specialTitleOver", new ColorUIResource(126, 124, 124)); 134 defaults.add("TaskPane.borderColor", new ColorUIResource(Color.WHITE)); 135 } else if (OS.isWindowsVista()) { 136 //do not need to use safe method since the properties can never return null 137 final Toolkit toolkit = Toolkit.getDefaultToolkit(); 138 139 defaults.add("TaskPane.foreground", new ColorUIResource(Color.WHITE)); 140 defaults.add("TaskPane.background", 141 new ColorUIResource((Color)toolkit.getDesktopProperty("win.3d.backgroundColor"))); 142 defaults.add("TaskPane.specialTitleBackground", new ColorUIResource(33, 89, 201)); 143 defaults.add("TaskPane.titleBackgroundGradientStart", new ColorUIResource(Color.WHITE)); 144 defaults.add("TaskPane.titleBackgroundGradientEnd", 145 new ColorUIResource((Color)toolkit.getDesktopProperty("win.frame.inactiveCaptionColor"))); 146 defaults.add("TaskPane.titleForeground", 147 new ColorUIResource((Color)toolkit.getDesktopProperty("win.frame.inactiveCaptionTextColor"))); 148 defaults.add("TaskPane.specialTitleForeground", new ColorUIResource(Color.WHITE)); 149 defaults.add("TaskPane.borderColor", new ColorUIResource(Color.WHITE)); 150 } else { 151 defaults.add("TaskPane.foreground", new ColorUIResource(Color.WHITE)); 152 defaults.add("TaskPane.background", new ColorUIResource(214, 223, 247)); 153 defaults.add("TaskPane.specialTitleBackground", new ColorUIResource(33, 89, 201)); 154 defaults.add("TaskPane.titleBackgroundGradientStart", new ColorUIResource(Color.WHITE)); 155 defaults.add("TaskPane.titleBackgroundGradientEnd", new ColorUIResource(199, 212, 247)); 156 defaults.add("TaskPane.titleForeground", new ColorUIResource(33, 89, 201)); 157 defaults.add("TaskPane.specialTitleForeground", new ColorUIResource(Color.WHITE)); 158 defaults.add("TaskPane.borderColor", new ColorUIResource(Color.WHITE)); 159 } 160 } 161 162 if (addon instanceof WindowsClassicLookAndFeelAddons) { 163 defaults.add(JXTaskPane.uiClassID, "org.jdesktop.swingx.plaf.windows.WindowsClassicTaskPaneUI"); 164 defaults.add("TaskPane.foreground", new ColorUIResource(Color.BLACK)); 165 defaults.add("TaskPane.background", new ColorUIResource(Color.WHITE)); 166 defaults.add("TaskPane.specialTitleBackground", new ColorUIResource(10, 36, 106)); 167 defaults.add("TaskPane.titleBackgroundGradientStart", new ColorUIResource(212, 208, 200)); 168 defaults.add("TaskPane.titleBackgroundGradientEnd", new ColorUIResource(212, 208, 200)); 169 defaults.add("TaskPane.titleForeground", new ColorUIResource(Color.BLACK)); 170 defaults.add("TaskPane.specialTitleForeground", new ColorUIResource(Color.WHITE)); 171 defaults.add("TaskPane.borderColor", new ColorUIResource(212, 208, 200)); 172 } 173 } 174 175 @Override 176 protected void addMacDefaults(LookAndFeelAddons addon, DefaultsList defaults) { 177 super.addMacDefaults(addon, defaults); 178 179 defaults.add(JXTaskPane.uiClassID, "org.jdesktop.swingx.plaf.misc.GlossyTaskPaneUI"); 180 defaults.add("TaskPane.background", new ColorUIResource(245, 245, 245)); 181 defaults.add("TaskPane.titleForeground", new ColorUIResource(Color.BLACK)); 182 defaults.add("TaskPane.specialTitleBackground", new ColorUIResource(188,188,188)); 183 defaults.add("TaskPane.specialTitleForeground", new ColorUIResource(Color.BLACK)); 184 defaults.add("TaskPane.titleBackgroundGradientStart", new ColorUIResource(250,250,250)); 185 defaults.add("TaskPane.titleBackgroundGradientEnd", new ColorUIResource(188,188,188)); 186 defaults.add("TaskPane.borderColor", new ColorUIResource(97, 97, 97)); 187 defaults.add("TaskPane.titleOver", new ColorUIResource(125, 125, 97)); 188 defaults.add("TaskPane.specialTitleOver", new ColorUIResource(125, 125, 97)); 189 } 190 191 }