home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / jfc.bin / MetalLookAndFeel.java < prev    next >
Text File  |  1998-02-26  |  24KB  |  512 lines

  1. /*   
  2.  * @(#)MetalLookAndFeel.java    1.52 98/02/05
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  * 
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  * 
  19.  */
  20.  
  21. package com.sun.java.swing.plaf.metal;
  22.  
  23. import java.awt.*;
  24. import com.sun.java.swing.plaf.*;
  25. import com.sun.java.swing.*;
  26. import com.sun.java.swing.plaf.basic.*;
  27. import com.sun.java.swing.border.*;
  28.  
  29. import java.awt.Font;
  30. import java.awt.Color;
  31. import java.awt.SystemColor;
  32.  
  33. import java.net.URL;
  34. import java.io.Serializable;
  35.  
  36.  
  37. /**
  38.  * Implements The Metal Look and Feel.
  39.  * <p>
  40.  * Warning: serialized objects of this class will not be compatible with
  41.  * future swing releases.  The current serialization support is appropriate
  42.  * for short term storage or RMI between Swing1.0 applications.  It will
  43.  * not be possible to load serialized Swing1.0 objects with future releases
  44.  * of Swing.  The JDK1.2 release of Swing will be the compatibility
  45.  * baseline for the serialized form of Swing objects.
  46.  *
  47.  * @version 1.52 02/05/98
  48.  * @author Steve Wilson
  49.  */
  50. public class MetalLookAndFeel extends BasicLookAndFeel
  51. {
  52.   
  53.     private static MetalTheme currentTheme;
  54.  
  55.     public String getName() {
  56.     return "Metal Look and Feel";
  57.     }
  58.  
  59.     public String getID() {
  60.     return "Metal";
  61.     }
  62.  
  63.     public String getDescription() {
  64.     return "The Metal Look and Feel";
  65.     }
  66.  
  67.     
  68.     public boolean isNativeLookAndFeel() {
  69.     return false;
  70.     }
  71.  
  72.  
  73.     public boolean isSupportedLookAndFeel() {
  74.         return true;
  75.     }
  76.     
  77.     /** 
  78.      * Initialize the uiClassID to BasicComponentUI mapping.
  79.      * The JComponent classes define their own uiClassID constants
  80.      * (see AbstractComponent.getUIClassID).  This table must
  81.      * map those constants to a BasicComponentUI class of the
  82.      * appropriate type.
  83.      * 
  84.      * @see BasicLookAndFeel#getDefaults
  85.      */
  86.     protected void initClassDefaults(UIDefaults table)
  87.     {
  88.     String basicPackageName = "com.sun.java.swing.plaf.basic.";
  89.     String metalPackageName = "com.sun.java.swing.plaf.metal.";
  90.     String organicPackageName = "com.sun.java.swing.plaf.organic.";
  91.  
  92.     Object[] uiDefaults = {
  93.                "ButtonUI", metalPackageName + "MetalButtonUI",
  94.              "CheckBoxUI", metalPackageName + "MetalCheckBoxUI",
  95.              "ColorChooserUI", basicPackageName + "BasicColorChooserUI",
  96.           "MenuBarUI", basicPackageName + "BasicMenuBarUI",
  97.              "MenuUI", basicPackageName + "BasicMenuUI",
  98.          "MenuItemUI", basicPackageName + "BasicMenuItemUI",
  99.      "CheckBoxMenuItemUI", basicPackageName + "BasicCheckBoxMenuItemUI",
  100.       "RadioButtonMenuItemUI", basicPackageName + "BasicRadioButtonMenuItemUI",
  101.           "RadioButtonUI", metalPackageName + "MetalRadioButtonUI",
  102.          "ToggleButtonUI", metalPackageName + "MetalToggleButtonUI",
  103.         "PopupMenuUI", basicPackageName + "BasicPopupMenuUI",
  104.           "ProgressBarUI", metalPackageName + "MetalProgressBarUI",
  105.         "ScrollBarUI", metalPackageName + "MetalScrollBarUI",
  106.            "ScrollPaneUI", metalPackageName + "MetalScrollPaneUI",
  107.             "SplitPaneUI", basicPackageName + "BasicSplitPaneUI",
  108.            "SliderUI", metalPackageName + "MetalSliderUI",
  109.           "SpinnerUI", basicPackageName + "BasicSpinnerUI",
  110.         "SeparatorUI", metalPackageName + "MetalSeparatorUI",
  111.            "TabbedPaneUI", metalPackageName + "MetalTabbedPaneUI",
  112.          "TextAreaUI", basicPackageName + "BasicTextAreaUI",
  113.         "TextFieldUI", basicPackageName + "BasicTextFieldUI",
  114.         "PasswordFieldUI", basicPackageName + "BasicPasswordFieldUI",
  115.          "TextPaneUI", basicPackageName + "BasicTextPaneUI",
  116.                "EditorPaneUI", basicPackageName + "BasicEditorPaneUI",
  117.              "TreeUI", metalPackageName + "MetalTreeUI",
  118.             "LabelUI", metalPackageName + "MetalLabelUI",
  119.              "ListUI", basicPackageName + "BasicListUI",
  120.           "ToolBarUI", metalPackageName + "MetalToolBarUI",
  121.           "ToolTipUI", metalPackageName + "MetalToolTipUI",
  122.          "ComboBoxUI", metalPackageName + "MetalComboBoxUI",
  123.             "TableUI", basicPackageName + "BasicTableUI",
  124.           "TableHeaderUI", basicPackageName + "BasicTableHeaderUI",
  125.         "InternalFrameUI", metalPackageName + "MetalInternalFrameUI",
  126.        "StandardDialogUI", basicPackageName + "BasicStandardDialogUI",
  127.           "DesktopPaneUI", basicPackageName + "BasicDesktopPaneUI",
  128.           "DesktopIconUI", metalPackageName + "MetalDesktopIconUI",
  129.         "DirectoryPaneUI", basicPackageName + "BasicDirectoryPaneUI",
  130.           "FileChooserUI", basicPackageName + "BasicFileChooserUI",
  131.            "OptionPaneUI", basicPackageName + "BasicOptionPaneUI"
  132.     };
  133.  
  134.     table.putDefaults(uiDefaults);
  135.     }
  136.  
  137.     /**
  138.      * Load the SystemColors into the defaults table.  The keys
  139.      * for SystemColor defaults are the same as the names of
  140.      * the public fields in SystemColor.
  141.      */
  142.     protected void initSystemColorDefaults(UIDefaults table)
  143.     {
  144.     Object[] systemColors = {
  145.               "desktop", getDesktopColor(), /* Color of the desktop background */
  146.       "activeCaption", getWindowTitleBackground(), /* Color for captions (title bars) when they are active. */
  147.       "activeCaptionText", getWindowTitleForeground(), /* Text color for text in captions (title bars). */
  148.     "activeCaptionBorder", getPrimaryControlShadow(), /* Border color for caption (title bar) window borders. */
  149.         "inactiveCaption", getWindowTitleInactiveBackground(), /* Color for captions (title bars) when not active. */
  150.     "inactiveCaptionText", getWindowTitleInactiveForeground(), /* Text color for text in inactive captions (title bars). */
  151.   "inactiveCaptionBorder", getControlShadow(), /* Border color for inactive caption (title bar) window borders. */
  152.              "window", getWindowBackground(), /* Default color for the interior of windows */
  153.        "windowBorder", getControl(), /* ??? */
  154.          "windowText", getUserTextColor(), /* ??? */
  155.            "menu", getMenuBackground(), /* Background color for menus */
  156.            "menuText", getMenuForeground(), /* Text color for menus  */
  157.            "text", getWindowBackground(), /* Text background color */
  158.            "textText", getUserTextColor(), /* Text foreground color */
  159.       "textHighlight", getTextHighlightColor(), /* Text background color when selected */
  160.       "textHighlightText", getHighlightedTextColor(), /* Text color when selected */
  161.        "textInactiveText", getInactiveSystemTextColor(), /* Text color when disabled */
  162.             "control", getControl(), /* Default color for controls (buttons, sliders, etc) */
  163.         "controlText", getControlTextColor(), /* Default color for text in controls */
  164.        "controlHighlight", getControlHighlight(), /* Specular highlight (opposite of the shadow) */
  165.      "controlLtHighlight", getControlHighlight(), /* Highlight color for controls */
  166.       "controlShadow", getControlShadow(), /* Shadow color for controls */
  167.         "controlDkShadow", getControlDarkShadow(), /* Dark shadow color for controls */
  168.           "scrollbar", getControl(), /* Scrollbar background (usually the "track") */
  169.            "info", getPrimaryControl(), /* ToolTip Background */
  170.            "infoText", getPrimaryControlInfo()  /* ToolTip Text */
  171.     };
  172.  
  173.     for(int i = 0; i < systemColors.length; i += 2) {
  174.         table.put((String)systemColors[i], systemColors[i + 1]);
  175.     }
  176.     }
  177.  
  178.     protected void initComponentDefaults(UIDefaults table) {
  179.         super.initComponentDefaults( table );
  180.  
  181.     Object fieldTextBorder = new BorderUIResource( new CompoundBorder(
  182.                                new Flush3DBorder(),
  183.                                    BasicMarginBorder.getMarginBorder()));
  184.  
  185.     Object scrollPaneBorder = new BorderUIResource( new MetalScrollPaneUI.ScrollPaneBorder() );
  186.  
  187.     Object buttonBorder =  new BorderUIResource(new CompoundBorder(
  188.                               new MetalButtonBorder(),
  189.                               BasicMarginBorder.getMarginBorder()));
  190.  
  191.     Object toggleButtonBorder =  new BorderUIResource(new CompoundBorder(
  192.                       new MetalToggleButtonUI.MetalToggleButtonBorder(),
  193.                       BasicMarginBorder.getMarginBorder()));
  194.  
  195.         Object comboBoxEditorActiveValue  = new UIDefaults.ActiveValue() {
  196.             public Object createValue(UIDefaults table) {
  197.                 return new MetalComboBoxEditor.UIResource();
  198.         }
  199.     };
  200.  
  201.     Object titledBorderBorder = new BorderUIResource(new LineBorder(table.getColor("controlShadow")));
  202.  
  203.     Object desktopIconBorder = new BorderUIResource(new CompoundBorder(
  204.                       new LineBorder(getControlDarkShadow(), 1),
  205.                       new MatteBorder (2,2,1,2, getControl())));
  206.      
  207.     Object internalFrameBorder = new BorderUIResource( new MetalInternalFrameBorder() );
  208.  
  209.     Object menuBarBorder = new BorderUIResource( new MetalMenuBarBorder() );
  210.     Object popupMenuBorder = new BorderUIResource( new MetalPopupMenuBorder() );
  211.     Object menuItemBorder = new BorderUIResource( new MetalMenuItemBorder() );
  212.     Object toolBarBorder = new BorderUIResource( new MetalToolBarBorder() );
  213.  
  214.     Object focusCellHighlightBorder = new BorderUIResource( 
  215.                           new LineBorder(getFocusColor()) );
  216.  
  217.     //
  218.     // DEFAULTS TABLE
  219.     //
  220.  
  221.     Object[] defaults = {
  222.         // Text (Note: many are inherited)
  223.         "TextField.border", fieldTextBorder,
  224.         "PasswordField.border", fieldTextBorder,
  225.         "TextArea.border", fieldTextBorder,
  226.         "TextPane.border", fieldTextBorder,
  227.         "EditorPane.border", fieldTextBorder,
  228.         
  229.         // CheckBox
  230.         "CheckBox.icon", new MetalCheckBoxIcon(),
  231.         "CheckBox.font", getControlTextFont(),
  232.         "CheckBox.focus", getFocusColor(),
  233.  
  234.         // Button
  235.         "Button.background", getControl(),
  236.         "Button.foreground", getControlTextColor(),
  237.         "Button.pressed", getControlShadow(),
  238.         "Button.disabledText", getInactiveControlTextColor(),
  239.         "Button.disabled", getControl(),
  240.         "Button.border", buttonBorder,
  241.         "Button.font", getControlTextFont(),
  242.         "Button.focus", getFocusColor(),
  243.  
  244.         // Directory Pane
  245.         "DirectoryPane.directoryIcon", MetalIconFactory.getTreeFolderIcon(),
  246.         "DirectoryPane.fileIcon", MetalIconFactory.getTreeLeafIcon(),
  247.         "DirectoryPane.computerIcon", MetalIconFactory.getTreeComputerIcon(),
  248.         "DirectoryPane.hardDriveIcon", MetalIconFactory.getTreeHardDriveIcon(),
  249.         "DirectoryPane.floppyDriveIcon", MetalIconFactory.getTreeFloppyDriveIcon(),
  250.  
  251.         // File Chooser
  252.         "FileChooser.detailsView", MetalIconFactory.getFileChooserDetailViewIcon(),
  253.         "FileChooser.homeFolder", MetalIconFactory.getFileChooserHomeFolderIcon(),
  254.         "FileChooser.listView", MetalIconFactory.getFileChooserListViewIcon(),
  255.         "FileChooser.newFolder", MetalIconFactory.getFileChooserNewFolderIcon(),
  256.         "FileChooser.upFolder", MetalIconFactory.getFileChooserUpFolderIcon(),
  257.  
  258.         // InternalFrame
  259.         "InternalFrameTitlePane.closeIcon", MetalIconFactory.getInternalFrameCloseIcon(),
  260.         "InternalFrameTitlePane.maximizeIcon", MetalIconFactory.getInternalFrameMaximizeIcon(),
  261.         "InternalFrameTitlePane.iconizeIcon", MetalIconFactory.getInternalFrameMinimizeIcon(),
  262.         "InternalFrameTitlePane.altMaximizeIcon", MetalIconFactory.getInternalFrameAltMaximizeIcon(),
  263.         "InternalFrameTitlePane.font",  getControlTextFont(),
  264.  
  265.         // RadioButton
  266.         "RadioButton.icon", MetalIconFactory.getRadioButtonIcon(),
  267.         "RadioButton.font", getControlTextFont(),
  268.         "RadioButton.focus", getFocusColor(),
  269.  
  270.         // ToolTip
  271.             "ToolTip.font", getSystemTextFont(),
  272.             "ToolTip.border", null,
  273.             "ToolTip.background", table.get("info"),
  274.             "ToolTip.foreground", table.get("infoText"),
  275.  
  276.         // Toggle Button Defaults
  277.         "ToggleButton.background", getControl(),
  278.         "ToggleButton.foreground", getControlTextColor(),
  279.         "ToggleButton.pressed", getControlShadow(),
  280.         "ToggleButton.selected", getControlShadow(),
  281.         "ToggleButton.disabledText", getInactiveControlTextColor(),
  282.         "ToggleButton.disabledSelectedText", getControlDarkShadow(),
  283.         "ToggleButton.disabledBackground", getControl(),
  284.         "ToggleButton.disabledSelectedBackground", getControlShadow(),
  285.         "ToggleButton.focus", getFocusColor(),
  286.         "ToggleButton.border", toggleButtonBorder,
  287.         "ToggleButton.font", getControlTextFont(),
  288.  
  289.         // Slider Defaults
  290.         "Slider.border", null,
  291.         "Slider.foreground", getPrimaryControlShadow(),
  292.         "Slider.background", getControl(),
  293.         "Slider.focus", getFocusColor(),
  294.         "Slider.trackWidth", new Integer( 9 ),
  295.         "Slider.majorTickLength", new Integer( 6 ),
  296.         "Slider.horizontalThumbIcon", MetalIconFactory.getHorizontalSliderThumbIcon(),
  297.         "Slider.verticalThumbIcon", MetalIconFactory.getVerticalSliderThumbIcon(),
  298.  
  299.         // Progress Bar
  300.         "ProgressBar.foreground", getPrimaryControlShadow(), 
  301.         "ProgressBar.background", getControl(),
  302.         "ProgressBar.foregroundHighlight", getPrimaryControlShadow(), 
  303.         "ProgressBar.backgroundHighlight", getControl(),
  304.         // this should be a proper border but is simply a color for now
  305.         "ProgressBar.border", getControl(),
  306.  
  307.         // Combo Box
  308.             "ComboBox.background", table.get("control"),
  309.             "ComboBox.foreground", table.get("controlText"),
  310.             "ComboBox.selectedBackground", getPrimaryControlShadow(),
  311.             "ComboBox.selectedForeground", getControlTextColor(),
  312.             "ComboBox.listBackground", getControl(),
  313.             "ComboBox.listForeground", getControlTextColor(),
  314.             "ComboBox.font", getControlTextFont(),
  315.             "ComboBox.editor", comboBoxEditorActiveValue,
  316.  
  317.         // Internal Frame Defaults
  318.         "InternalFrame.icon", MetalIconFactory.getInternalFrameDefaultMenuIcon(),
  319.         "InternalFrame.border", internalFrameBorder,
  320.  
  321.         // Desktop Icon
  322.         "DesktopIcon.border", desktopIconBorder,
  323.         "DesktopIcon.font", getControlTextFont(),
  324.         "DesktopIcon.foreground", getControlTextColor(),
  325.         "DesktopIcon.background", getControl(),
  326.  
  327.         // Titled Border
  328.             "TitledBorder.font", getControlTextFont(),
  329.             "TitledBorder.titleColor", getSystemTextColor(),
  330.             "TitledBorder.border", titledBorderBorder,
  331.  
  332.         // Label
  333.         "Label.font", getControlTextFont(),
  334.         "Label.background", table.get("control"),
  335.         "Label.foreground", getSystemTextColor(),
  336.         "Label.disabled", getInactiveSystemTextColor(),
  337.  
  338.         // List
  339.         "List.focusCellHighlightBorder", focusCellHighlightBorder,
  340.  
  341.         // ScrollBar
  342.         "ScrollBar.background", getControl(),
  343.         "ScrollBar.highlight", getControlHighlight(),
  344.         "ScrollBar.shadow", getControlDarkShadow(),
  345.         "ScrollBar.thumb", getPrimaryControlShadow(),
  346.         "ScrollBar.thumbShadow", getPrimaryControlDarkShadow(),
  347.         "ScrollBar.thumbHighlight", getPrimaryControl(),
  348.         "ScrollBar.width", new Integer( 17 ),
  349.  
  350.         // ScrollPane
  351.         "ScrollPane.border", scrollPaneBorder,
  352.  
  353.         // Tabbed Pane
  354.             "TabbedPane.font", getControlTextFont(),
  355.             "TabbedPane.tabBackground", getControl(),
  356.             "TabbedPane.tabForeground", getControlTextColor(),
  357.             "TabbedPane.tabHighlight", getControlHighlight(),
  358.             "TabbedPane.tabDarkShadow", getControlDarkShadow(),
  359.             "TabbedPane.focus", getPrimaryControlDarkShadow(),
  360.             "TabbedPane.selected", getPrimaryControlShadow(),
  361.         "TabbedPane.selectHighlight", getPrimaryControl(),
  362.         
  363.         // Table
  364.         "Table.focusCellHighlightBorder", focusCellHighlightBorder,
  365.         "Table.focusCellBackground", getFocusColor(),
  366.         "Table.scrollPaneBorder", scrollPaneBorder,
  367.  
  368.         // MenuBar
  369.         "MenuBar.border", menuBarBorder,
  370.         "MenuBar.font", getMenuTextFont(),
  371.         "MenuBar.foreground", getMenuForeground(),
  372.         "MenuBar.background", getMenuBackground(),
  373.  
  374.         // Menu
  375.         "Menu.border", menuItemBorder,
  376.         "Menu.font", getMenuTextFont(),
  377.         "Menu.foreground", getMenuForeground(),
  378.         "Menu.background", getMenuBackground(),
  379.         "Menu.pressedForeground", getMenuSelectedForeground(),
  380.         "Menu.pressedBackground", getMenuSelectedBackground(),
  381.         "Menu.arrowIcon", MetalIconFactory.getMenuArrowIcon(),
  382.  
  383.         // Menu Item
  384.         "MenuItem.border", menuItemBorder,
  385.         "MenuItem.borderPainted", Boolean.TRUE,
  386.         "MenuItem.font", getMenuTextFont(),
  387.         "MenuItem.acceleratorFont", getSubTextFont(),
  388.         "MenuItem.acceleratorForeground", getAcceleratorForeground(),
  389.         "MenuItem.acceleratorPressedForeground", getAcceleratorSelectedForeground(),
  390.         "MenuItem.foreground", getMenuForeground(),
  391.         "MenuItem.background", getMenuBackground(),
  392.         "MenuItem.pressedForeground", getMenuSelectedForeground(),
  393.         "MenuItem.pressedBackground", getMenuSelectedBackground(),
  394.         "MenuItem.disabledForeground", getMenuDisabledForeground(),
  395.         "MenuItem.acceleratorFont", getSubTextFont(),
  396.         "MenuItem.acceleratorForeground", getAcceleratorForeground(),
  397.         "MenuItem.acceleratorPressedForeground", getAcceleratorSelectedForeground(),
  398.         "MenuItem.checkIcon", MetalIconFactory.getMenuItemCheckIcon(),
  399.         "MenuItem.arrowIcon", MetalIconFactory.getMenuItemArrowIcon(),
  400.  
  401.         // Separator
  402.         "Separator.background", getSeparatorBackground(),
  403.         "Separator.foreground", getSeparatorForeground(),
  404.  
  405.         // Popup Menu
  406.         "PopupMenu.background", getMenuBackground(),
  407.         "PopupMenu.border", popupMenuBorder,      
  408.  
  409.         // CB & RB Menu Item
  410.         "CheckBoxMenuItem.icon", MetalIconFactory.getCheckBoxMenuItemIcon(),
  411.         "RadioButtonMenuItem.icon", MetalIconFactory.getRadioButtonMenuItemIcon(),
  412.  
  413.         // Tree
  414.         "Tree.background", getWindowBackground(),
  415.         "Tree.textSelectionColor", table.get("textHighlightText"),
  416.         "Tree.textNonSelectionColor", table.get("textText"),
  417.         "Tree.borderSelectionColor", getWindowBackground(),
  418.         "Tree.backgroundSelectionColor", table.get("textHighlight"),
  419.         "Tree.backgroundNonSelectionColor", getWindowBackground(),
  420.         "Tree.openIcon", MetalIconFactory.getTreeFolderIcon(),
  421.         "Tree.closedIcon", MetalIconFactory.getTreeFolderIcon(),
  422.         "Tree.leafIcon", MetalIconFactory.getTreeLeafIcon(),
  423.         "Tree.expandedIcon", MetalIconFactory.getTreeControlIcon( MetalIconFactory.DARK ),
  424.         "Tree.collapsedIcon", MetalIconFactory.getTreeControlIcon( MetalIconFactory.LIGHT ),
  425.         "Tree.line", getPrimaryControl(), // horiz lines
  426.         "Tree.hash", getPrimaryControl(),  // legs
  427.  
  428.         // ToolBar
  429.         "ToolBar.border", toolBarBorder,
  430.         "ToolBar.background", getMenuBackground(),
  431.         "ToolBar.foreground", getMenuForeground(),
  432.         "ToolBar.font", getMenuTextFont(),
  433.         "ToolBar.dockingColor", getMenuBackground(),
  434.         "ToolBar.floatingColor", getMenuBackground(),
  435.         "ToolBar.dockingBorderColor", getPrimaryControlDarkShadow(), 
  436.         "ToolBar.floatingBorderColor", getPrimaryControl(),
  437.     };
  438.  
  439.     table.putDefaults(defaults);
  440.     }
  441.  
  442.     protected void createDefaultTheme() {
  443.         if( currentTheme == null) 
  444.         currentTheme =  new DefaultMetalTheme();
  445.     }
  446.  
  447.     public UIDefaults getDefaults() {
  448.         createDefaultTheme();
  449.         UIDefaults table = super.getDefaults();
  450.     currentTheme.addCustomEntriesToTable(table);
  451.     return table;
  452.     }
  453.  
  454.     public static void setCurrentTheme(MetalTheme theme) {
  455.         if (theme == null) {
  456.         throw new NullPointerException("Can't have null theme");
  457.     }
  458.         currentTheme = theme;
  459.     }
  460.  
  461.     public static FontUIResource getControlTextFont() { return currentTheme.getControlTextFont();}
  462.     public static FontUIResource getSystemTextFont() { return currentTheme.getSystemTextFont();}
  463.     public static FontUIResource getUserTextFont() { return currentTheme.getUserTextFont();}
  464.     public static FontUIResource getMenuTextFont() { return currentTheme.getMenuTextFont();}
  465.     public static FontUIResource getEmphasisTextFont() { return currentTheme.getEmphasisTextFont();}
  466.     public static FontUIResource getSubTextFont() { return currentTheme.getSubTextFont();}
  467.  
  468.     public static ColorUIResource getDesktopColor() { return currentTheme.getDesktopColor(); }
  469.     public static ColorUIResource getFocusColor() { return currentTheme.getFocusColor(); }
  470.  
  471.     public static ColorUIResource getWhite() { return currentTheme.getWhite(); }
  472.     public static ColorUIResource getBlack() { return currentTheme.getBlack(); }
  473.     public static ColorUIResource getControl() { return currentTheme.getControl(); }
  474.     public static ColorUIResource getControlShadow() { return currentTheme.getControlShadow(); }
  475.     public static ColorUIResource getControlDarkShadow() { return currentTheme.getControlDarkShadow(); }
  476.     public static ColorUIResource getControlInfo() { return currentTheme.getControlInfo(); } 
  477.     public static ColorUIResource getControlHighlight() { return currentTheme.getControlHighlight(); }
  478.     public static ColorUIResource getControlDisabled() { return currentTheme.getControlDisabled(); }
  479.  
  480.     public static ColorUIResource getPrimaryControl() { return currentTheme.getPrimaryControl(); }  
  481.     public static ColorUIResource getPrimaryControlShadow() { return currentTheme.getPrimaryControlShadow(); }  
  482.     public static ColorUIResource getPrimaryControlDarkShadow() { return currentTheme.getPrimaryControlDarkShadow(); }  
  483.     public static ColorUIResource getPrimaryControlInfo() { return currentTheme.getPrimaryControlInfo(); } 
  484.     public static ColorUIResource getPrimaryControlHighlight() { return currentTheme.getPrimaryControlHighlight(); }  
  485.  
  486.     public static ColorUIResource getSystemTextColor() { return currentTheme.getSystemTextColor(); }
  487.     public static ColorUIResource getControlTextColor() { return currentTheme.getControlTextColor(); }  
  488.     public static ColorUIResource getInactiveControlTextColor() { return currentTheme.getInactiveControlTextColor(); }  
  489.     public static ColorUIResource getInactiveSystemTextColor() { return currentTheme.getInactiveSystemTextColor(); }
  490.     public static ColorUIResource getUserTextColor() { return currentTheme.getUserTextColor(); }
  491.     public static ColorUIResource getTextHighlightColor() { return currentTheme.getTextHighlightColor(); }
  492.     public static ColorUIResource getHighlightedTextColor() { return currentTheme.getHighlightedTextColor(); }
  493.  
  494.     public static ColorUIResource getWindowBackground() { return currentTheme.getWindowBackground(); }
  495.     public static ColorUIResource getWindowTitleBackground() { return currentTheme.getWindowTitleBackground(); }
  496.     public static ColorUIResource getWindowTitleForeground() { return currentTheme.getWindowTitleForeground(); }
  497.     public static ColorUIResource getWindowTitleInactiveBackground() { return currentTheme.getWindowTitleInactiveBackground(); }
  498.     public static ColorUIResource getWindowTitleInactiveForeground() { return currentTheme.getWindowTitleInactiveForeground(); }
  499.  
  500.     public static ColorUIResource getMenuBackground() { return currentTheme.getMenuBackground(); }
  501.     public static ColorUIResource getMenuForeground() { return currentTheme.getMenuForeground(); }
  502.     public static ColorUIResource getMenuSelectedBackground() { return currentTheme.getMenuSelectedBackground(); }
  503.     public static ColorUIResource getMenuSelectedForeground() { return currentTheme.getMenuSelectedForeground(); }
  504.     public static ColorUIResource getMenuDisabledForeground() { return currentTheme.getMenuDisabledForeground(); }
  505.     public static ColorUIResource getSeparatorBackground() { return currentTheme.getSeparatorBackground(); }
  506.     public static ColorUIResource getSeparatorForeground() { return currentTheme.getSeparatorForeground(); }
  507.     public static ColorUIResource getAcceleratorForeground() { return currentTheme.getAcceleratorForeground(); }
  508.     public static ColorUIResource getAcceleratorSelectedForeground() { return currentTheme.getAcceleratorSelectedForeground(); }
  509.  
  510.  
  511. }
  512.