001    /*
002     * $Id: TaskPaneContainerAddon.java 3288 2009-03-10 14:36:28Z 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.GradientPaint;
025    import java.awt.Toolkit;
026    
027    import javax.swing.BorderFactory;
028    import javax.swing.plaf.BorderUIResource;
029    import javax.swing.plaf.ColorUIResource;
030    import javax.swing.plaf.metal.MetalLookAndFeel;
031    
032    import org.jdesktop.swingx.JXTaskPaneContainer;
033    import org.jdesktop.swingx.painter.MattePainter;
034    import org.jdesktop.swingx.plaf.windows.WindowsClassicLookAndFeelAddons;
035    import org.jdesktop.swingx.plaf.windows.WindowsLookAndFeelAddons;
036    import org.jdesktop.swingx.util.OS;
037    
038    /**
039     * Addon for <code>JXTaskPaneContainer</code>. This addon defines the following properties:
040     * <table>
041     * <tr><td>TaskPaneContainer.background</td><td>background color</td></tr>
042     * <tr><td>TaskPaneContainer.backgroundPainter</td><td>background painter</td></tr>
043     * <tr><td>TaskPaneContainer.border</td><td>container border</td></tr>
044     * <tr><td>TaskPaneContainer.font</td><td>font (currently unused)</td></tr>
045     * <tr><td>TaskPaneContainer.foreground</td><td>foreground color (currently unused)</td></tr>
046     * </table>
047     *  
048     * @author <a href="mailto:fred@L2FProd.com">Frederic Lavigne</a>
049     * @author Karl Schaefer
050     */
051    public class TaskPaneContainerAddon extends AbstractComponentAddon {
052    
053      public TaskPaneContainerAddon() {
054        super("JXTaskPaneContainer");
055      }
056    
057      @Override
058      protected void addBasicDefaults(LookAndFeelAddons addon, DefaultsList defaults) {
059        super.addBasicDefaults(addon, defaults);
060        
061        defaults.add(JXTaskPaneContainer.uiClassID, "org.jdesktop.swingx.plaf.basic.BasicTaskPaneContainerUI");
062        defaults.add("TaskPaneContainer.background", UIManagerExt.getSafeColor("Desktop.background",
063                            new ColorUIResource(Color.decode("#005C5C"))));
064        defaults.add("TaskPaneContainer.border", new BorderUIResource(BorderFactory.createEmptyBorder(10, 10, 0, 10)));
065      }
066    
067      /**
068       * {@inheritDoc}
069       */
070      @Override
071      protected void addMetalDefaults(LookAndFeelAddons addon, DefaultsList defaults) {
072        super.addMetalDefaults(addon, defaults);
073        
074        defaults.add("TaskPaneContainer.background", MetalLookAndFeel.getDesktopColor());
075      }
076      
077      /**
078       * {@inheritDoc}
079       */
080      @Override
081      protected void addWindowsDefaults(LookAndFeelAddons addon, DefaultsList defaults) {
082        super.addWindowsDefaults(addon, defaults);
083        if (addon instanceof WindowsClassicLookAndFeelAddons) {
084          defaults.add("TaskPaneContainer.background", UIManagerExt.getSafeColor("List.background",
085                    new ColorUIResource(Color.decode("#005C5C"))));
086        } else if (addon instanceof WindowsLookAndFeelAddons) {     
087          String xpStyle = OS.getWindowsVisualStyle();
088          ColorUIResource background;
089          Color backgroundGradientStart;
090          Color backgroundGradientEnd;
091          
092          if (WindowsLookAndFeelAddons.HOMESTEAD_VISUAL_STYLE
093            .equalsIgnoreCase(xpStyle)) {        
094            background = new ColorUIResource(201, 215, 170);
095            backgroundGradientStart = new Color(204, 217, 173);
096            backgroundGradientEnd = new Color(165, 189, 132);
097          } else if (WindowsLookAndFeelAddons.SILVER_VISUAL_STYLE
098            .equalsIgnoreCase(xpStyle)) {
099            background = new ColorUIResource(192, 195, 209);
100            backgroundGradientStart = new Color(196, 200, 212);
101            backgroundGradientEnd = new Color(177, 179, 200);
102          } else {        
103            if (OS.isWindowsVista()) {
104              final Toolkit toolkit = Toolkit.getDefaultToolkit();
105              background = new ColorUIResource((Color)toolkit.getDesktopProperty("win.3d.backgroundColor"));
106              backgroundGradientStart = (Color)toolkit.getDesktopProperty("win.frame.activeCaptionColor");
107              backgroundGradientEnd = (Color)toolkit.getDesktopProperty("win.frame.inactiveCaptionColor");
108            } else {
109              background = new ColorUIResource(117, 150, 227);
110              backgroundGradientStart = new ColorUIResource(123, 162, 231);
111              backgroundGradientEnd = new ColorUIResource(99, 117, 214);
112            }
113          }      
114          
115          defaults.add("TaskPaneContainer.backgroundPainter", new PainterUIResource<JXTaskPaneContainer>(
116                  new MattePainter(new GradientPaint(
117                          0f, 0f, backgroundGradientStart,
118                          0f, 1f, backgroundGradientEnd),
119                          true)));
120          defaults.add("TaskPaneContainer.background", background);
121        }
122      }
123    
124      /**
125       * {@inheritDoc}
126       */
127      @Override
128      protected void addMacDefaults(LookAndFeelAddons addon, DefaultsList defaults) {
129        super.addMacDefaults(addon, defaults);
130        
131        defaults.add("TaskPaneContainer.background", new ColorUIResource(238, 238, 238));
132      }
133    
134    }