JXTaskPaneAddon.java
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:10k
源码类别:

xml/soap/webservice

开发平台:

Java

  1. /*
  2.  * $Id: JXTaskPaneAddon.java,v 1.6 2005/10/15 09:55:47 l2fprod Exp $
  3.  *
  4.  * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
  5.  * Santa Clara, California 95054, U.S.A. All rights reserved.
  6.  *
  7.  * This library is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  * 
  12.  * This library is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  * 
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with this library; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  20.  */
  21. package org.jdesktop.swingx.plaf;
  22. import java.awt.Color;
  23. import java.awt.Font;
  24. import java.awt.SystemColor;
  25. import java.lang.reflect.Method;
  26. import java.util.Arrays;
  27. import java.util.List;
  28. import javax.swing.UIDefaults;
  29. import javax.swing.UIManager;
  30. import javax.swing.plaf.ColorUIResource;
  31. import javax.swing.plaf.FontUIResource;
  32. import javax.swing.plaf.metal.MetalLookAndFeel;
  33. import org.jdesktop.swingx.JXTaskPane;
  34. import org.jdesktop.swingx.plaf.windows.WindowsClassicLookAndFeelAddons;
  35. import org.jdesktop.swingx.plaf.windows.WindowsLookAndFeelAddons;
  36. import org.jdesktop.swingx.util.JVM;
  37. import org.jdesktop.swingx.util.OS;
  38. /**
  39.  * Addon for <code>JXTaskPane</code>.<br>
  40.  *
  41.  * @author <a href="mailto:fred@L2FProd.com">Frederic Lavigne</a>
  42.  */
  43. public class JXTaskPaneAddon extends AbstractComponentAddon {
  44.   public JXTaskPaneAddon() {
  45.     super("JXTaskPane");
  46.   }
  47.   @Override
  48.   protected void addBasicDefaults(LookAndFeelAddons addon, List<Object> defaults) {
  49.     Font taskPaneFont = UIManager.getFont("Label.font");
  50.     if (taskPaneFont == null) {
  51.       taskPaneFont = new Font("Dialog", Font.PLAIN, 12);
  52.     }
  53.     taskPaneFont = taskPaneFont.deriveFont(Font.BOLD);
  54.     
  55.     Color menuBackground = new ColorUIResource(SystemColor.menu);
  56.     defaults.addAll(Arrays.asList(new Object[]{
  57.       JXTaskPane.uiClassID,
  58.       "org.jdesktop.swingx.plaf.basic.BasicTaskPaneUI",
  59.       "TaskPane.font",
  60.       new FontUIResource(taskPaneFont),        
  61.       "TaskPane.background",
  62.       UIManager.getColor("List.background"),
  63.       "TaskPane.specialTitleBackground",
  64.       new ColorUIResource(menuBackground.darker()),
  65.       "TaskPane.titleBackgroundGradientStart",
  66.       menuBackground,
  67.       "TaskPane.titleBackgroundGradientEnd",
  68.       menuBackground,
  69.       "TaskPane.titleForeground",
  70.       new ColorUIResource(SystemColor.menuText),
  71.       "TaskPane.specialTitleForeground",
  72.       new ColorUIResource(SystemColor.menuText).brighter(),
  73.       "TaskPane.animate",
  74.       Boolean.TRUE,
  75.       "TaskPane.focusInputMap",
  76.       new UIDefaults.LazyInputMap(
  77.         new Object[] {
  78.           "ENTER",
  79.           "toggleExpanded",
  80.           "SPACE",
  81.           "toggleExpanded" }),
  82.     }));
  83.   }
  84.   @Override
  85.   protected void addMetalDefaults(LookAndFeelAddons addon, List<Object> defaults) {
  86.     super.addMetalDefaults(addon, defaults);
  87.     // if using Ocean, use the Glossy l&f
  88.     String taskPaneGroupUI = "org.jdesktop.swingx.plaf.metal.MetalTaskPaneUI";
  89.     if (JVM.current().isOrLater(JVM.JDK1_5)) {
  90.       try {
  91.         Method method = MetalLookAndFeel.class.getMethod("getCurrentTheme");
  92.         Object currentTheme = method.invoke(null);
  93.         if (Class.forName("javax.swing.plaf.metal.OceanTheme").isInstance(
  94.           currentTheme)) {
  95.           taskPaneGroupUI = "org.jdesktop.swingx.plaf.misc.GlossyTaskPaneUI";
  96.         }
  97.       } catch (Exception e) {
  98.       }
  99.     }
  100.     defaults.addAll(Arrays.asList(new Object[]{
  101.       JXTaskPane.uiClassID,
  102.       taskPaneGroupUI,
  103.       "TaskPane.foreground",
  104.       UIManager.getColor("activeCaptionText"),
  105.       "TaskPane.background",
  106.       MetalLookAndFeel.getControl(),
  107.       "TaskPane.specialTitleBackground",
  108.       MetalLookAndFeel.getPrimaryControl(),
  109.       "TaskPane.titleBackgroundGradientStart",
  110.       MetalLookAndFeel.getPrimaryControl(),
  111.       "TaskPane.titleBackgroundGradientEnd",
  112.       MetalLookAndFeel.getPrimaryControlHighlight(),
  113.       "TaskPane.titleForeground",
  114.       MetalLookAndFeel.getControlTextColor(),        
  115.       "TaskPane.specialTitleForeground",
  116.       MetalLookAndFeel.getControlTextColor(),     
  117.       "TaskPane.borderColor",
  118.       MetalLookAndFeel.getPrimaryControl(),
  119.       "TaskPane.titleOver",
  120.       MetalLookAndFeel.getControl().darker(),
  121.       "TaskPane.specialTitleOver",
  122.       MetalLookAndFeel.getPrimaryControlHighlight()        
  123.     }));      
  124.   }
  125.   @Override
  126.   protected void addWindowsDefaults(LookAndFeelAddons addon,
  127.     List<Object> defaults) {
  128.     super.addWindowsDefaults(addon, defaults);
  129.     
  130.     if (addon instanceof WindowsLookAndFeelAddons) {
  131.       defaults.addAll(Arrays.asList(new Object[]{
  132.         JXTaskPane.uiClassID,
  133.         "org.jdesktop.swingx.plaf.windows.WindowsTaskPaneUI"}));
  134.       String xpStyle = OS.getWindowsVisualStyle();
  135.       if (WindowsLookAndFeelAddons.HOMESTEAD_VISUAL_STYLE
  136.         .equalsIgnoreCase(xpStyle)) {        
  137.         defaults.addAll(Arrays.asList(new Object[]{
  138.           "TaskPane.foreground",
  139.           new ColorUIResource(86, 102, 45),
  140.           "TaskPane.background",
  141.           new ColorUIResource(246, 246, 236),
  142.           "TaskPane.specialTitleBackground",
  143.           new ColorUIResource(224, 231, 184),
  144.           "TaskPane.titleBackgroundGradientStart",
  145.           new ColorUIResource(255, 255, 255),
  146.           "TaskPane.titleBackgroundGradientEnd",
  147.           new ColorUIResource(224, 231, 184),
  148.           "TaskPane.titleForeground",
  149.           new ColorUIResource(86, 102, 45),
  150.           "TaskPane.titleOver",
  151.           new ColorUIResource(114, 146, 29),
  152.           "TaskPane.specialTitleForeground",
  153.           new ColorUIResource(86, 102, 45),
  154.           "TaskPane.specialTitleOver",
  155.           new ColorUIResource(114, 146, 29),
  156.           "TaskPane.borderColor",
  157.           new ColorUIResource(255, 255, 255),
  158.         }));
  159.       } else if (WindowsLookAndFeelAddons.SILVER_VISUAL_STYLE
  160.         .equalsIgnoreCase(xpStyle)) {
  161.         defaults.addAll(Arrays.asList(new Object[]{
  162.           "TaskPane.foreground",
  163.           new ColorUIResource(Color.black),
  164.           "TaskPane.background",
  165.           new ColorUIResource(240, 241, 245),
  166.           "TaskPane.specialTitleBackground",
  167.           new ColorUIResource(222, 222, 222),
  168.           "TaskPane.titleBackgroundGradientStart",
  169.           new ColorUIResource(Color.white),
  170.           "TaskPane.titleBackgroundGradientEnd",
  171.           new ColorUIResource(214, 215, 224),
  172.           "TaskPane.titleForeground",
  173.           new ColorUIResource(Color.black),
  174.           "TaskPane.titleOver",
  175.           new ColorUIResource(126, 124, 124),
  176.           "TaskPane.specialTitleForeground",
  177.           new ColorUIResource(Color.black),
  178.           "TaskPane.specialTitleOver",
  179.           new ColorUIResource(126, 124, 124),
  180.           "TaskPane.borderColor",
  181.           new ColorUIResource(Color.white),
  182.         }));
  183.       } else {        
  184.         defaults.addAll(Arrays.asList(new Object[]{
  185.           "TaskPane.foreground",
  186.           new ColorUIResource(Color.white),
  187.           "TaskPane.background",
  188.           new ColorUIResource(214, 223, 247),
  189.           "TaskPane.specialTitleBackground",
  190.           new ColorUIResource(33, 89, 201),
  191.           "TaskPane.titleBackgroundGradientStart",
  192.           new ColorUIResource(Color.white),
  193.           "TaskPane.titleBackgroundGradientEnd",
  194.           new ColorUIResource(199, 212, 247),
  195.           "TaskPane.titleForeground",
  196.           new ColorUIResource(33, 89, 201),
  197.           "TaskPane.specialTitleForeground",
  198.           new ColorUIResource(Color.white),
  199.           "TaskPane.borderColor",
  200.           new ColorUIResource(Color.white),
  201.         }));
  202.       }
  203.     }
  204.     
  205.     if (addon instanceof WindowsClassicLookAndFeelAddons) {
  206.       defaults.addAll(Arrays.asList(new Object[]{
  207.         JXTaskPane.uiClassID,
  208.         "org.jdesktop.swingx.plaf.windows.WindowsClassicTaskPaneUI",
  209.         "TaskPane.foreground",
  210.         new ColorUIResource(Color.black),
  211.         "TaskPane.background",
  212.         new ColorUIResource(Color.white),
  213.         "TaskPane.specialTitleBackground",
  214.         new ColorUIResource(10, 36, 106),
  215.         "TaskPane.titleBackgroundGradientStart",
  216.         new ColorUIResource(212, 208, 200),
  217.         "TaskPane.titleBackgroundGradientEnd",
  218.         new ColorUIResource(212, 208, 200),
  219.         "TaskPane.titleForeground",
  220.         new ColorUIResource(Color.black),
  221.         "TaskPane.specialTitleForeground",
  222.         new ColorUIResource(Color.white),
  223.         "TaskPane.borderColor",
  224.         new ColorUIResource(212, 208, 200),
  225.       }));
  226.     }
  227.   }
  228.   
  229.   @Override
  230.   protected void addMacDefaults(LookAndFeelAddons addon, List<Object> defaults) {
  231.     super.addMacDefaults(addon, defaults);
  232.     defaults.addAll(Arrays.asList(new Object[]{
  233.       JXTaskPane.uiClassID,
  234.       "org.jdesktop.swingx.plaf.misc.GlossyTaskPaneUI",
  235.       "TaskPane.background",
  236.       new ColorUIResource(245, 245, 245),
  237.       "TaskPane.titleForeground",
  238.       new ColorUIResource(Color.black),
  239.       "TaskPane.specialTitleBackground",
  240.       new ColorUIResource(188,188,188),
  241.       "TaskPane.specialTitleForeground",
  242.       new ColorUIResource(Color.black),
  243.       "TaskPane.titleBackgroundGradientStart",
  244.       new ColorUIResource(250,250,250),
  245.       "TaskPane.titleBackgroundGradientEnd",
  246.       new ColorUIResource(188,188,188),
  247.       "TaskPane.borderColor",
  248.       new ColorUIResource(97, 97, 97),
  249.       "TaskPane.titleOver",
  250.       new ColorUIResource(125, 125, 97),
  251.       "TaskPane.specialTitleOver",
  252.       new ColorUIResource(125, 125, 97),
  253.     }));
  254.   }
  255.   
  256. }