jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java
author peterz
Sat, 25 Apr 2009 21:17:50 +0400
changeset 2658 43e06bc950ec
child 3107 51a846c2c16f
permissions -rw-r--r--
6591875: Nimbus Swing Look and Feel Reviewed-by: jasper, ohair
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2658
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
     1
/*
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
     2
 * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
     4
 *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Sun designates this
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
     9
 * by Sun in the LICENSE file that accompanied this code.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    10
 *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    15
 * accompanied this code).
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    16
 *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    20
 *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    21
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    22
 * CA 95054 USA or visit www.sun.com if you need additional information or
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    23
 * have any questions.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    24
 */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    25
package javax.swing.plaf.nimbus;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    26
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    27
import java.awt.BorderLayout;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    28
import static java.awt.BorderLayout.*;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    29
import javax.swing.JComponent;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    30
import javax.swing.UIDefaults;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    31
import javax.swing.UIManager;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    32
import javax.swing.plaf.synth.Region;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    33
import javax.swing.plaf.synth.SynthLookAndFeel;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    34
import javax.swing.plaf.synth.SynthStyle;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    35
import javax.swing.plaf.synth.SynthStyleFactory;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    36
import javax.swing.plaf.UIResource;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    37
import java.security.AccessController;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    38
import java.awt.Color;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    39
import java.awt.Container;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    40
import java.awt.Graphics2D;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    41
import java.awt.LayoutManager;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    42
import java.awt.image.BufferedImage;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    43
import javax.swing.GrayFilter;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    44
import javax.swing.Icon;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    45
import javax.swing.JToolBar;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    46
import javax.swing.border.TitledBorder;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    47
import javax.swing.plaf.BorderUIResource;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    48
import javax.swing.plaf.ColorUIResource;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    49
import sun.swing.ImageIconUIResource;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    50
import sun.swing.plaf.synth.SynthIcon;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    51
import sun.swing.plaf.GTKKeybindings;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    52
import sun.swing.plaf.WindowsKeybindings;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    53
import sun.security.action.GetPropertyAction;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    54
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    55
/**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    56
 * <p>The NimbusLookAndFeel class.</p>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    57
 *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    58
 * @author Jasper Potts
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    59
 * @author Richard Bair
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    60
 */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    61
public class NimbusLookAndFeel extends SynthLookAndFeel {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    62
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    63
    /** Set of standard region names for UIDefaults Keys */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    64
    private static final String[] COMPONENT_KEYS = new String[]{"ArrowButton", "Button",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    65
                    "CheckBox", "CheckBoxMenuItem", "ColorChooser", "ComboBox",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    66
                    "DesktopPane", "DesktopIcon", "EditorPane", "FileChooser",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    67
                    "FormattedTextField", "InternalFrame",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    68
                    "InternalFrameTitlePane", "Label", "List", "Menu",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    69
                    "MenuBar", "MenuItem", "OptionPane", "Panel",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    70
                    "PasswordField", "PopupMenu", "PopupMenuSeparator",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    71
                    "ProgressBar", "RadioButton", "RadioButtonMenuItem",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    72
                    "RootPane", "ScrollBar", "ScrollBarTrack", "ScrollBarThumb",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    73
                    "ScrollPane", "Separator", "Slider", "SliderTrack",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    74
                    "SliderThumb", "Spinner", "SplitPane", "TabbedPane",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    75
                    "Table", "TableHeader", "TextArea", "TextField", "TextPane",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    76
                    "ToggleButton", "ToolBar", "ToolTip", "Tree", "Viewport"};
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    77
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    78
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    79
     * A reference to the auto-generated file NimbusDefaults. This file contains
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    80
     * the default mappings and values for the look and feel as specified in the
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    81
     * visual designer.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    82
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    83
    private NimbusDefaults defaults;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    84
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    85
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    86
     * Reference to populated LAD uidefaults
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    87
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    88
    private UIDefaults uiDefaults;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    89
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    90
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    91
     * Create a new NimbusLookAndFeel.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    92
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    93
    public NimbusLookAndFeel() {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    94
        super();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    95
        defaults = new NimbusDefaults();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    96
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    97
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    98
    /** Called by UIManager when this look and feel is installed. */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
    99
    @Override public void initialize() {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   100
        super.initialize();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   101
        defaults.initialize();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   102
        // create synth style factory
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   103
        setStyleFactory(new SynthStyleFactory() {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   104
            @Override
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   105
            public SynthStyle getStyle(JComponent c, Region r) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   106
                return defaults.getStyle(c, r);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   107
            }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   108
        });
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   109
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   110
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   111
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   112
    /** Called by UIManager when this look and feel is uninstalled. */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   113
    @Override public void uninitialize() {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   114
        super.uninitialize();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   115
        defaults.uninitialize();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   116
        // clear all cached images to free memory
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   117
        ImageCache.getInstance().flush();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   118
        // remove the listeners and things installed by NimbusStyle
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   119
        NimbusStyle.uninitialize();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   120
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   121
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   122
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   123
     * @inheritDoc
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   124
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   125
    @Override public UIDefaults getDefaults() {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   126
        if (uiDefaults == null){
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   127
            // Detect platform
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   128
            String osName = getSystemProperty("os.name");
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   129
            boolean isWindows = osName != null && osName.contains("Windows");
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   130
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   131
            // We need to call super for basic's properties file.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   132
            uiDefaults = super.getDefaults();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   133
            defaults.initializeDefaults(uiDefaults);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   134
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   135
            // Install Keybindings
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   136
            if (isWindows) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   137
                WindowsKeybindings.installKeybindings(uiDefaults);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   138
            } else {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   139
                GTKKeybindings.installKeybindings(uiDefaults);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   140
            }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   141
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   142
            // Add Titled Border
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   143
            uiDefaults.put("TitledBorder.titlePosition",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   144
                    TitledBorder.ABOVE_TOP);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   145
            uiDefaults.put("TitledBorder.border", new BorderUIResource(
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   146
                    new LoweredBorder()));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   147
            uiDefaults.put("TitledBorder.titleColor",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   148
                    getDerivedColor("text",0.0f,0.0f,0.23f,0,true));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   149
            uiDefaults.put("TitledBorder.font",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   150
                    new NimbusDefaults.DerivedFont("defaultFont",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   151
                            1f, true, null));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   152
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   153
            // Choose Dialog button positions
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   154
            uiDefaults.put("OptionPane.isYesLast", !isWindows);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   155
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   156
            // Store Table ScrollPane Corner Component
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   157
            uiDefaults.put("Table.scrollPaneCornerComponent",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   158
                    TableScrollPaneCorner.class);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   159
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   160
            // Setup the settings for ToolBarSeparator which is custom
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   161
            // installed for Nimbus
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   162
            uiDefaults.put("ToolBarSeparator[Enabled].backgroundPainter",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   163
                    new ToolBarSeparatorPainter());
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   164
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   165
            // Populate UIDefaults with a standard set of properties
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   166
            for (String componentKey : COMPONENT_KEYS) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   167
                String key = componentKey+".foreground";
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   168
                if (!uiDefaults.containsKey(key)){
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   169
                    uiDefaults.put(key,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   170
                            new NimbusProperty(componentKey,"textForeground"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   171
                }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   172
                key = componentKey+".background";
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   173
                if (!uiDefaults.containsKey(key)){
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   174
                    uiDefaults.put(key,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   175
                            new NimbusProperty(componentKey,"background"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   176
                }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   177
                key = componentKey+".font";
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   178
                if (!uiDefaults.containsKey(key)){
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   179
                    uiDefaults.put(key,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   180
                            new NimbusProperty(componentKey,"font"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   181
                }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   182
                key = componentKey+".disabledText";
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   183
                if (!uiDefaults.containsKey(key)){
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   184
                    uiDefaults.put(key,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   185
                            new NimbusProperty(componentKey,"Disabled",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   186
                                   "textForeground"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   187
                }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   188
                key = componentKey+".disabled";
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   189
                if (!uiDefaults.containsKey(key)){
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   190
                    uiDefaults.put(key,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   191
                            new NimbusProperty(componentKey,"Disabled",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   192
                                    "background"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   193
                }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   194
            }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   195
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   196
            // FileView icon keys are used by some applications, we don't have
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   197
            // a computer icon at the moment so using home icon for now
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   198
            uiDefaults.put("FileView.computerIcon",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   199
                    new LinkProperty("FileChooser.homeFolderIcon"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   200
            uiDefaults.put("FileView.directoryIcon",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   201
                    new LinkProperty("FileChooser.directoryIcon"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   202
            uiDefaults.put("FileView.fileIcon",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   203
                    new LinkProperty("FileChooser.fileIcon"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   204
            uiDefaults.put("FileView.floppyDriveIcon",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   205
                    new LinkProperty("FileChooser.floppyDriveIcon"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   206
            uiDefaults.put("FileView.hardDriveIcon",
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   207
                    new LinkProperty("FileChooser.hardDriveIcon"));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   208
        }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   209
        return uiDefaults;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   210
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   211
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   212
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   213
     * Gets the style associated with the given component and region. This
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   214
     * will never return null. If an appropriate component and region cannot
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   215
     * be determined, then a default style is returned.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   216
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   217
     * @param c a non-null reference to a JComponent
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   218
     * @param r a non-null reference to the region of the component c
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   219
     * @return a non-null reference to a NimbusStyle.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   220
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   221
    public static NimbusStyle getStyle(JComponent c, Region r) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   222
        return (NimbusStyle)SynthLookAndFeel.getStyle(c, r);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   223
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   224
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   225
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   226
     * Return a short string that identifies this look and feel. This
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   227
     * String will be the unquoted String "Nimbus".
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   228
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   229
     * @return a short string identifying this look and feel.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   230
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   231
    @Override public String getName() {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   232
        return "Nimbus";
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   233
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   234
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   235
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   236
     * Return a string that identifies this look and feel. This String will
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   237
     * be the unquoted String "Nimbus".
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   238
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   239
     * @return a short string identifying this look and feel.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   240
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   241
    @Override public String getID() {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   242
        return "Nimbus";
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   243
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   244
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   245
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   246
     * Returns a textual description of this look and feel.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   247
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   248
     * @return textual description of this look and feel.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   249
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   250
    @Override public String getDescription() {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   251
        return "Nimbus Look and Feel";
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   252
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   253
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   254
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   255
     * @inheritDoc
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   256
     * @return true
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   257
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   258
    @Override public boolean shouldUpdateStyleOnAncestorChanged() {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   259
        return true;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   260
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   261
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   262
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   263
     * <p>Registers a third party component with the NimbusLookAndFeel.</p>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   264
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   265
     * <p>Regions represent Components and areas within Components that act as
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   266
     * independent painting areas. Once registered with the NimbusLookAndFeel,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   267
     * NimbusStyles for these Regions can be retrieved via the
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   268
     * <code>getStyle</code> method.</p>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   269
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   270
     * <p>The NimbusLookAndFeel uses a standard naming scheme for entries in the
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   271
     * UIDefaults table. The key for each property, state, painter, and other
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   272
     * default registered in UIDefaults for a specific Region will begin with
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   273
     * the specified <code>prefix</code></p>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   274
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   275
     * <p>For example, suppose I had a component named JFoo. Suppose I then registered
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   276
     * this component with the NimbusLookAndFeel in this manner:</p>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   277
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   278
     * <pre><code>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   279
     *     laf.register(NimbusFooUI.FOO_REGION, "Foo");
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   280
     * </code></pre>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   281
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   282
     * <p>In this case, I could then register properties for this component with
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   283
     * UIDefaults in the following manner:</p>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   284
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   285
     * <pre><code>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   286
     *     UIManager.put("Foo.background", new ColorUIResource(Color.BLACK));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   287
     *     UIManager.put("Foo.Enabled.backgroundPainter", new FooBackgroundPainter());
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   288
     * </code></pre>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   289
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   290
     * <p>It is also possible to register a named component with Nimbus.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   291
     * For example, suppose you wanted to style the background of a JPanel
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   292
     * named "MyPanel" differently from other JPanels. You could accomplish this
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   293
     * by doing the following:</p>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   294
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   295
     * <pre><code>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   296
     *     laf.register(Region.PANEL, "\"MyPanel\"");
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   297
     *     UIManager.put("\"MyPanel\".background", new ColorUIResource(Color.RED));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   298
     * </code></pre>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   299
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   300
     * @param region The Synth Region that is being registered. Such as Button, or
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   301
     *        ScrollBarThumb, or NimbusFooUI.FOO_REGION.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   302
     * @param prefix The UIDefault prefix. For example, could be ComboBox, or if
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   303
     *        a named components, "MyComboBox", or even something like
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   304
     *        ToolBar."MyComboBox"."ComboBox.arrowButton"
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   305
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   306
    public void register(Region region, String prefix) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   307
        defaults.register(region, prefix);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   308
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   309
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   310
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   311
     * Simple utility method that reads system keys.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   312
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   313
    private String getSystemProperty(String key) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   314
        return AccessController.doPrivileged(new GetPropertyAction(key));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   315
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   316
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   317
    @Override
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   318
    public Icon getDisabledIcon(JComponent component, Icon icon) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   319
        if (icon instanceof SynthIcon) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   320
            SynthIcon si = (SynthIcon)icon;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   321
            BufferedImage img = EffectUtils.createCompatibleTranslucentImage(
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   322
                    si.getIconWidth(), si.getIconHeight());
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   323
            Graphics2D gfx = img.createGraphics();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   324
            si.paintIcon(component, gfx, 0, 0);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   325
            gfx.dispose();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   326
            return new ImageIconUIResource(GrayFilter.createDisabledImage(img));
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   327
        } else {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   328
            return super.getDisabledIcon(component, icon);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   329
        }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   330
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   331
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   332
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   333
     * Get a derived color, derived colors are shared instances and is color
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   334
     * value will change when its parent UIDefault color changes.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   335
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   336
     * @param uiDefaultParentName The parent UIDefault key
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   337
     * @param hOffset             The hue offset
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   338
     * @param sOffset             The saturation offset
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   339
     * @param bOffset             The brightness offset
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   340
     * @param aOffset             The alpha offset
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   341
     * @param uiResource          True if the derived color should be a
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   342
     *                            UIResource, false if it should not be
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   343
     * @return The stored derived color
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   344
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   345
    public Color getDerivedColor(String uiDefaultParentName,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   346
                                 float hOffset, float sOffset,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   347
                                 float bOffset, int aOffset,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   348
                                 boolean uiResource) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   349
        return defaults.getDerivedColor(uiDefaultParentName, hOffset, sOffset,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   350
                bOffset, aOffset, uiResource);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   351
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   352
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   353
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   354
     * Decodes and returns a color, which is derived from an offset between two
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   355
     * other colors.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   356
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   357
     * @param color1   The first color
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   358
     * @param color2   The second color
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   359
     * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   360
     *                 color 1 and 1.0 is color 2;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   361
     * @param uiResource True if the derived color should be a UIResource
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   362
     * @return The derived color
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   363
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   364
    protected final Color getDerivedColor(Color color1, Color color2,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   365
                                      float midPoint, boolean uiResource) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   366
        int argb = deriveARGB(color1, color2, midPoint);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   367
        if (uiResource) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   368
            return new ColorUIResource(argb);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   369
        } else {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   370
            return new Color(argb);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   371
        }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   372
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   373
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   374
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   375
     * Decodes and returns a color, which is derived from a offset between two
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   376
     * other colors.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   377
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   378
     * @param color1   The first color
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   379
     * @param color2   The second color
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   380
     * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   381
     *                 color 1 and 1.0 is color 2;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   382
     * @return The derived color, which will be a UIResource
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   383
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   384
    protected final Color getDerivedColor(Color color1, Color color2,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   385
                                      float midPoint) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   386
        return getDerivedColor(color1, color2, midPoint, true);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   387
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   388
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   389
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   390
     * Package private method which returns either BorderLayout.NORTH,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   391
     * BorderLayout.SOUTH, BorderLayout.EAST, or BorderLayout.WEST depending
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   392
     * on the location of the toolbar in its parent. The toolbar might be
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   393
     * in PAGE_START, PAGE_END, CENTER, or some other position, but will be
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   394
     * resolved to either NORTH,SOUTH,EAST, or WEST based on where the toolbar
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   395
     * actually IS, with CENTER being NORTH.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   396
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   397
     * This code is used to determine where the border line should be drawn
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   398
     * by the custom toolbar states, and also used by NimbusIcon to determine
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   399
     * whether the handle icon needs to be shifted to look correct.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   400
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   401
     * Toollbars are unfortunately odd in the way these things are handled,
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   402
     * and so this code exists to unify the logic related to toolbars so it can
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   403
     * be shared among the static files such as NimbusIcon and generated files
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   404
     * such as the ToolBar state classes.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   405
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   406
    static Object resolveToolbarConstraint(JToolBar toolbar) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   407
        //NOTE: we don't worry about component orientation or PAGE_END etc
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   408
        //because the BasicToolBarUI always uses an absolute position of
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   409
        //NORTH/SOUTH/EAST/WEST.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   410
        if (toolbar != null) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   411
            Container parent = toolbar.getParent();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   412
            if (parent != null) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   413
                LayoutManager m = parent.getLayout();
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   414
                if (m instanceof BorderLayout) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   415
                    BorderLayout b = (BorderLayout)m;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   416
                    Object con = b.getConstraints(toolbar);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   417
                    if (con == SOUTH || con == EAST || con == WEST) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   418
                        return con;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   419
                    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   420
                    return NORTH;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   421
                }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   422
            }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   423
        }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   424
        return NORTH;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   425
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   426
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   427
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   428
     * Derives the ARGB value for a color based on an offset between two
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   429
     * other colors.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   430
     *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   431
     * @param color1   The first color
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   432
     * @param color2   The second color
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   433
     * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   434
     *                 color 1 and 1.0 is color 2;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   435
     * @return the ARGB value for a new color based on this derivation
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   436
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   437
    static int deriveARGB(Color color1, Color color2, float midPoint) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   438
        int r = color1.getRed() +
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   439
                (int) ((color2.getRed() - color1.getRed()) * midPoint + 0.5f);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   440
        int g = color1.getGreen() +
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   441
                (int) ((color2.getGreen() - color1.getGreen()) * midPoint +
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   442
                        0.5f);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   443
        int b = color1.getBlue() +
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   444
                (int) ((color2.getBlue() - color1.getBlue()) * midPoint + 0.5f);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   445
        int a = color1.getAlpha() +
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   446
                (int) ((color2.getAlpha() - color1.getAlpha()) * midPoint +
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   447
                        0.5f);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   448
        return ((a & 0xFF) << 24) |
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   449
                ((r & 0xFF) << 16) |
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   450
                ((g & 0xFF) << 8) |
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   451
                (b & 0xFF);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   452
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   453
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   454
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   455
     * Simple Symbolic Link style UIDefalts Property
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   456
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   457
    private class LinkProperty implements UIDefaults.ActiveValue, UIResource{
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   458
        private String dstPropName;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   459
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   460
        private LinkProperty(String dstPropName) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   461
            this.dstPropName = dstPropName;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   462
        }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   463
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   464
        @Override
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   465
        public Object createValue(UIDefaults table) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   466
            return UIManager.get(dstPropName);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   467
        }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   468
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   469
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   470
    /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   471
     * Nimbus Property that looks up Nimbus keys for standard key names. For
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   472
     * example "Button.background" --> "Button[Enabled].backgound"
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   473
     */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   474
    private class NimbusProperty implements UIDefaults.ActiveValue, UIResource {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   475
        private String prefix;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   476
        private String state = null;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   477
        private String suffix;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   478
        private boolean isFont;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   479
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   480
        private NimbusProperty(String prefix, String suffix) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   481
            this.prefix = prefix;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   482
            this.suffix = suffix;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   483
            isFont = "font".equals(suffix);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   484
        }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   485
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   486
        private NimbusProperty(String prefix, String state, String suffix) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   487
            this(prefix,suffix);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   488
            this.state = state;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   489
        }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   490
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   491
        /**
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   492
         * Creates the value retrieved from the <code>UIDefaults</code> table.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   493
         * The object is created each time it is accessed.
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   494
         *
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   495
         * @param table a <code>UIDefaults</code> table
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   496
         * @return the created <code>Object</code>
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   497
         */
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   498
        @Override
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   499
        public Object createValue(UIDefaults table) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   500
            Object obj = null;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   501
            // check specified state
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   502
            if (state!=null){
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   503
                obj = uiDefaults.get(prefix+"["+state+"]."+suffix);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   504
            }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   505
            // check enabled state
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   506
            if (obj==null){
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   507
                obj = uiDefaults.get(prefix+"[Enabled]."+suffix);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   508
            }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   509
            // check for defaults
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   510
            if (obj==null){
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   511
                if (isFont) {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   512
                    obj = uiDefaults.get("defaultFont");
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   513
                } else {
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   514
                    obj = uiDefaults.get(suffix);
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   515
                }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   516
            }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   517
            return obj;
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   518
        }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   519
    }
43e06bc950ec 6591875: Nimbus Swing Look and Feel
peterz
parents:
diff changeset
   520
}