Source Code Cross Referenced for SynthStyle.java in  » 6.0-JDK-Core » swing » javax » swing » plaf » synth » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Home
Java Source Code / Java Documentation
1.6.0 JDK Core
2.6.0 JDK Modules
3.6.0 JDK Modules com.sun
4.6.0 JDK Modules com.sun.java
5.6.0 JDK Modules sun
6.6.0 JDK Platform
7.Ajax
8.Apache Harmony Java SE
9.Aspect oriented
10.Authentication Authorization
11.Blogger System
12.Build
13.Byte Code
14.Cache
15.Chart
16.Chat
17.Code Analyzer
18.Collaboration
19.Content Management System
20.Database Client
21.Database DBMS
22.Database JDBC Connection Pool
23.Database ORM
24.Development
25.EJB Server
26.ERP CRM Financial
27.ESB
28.Forum
29.Game
30.GIS
31.Graphic 3D
32.Graphic Library
33.Groupware
34.HTML Parser
35.IDE
36.IDE Eclipse
37.IDE Netbeans
38.Installer
39.Internationalization Localization
40.Inversion of Control
41.Issue Tracking
42.J2EE
43.J2ME
44.JBoss
45.JMS
46.JMX
47.Library
48.Mail Clients
49.Music
50.Net
51.Parser
52.PDF
53.Portal
54.Profiler
55.Project Management
56.Report
57.RSS RDF
58.Rule Engine
59.Science
60.Scripting
61.Search Engine
62.Security
63.Sevlet Container
64.Source Control
65.Swing Library
66.Template Engine
67.Test Coverage
68.Testing
69.UML
70.Web Crawler
71.Web Framework
72.Web Mail
73.Web Server
74.Web Services
75.Web Services apache cxf 2.2.6
76.Web Services AXIS2
77.Wiki Engine
78.Workflow Engines
79.XML
80.XML UI
Java Source Code / Java Documentation » 6.0 JDK Core » swing » javax.swing.plaf.synth 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


0001        /*
0002         * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
0003         * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0004         *
0005         * This code is free software; you can redistribute it and/or modify it
0006         * under the terms of the GNU General Public License version 2 only, as
0007         * published by the Free Software Foundation.  Sun designates this
0008         * particular file as subject to the "Classpath" exception as provided
0009         * by Sun in the LICENSE file that accompanied this code.
0010         *
0011         * This code is distributed in the hope that it will be useful, but WITHOUT
0012         * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0013         * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
0014         * version 2 for more details (a copy is included in the LICENSE file that
0015         * accompanied this code).
0016         *
0017         * You should have received a copy of the GNU General Public License version
0018         * 2 along with this work; if not, write to the Free Software Foundation,
0019         * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0020         *
0021         * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
0022         * CA 95054 USA or visit www.sun.com if you need additional information or
0023         * have any questions.
0024         */
0025        package javax.swing.plaf.synth;
0026
0027        import java.awt.*;
0028        import javax.swing.*;
0029        import javax.swing.border.Border;
0030        import javax.swing.plaf.UIResource;
0031        import javax.swing.plaf.basic.BasicLookAndFeel;
0032        import javax.swing.text.DefaultEditorKit;
0033        import java.util.HashMap;
0034        import java.util.Map;
0035        import sun.swing.plaf.synth.SynthUI;
0036
0037        /**
0038         * <code>SynthStyle</code> is a set of style properties.
0039         * Each <code>SynthUI</code> references at least one
0040         * <code>SynthStyle</code> that is obtained using a
0041         * <code>SynthStyleFactory</code>. You typically don't need to interact with
0042         * this class directly, rather you will load a
0043         * <a href="doc-files/synthFileFormat.html">Synth File Format file</a> into
0044         * <code>SynthLookAndFeel</code> that will create a set of SynthStyles.
0045         *
0046         * @see SynthLookAndFeel
0047         * @see SynthStyleFactory
0048         *
0049         * @version 1.44, 05/05/07
0050         * @since 1.5
0051         * @author Scott Violet
0052         */
0053        public abstract class SynthStyle {
0054            /**
0055             * Contains the default values for certain properties.
0056             */
0057            private static Map DEFAULT_VALUES;
0058
0059            /**
0060             * Shared SynthGraphics.
0061             */
0062            private static final SynthGraphicsUtils SYNTH_GRAPHICS = new SynthGraphicsUtils();
0063
0064            /**
0065             * Adds the default values that we know about to DEFAULT_VALUES.
0066             */
0067            private static void populateDefaultValues() {
0068                Object buttonMap = new UIDefaults.LazyInputMap(new Object[] {
0069                        "SPACE", "pressed", "released SPACE", "released" });
0070                DEFAULT_VALUES.put("Button.focusInputMap", buttonMap);
0071                DEFAULT_VALUES.put("CheckBox.focusInputMap", buttonMap);
0072                DEFAULT_VALUES.put("RadioButton.focusInputMap", buttonMap);
0073                DEFAULT_VALUES.put("ToggleButton.focusInputMap", buttonMap);
0074                DEFAULT_VALUES.put("SynthArrowButton.focusInputMap", buttonMap);
0075                DEFAULT_VALUES.put("List.dropLineColor", Color.BLACK);
0076                DEFAULT_VALUES.put("Tree.dropLineColor", Color.BLACK);
0077                DEFAULT_VALUES.put("Table.dropLineColor", Color.BLACK);
0078                DEFAULT_VALUES.put("Table.dropLineShortColor", Color.RED);
0079
0080                Object multilineInputMap = new UIDefaults.LazyInputMap(
0081                        new Object[] { "ctrl C", DefaultEditorKit.copyAction,
0082                                "ctrl V", DefaultEditorKit.pasteAction,
0083                                "ctrl X", DefaultEditorKit.cutAction, "COPY",
0084                                DefaultEditorKit.copyAction, "PASTE",
0085                                DefaultEditorKit.pasteAction, "CUT",
0086                                DefaultEditorKit.cutAction, "control INSERT",
0087                                DefaultEditorKit.copyAction, "shift INSERT",
0088                                DefaultEditorKit.pasteAction, "shift DELETE",
0089                                DefaultEditorKit.cutAction, "shift LEFT",
0090                                DefaultEditorKit.selectionBackwardAction,
0091                                "shift KP_LEFT",
0092                                DefaultEditorKit.selectionBackwardAction,
0093                                "shift RIGHT",
0094                                DefaultEditorKit.selectionForwardAction,
0095                                "shift KP_RIGHT",
0096                                DefaultEditorKit.selectionForwardAction,
0097                                "ctrl LEFT",
0098                                DefaultEditorKit.previousWordAction,
0099                                "ctrl KP_LEFT",
0100                                DefaultEditorKit.previousWordAction,
0101                                "ctrl RIGHT", DefaultEditorKit.nextWordAction,
0102                                "ctrl KP_RIGHT",
0103                                DefaultEditorKit.nextWordAction,
0104                                "ctrl shift LEFT",
0105                                DefaultEditorKit.selectionPreviousWordAction,
0106                                "ctrl shift KP_LEFT",
0107                                DefaultEditorKit.selectionPreviousWordAction,
0108                                "ctrl shift RIGHT",
0109                                DefaultEditorKit.selectionNextWordAction,
0110                                "ctrl shift KP_RIGHT",
0111                                DefaultEditorKit.selectionNextWordAction,
0112                                "ctrl A", DefaultEditorKit.selectAllAction,
0113                                "HOME", DefaultEditorKit.beginLineAction,
0114                                "END", DefaultEditorKit.endLineAction,
0115                                "shift HOME",
0116                                DefaultEditorKit.selectionBeginLineAction,
0117                                "shift END",
0118                                DefaultEditorKit.selectionEndLineAction,
0119
0120                                "UP", DefaultEditorKit.upAction, "KP_UP",
0121                                DefaultEditorKit.upAction, "DOWN",
0122                                DefaultEditorKit.downAction, "KP_DOWN",
0123                                DefaultEditorKit.downAction, "PAGE_UP",
0124                                DefaultEditorKit.pageUpAction, "PAGE_DOWN",
0125                                DefaultEditorKit.pageDownAction,
0126                                "shift PAGE_UP", "selection-page-up",
0127                                "shift PAGE_DOWN", "selection-page-down",
0128                                "ctrl shift PAGE_UP", "selection-page-left",
0129                                "ctrl shift PAGE_DOWN", "selection-page-right",
0130                                "shift UP", DefaultEditorKit.selectionUpAction,
0131                                "shift KP_UP",
0132                                DefaultEditorKit.selectionUpAction,
0133                                "shift DOWN",
0134                                DefaultEditorKit.selectionDownAction,
0135                                "shift KP_DOWN",
0136                                DefaultEditorKit.selectionDownAction, "ENTER",
0137                                DefaultEditorKit.insertBreakAction,
0138                                "BACK_SPACE",
0139                                DefaultEditorKit.deletePrevCharAction,
0140                                "shift BACK_SPACE",
0141                                DefaultEditorKit.deletePrevCharAction,
0142                                "ctrl H",
0143                                DefaultEditorKit.deletePrevCharAction,
0144                                "DELETE",
0145                                DefaultEditorKit.deleteNextCharAction,
0146                                "ctrl DELETE",
0147                                DefaultEditorKit.deleteNextWordAction,
0148                                "ctrl BACK_SPACE",
0149                                DefaultEditorKit.deletePrevWordAction, "RIGHT",
0150                                DefaultEditorKit.forwardAction, "LEFT",
0151                                DefaultEditorKit.backwardAction, "KP_RIGHT",
0152                                DefaultEditorKit.forwardAction, "KP_LEFT",
0153                                DefaultEditorKit.backwardAction, "TAB",
0154                                DefaultEditorKit.insertTabAction,
0155                                "ctrl BACK_SLASH",
0156                                "unselect"/*DefaultEditorKit.unselectAction*/,
0157                                "ctrl HOME", DefaultEditorKit.beginAction,
0158                                "ctrl END", DefaultEditorKit.endAction,
0159                                "ctrl shift HOME",
0160                                DefaultEditorKit.selectionBeginAction,
0161                                "ctrl shift END",
0162                                DefaultEditorKit.selectionEndAction, "ctrl T",
0163                                "next-link-action", "ctrl shift T",
0164                                "previous-link-action", "ctrl SPACE",
0165                                "activate-link-action", "control shift O",
0166                                "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
0167                        });
0168                DEFAULT_VALUES.put("EditorPane.focusInputMap",
0169                        multilineInputMap);
0170                DEFAULT_VALUES.put("TextArea.focusInputMap", multilineInputMap);
0171                DEFAULT_VALUES.put("TextPane.focusInputMap", multilineInputMap);
0172
0173                Object fieldInputMap = new UIDefaults.LazyInputMap(
0174                        new Object[] { "ctrl C", DefaultEditorKit.copyAction,
0175                                "ctrl V", DefaultEditorKit.pasteAction,
0176                                "ctrl X", DefaultEditorKit.cutAction, "COPY",
0177                                DefaultEditorKit.copyAction, "PASTE",
0178                                DefaultEditorKit.pasteAction, "CUT",
0179                                DefaultEditorKit.cutAction, "control INSERT",
0180                                DefaultEditorKit.copyAction, "shift INSERT",
0181                                DefaultEditorKit.pasteAction, "shift DELETE",
0182                                DefaultEditorKit.cutAction, "shift LEFT",
0183                                DefaultEditorKit.selectionBackwardAction,
0184                                "shift KP_LEFT",
0185                                DefaultEditorKit.selectionBackwardAction,
0186                                "shift RIGHT",
0187                                DefaultEditorKit.selectionForwardAction,
0188                                "shift KP_RIGHT",
0189                                DefaultEditorKit.selectionForwardAction,
0190                                "ctrl LEFT",
0191                                DefaultEditorKit.previousWordAction,
0192                                "ctrl KP_LEFT",
0193                                DefaultEditorKit.previousWordAction,
0194                                "ctrl RIGHT", DefaultEditorKit.nextWordAction,
0195                                "ctrl KP_RIGHT",
0196                                DefaultEditorKit.nextWordAction,
0197                                "ctrl shift LEFT",
0198                                DefaultEditorKit.selectionPreviousWordAction,
0199                                "ctrl shift KP_LEFT",
0200                                DefaultEditorKit.selectionPreviousWordAction,
0201                                "ctrl shift RIGHT",
0202                                DefaultEditorKit.selectionNextWordAction,
0203                                "ctrl shift KP_RIGHT",
0204                                DefaultEditorKit.selectionNextWordAction,
0205                                "ctrl A", DefaultEditorKit.selectAllAction,
0206                                "HOME", DefaultEditorKit.beginLineAction,
0207                                "END", DefaultEditorKit.endLineAction,
0208                                "shift HOME",
0209                                DefaultEditorKit.selectionBeginLineAction,
0210                                "shift END",
0211                                DefaultEditorKit.selectionEndLineAction,
0212                                "BACK_SPACE",
0213                                DefaultEditorKit.deletePrevCharAction,
0214                                "shift BACK_SPACE",
0215                                DefaultEditorKit.deletePrevCharAction,
0216                                "ctrl H",
0217                                DefaultEditorKit.deletePrevCharAction,
0218                                "DELETE",
0219                                DefaultEditorKit.deleteNextCharAction,
0220                                "ctrl DELETE",
0221                                DefaultEditorKit.deleteNextWordAction,
0222                                "ctrl BACK_SPACE",
0223                                DefaultEditorKit.deletePrevWordAction, "RIGHT",
0224                                DefaultEditorKit.forwardAction, "LEFT",
0225                                DefaultEditorKit.backwardAction, "KP_RIGHT",
0226                                DefaultEditorKit.forwardAction, "KP_LEFT",
0227                                DefaultEditorKit.backwardAction, "ENTER",
0228                                JTextField.notifyAction, "ctrl BACK_SLASH",
0229                                "unselect"/*DefaultEditorKit.unselectAction*/,
0230                                "control shift O",
0231                                "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
0232                        });
0233                DEFAULT_VALUES.put("TextField.focusInputMap", fieldInputMap);
0234                DEFAULT_VALUES
0235                        .put("PasswordField.focusInputMap", fieldInputMap);
0236
0237                DEFAULT_VALUES.put("ComboBox.ancestorInputMap",
0238                        new UIDefaults.LazyInputMap(new Object[] { "ESCAPE",
0239                                "hidePopup", "PAGE_UP", "pageUpPassThrough",
0240                                "PAGE_DOWN", "pageDownPassThrough", "HOME",
0241                                "homePassThrough", "END", "endPassThrough",
0242                                "DOWN", "selectNext", "KP_DOWN", "selectNext",
0243                                "alt DOWN", "togglePopup", "alt KP_DOWN",
0244                                "togglePopup", "alt UP", "togglePopup",
0245                                "alt KP_UP", "togglePopup", "SPACE",
0246                                "spacePopup", "ENTER", "enterPressed", "UP",
0247                                "selectPrevious", "KP_UP", "selectPrevious" }));
0248
0249                DEFAULT_VALUES.put("Desktop.ancestorInputMap",
0250                        new UIDefaults.LazyInputMap(new Object[] { "ctrl F5",
0251                                "restore", "ctrl F4", "close", "ctrl F7",
0252                                "move", "ctrl F8", "resize", "RIGHT", "right",
0253                                "KP_RIGHT", "right", "shift RIGHT",
0254                                "shrinkRight", "shift KP_RIGHT", "shrinkRight",
0255                                "LEFT", "left", "KP_LEFT", "left",
0256                                "shift LEFT", "shrinkLeft", "shift KP_LEFT",
0257                                "shrinkLeft", "UP", "up", "KP_UP", "up",
0258                                "shift UP", "shrinkUp", "shift KP_UP",
0259                                "shrinkUp", "DOWN", "down", "KP_DOWN", "down",
0260                                "shift DOWN", "shrinkDown", "shift KP_DOWN",
0261                                "shrinkDown", "ESCAPE", "escape", "ctrl F9",
0262                                "minimize", "ctrl F10", "maximize", "ctrl F6",
0263                                "selectNextFrame", "ctrl TAB",
0264                                "selectNextFrame", "ctrl alt F6",
0265                                "selectNextFrame", "shift ctrl alt F6",
0266                                "selectPreviousFrame", "ctrl F12",
0267                                "navigateNext", "shift ctrl F12",
0268                                "navigatePrevious" }));
0269
0270                DEFAULT_VALUES.put("FileChooser.ancestorInputMap",
0271                        new UIDefaults.LazyInputMap(new Object[] { "ESCAPE",
0272                                "cancelSelection", "F2", "editFileName", "F5",
0273                                "refresh", "BACK_SPACE", "Go Up", "ENTER",
0274                                "approveSelection", "ctrl ENTER",
0275                                "approveSelection" }));
0276
0277                DEFAULT_VALUES.put("FormattedTextField.focusInputMap",
0278                        new UIDefaults.LazyInputMap(new Object[] { "ctrl C",
0279                                DefaultEditorKit.copyAction, "ctrl V",
0280                                DefaultEditorKit.pasteAction, "ctrl X",
0281                                DefaultEditorKit.cutAction, "COPY",
0282                                DefaultEditorKit.copyAction, "PASTE",
0283                                DefaultEditorKit.pasteAction, "CUT",
0284                                DefaultEditorKit.cutAction, "control INSERT",
0285                                DefaultEditorKit.copyAction, "shift INSERT",
0286                                DefaultEditorKit.pasteAction, "shift DELETE",
0287                                DefaultEditorKit.cutAction, "shift LEFT",
0288                                DefaultEditorKit.selectionBackwardAction,
0289                                "shift KP_LEFT",
0290                                DefaultEditorKit.selectionBackwardAction,
0291                                "shift RIGHT",
0292                                DefaultEditorKit.selectionForwardAction,
0293                                "shift KP_RIGHT",
0294                                DefaultEditorKit.selectionForwardAction,
0295                                "ctrl LEFT",
0296                                DefaultEditorKit.previousWordAction,
0297                                "ctrl KP_LEFT",
0298                                DefaultEditorKit.previousWordAction,
0299                                "ctrl RIGHT", DefaultEditorKit.nextWordAction,
0300                                "ctrl KP_RIGHT",
0301                                DefaultEditorKit.nextWordAction,
0302                                "ctrl shift LEFT",
0303                                DefaultEditorKit.selectionPreviousWordAction,
0304                                "ctrl shift KP_LEFT",
0305                                DefaultEditorKit.selectionPreviousWordAction,
0306                                "ctrl shift RIGHT",
0307                                DefaultEditorKit.selectionNextWordAction,
0308                                "ctrl shift KP_RIGHT",
0309                                DefaultEditorKit.selectionNextWordAction,
0310                                "ctrl A", DefaultEditorKit.selectAllAction,
0311                                "HOME", DefaultEditorKit.beginLineAction,
0312                                "END", DefaultEditorKit.endLineAction,
0313                                "shift HOME",
0314                                DefaultEditorKit.selectionBeginLineAction,
0315                                "shift END",
0316                                DefaultEditorKit.selectionEndLineAction,
0317                                "BACK_SPACE",
0318                                DefaultEditorKit.deletePrevCharAction,
0319                                "shift BACK_SPACE",
0320                                DefaultEditorKit.deletePrevCharAction,
0321                                "ctrl H",
0322                                DefaultEditorKit.deletePrevCharAction,
0323                                "DELETE",
0324                                DefaultEditorKit.deleteNextCharAction,
0325                                "ctrl DELETE",
0326                                DefaultEditorKit.deleteNextWordAction,
0327                                "ctrl BACK_SPACE",
0328                                DefaultEditorKit.deletePrevWordAction, "RIGHT",
0329                                DefaultEditorKit.forwardAction, "LEFT",
0330                                DefaultEditorKit.backwardAction, "KP_RIGHT",
0331                                DefaultEditorKit.forwardAction, "KP_LEFT",
0332                                DefaultEditorKit.backwardAction, "ENTER",
0333                                JTextField.notifyAction, "ctrl BACK_SLASH",
0334                                "unselect", "control shift O",
0335                                "toggle-componentOrientation", "ESCAPE",
0336                                "reset-field-edit", "UP", "increment", "KP_UP",
0337                                "increment", "DOWN", "decrement", "KP_DOWN",
0338                                "decrement", }));
0339
0340                DEFAULT_VALUES.put("InternalFrame.icon", LookAndFeel.makeIcon(
0341                        BasicLookAndFeel.class, "icons/JavaCup16.png"));
0342
0343                DEFAULT_VALUES.put("InternalFrame.windowBindings",
0344                        new Object[] { "shift ESCAPE", "showSystemMenu",
0345                                "ctrl SPACE", "showSystemMenu", "ESCAPE",
0346                                "hideSystemMenu" });
0347
0348                DEFAULT_VALUES.put("List.focusInputMap",
0349                        new UIDefaults.LazyInputMap(new Object[] { "ctrl C",
0350                                "copy", "ctrl V", "paste", "ctrl X", "cut",
0351                                "COPY", "copy", "PASTE", "paste", "CUT", "cut",
0352                                "control INSERT", "copy", "shift INSERT",
0353                                "paste", "shift DELETE", "cut", "UP",
0354                                "selectPreviousRow", "KP_UP",
0355                                "selectPreviousRow", "shift UP",
0356                                "selectPreviousRowExtendSelection",
0357                                "shift KP_UP",
0358                                "selectPreviousRowExtendSelection",
0359                                "ctrl shift UP",
0360                                "selectPreviousRowExtendSelection",
0361                                "ctrl shift KP_UP",
0362                                "selectPreviousRowExtendSelection", "ctrl UP",
0363                                "selectPreviousRowChangeLead", "ctrl KP_UP",
0364                                "selectPreviousRowChangeLead", "DOWN",
0365                                "selectNextRow", "KP_DOWN", "selectNextRow",
0366                                "shift DOWN", "selectNextRowExtendSelection",
0367                                "shift KP_DOWN",
0368                                "selectNextRowExtendSelection",
0369                                "ctrl shift DOWN",
0370                                "selectNextRowExtendSelection",
0371                                "ctrl shift KP_DOWN",
0372                                "selectNextRowExtendSelection", "ctrl DOWN",
0373                                "selectNextRowChangeLead", "ctrl KP_DOWN",
0374                                "selectNextRowChangeLead", "LEFT",
0375                                "selectPreviousColumn", "KP_LEFT",
0376                                "selectPreviousColumn", "shift LEFT",
0377                                "selectPreviousColumnExtendSelection",
0378                                "shift KP_LEFT",
0379                                "selectPreviousColumnExtendSelection",
0380                                "ctrl shift LEFT",
0381                                "selectPreviousColumnExtendSelection",
0382                                "ctrl shift KP_LEFT",
0383                                "selectPreviousColumnExtendSelection",
0384                                "ctrl LEFT", "selectPreviousColumnChangeLead",
0385                                "ctrl KP_LEFT",
0386                                "selectPreviousColumnChangeLead", "RIGHT",
0387                                "selectNextColumn", "KP_RIGHT",
0388                                "selectNextColumn", "shift RIGHT",
0389                                "selectNextColumnExtendSelection",
0390                                "shift KP_RIGHT",
0391                                "selectNextColumnExtendSelection",
0392                                "ctrl shift RIGHT",
0393                                "selectNextColumnExtendSelection",
0394                                "ctrl shift KP_RIGHT",
0395                                "selectNextColumnExtendSelection",
0396                                "ctrl RIGHT", "selectNextColumnChangeLead",
0397                                "ctrl KP_RIGHT", "selectNextColumnChangeLead",
0398                                "HOME", "selectFirstRow", "shift HOME",
0399                                "selectFirstRowExtendSelection",
0400                                "ctrl shift HOME",
0401                                "selectFirstRowExtendSelection", "ctrl HOME",
0402                                "selectFirstRowChangeLead", "END",
0403                                "selectLastRow", "shift END",
0404                                "selectLastRowExtendSelection",
0405                                "ctrl shift END",
0406                                "selectLastRowExtendSelection", "ctrl END",
0407                                "selectLastRowChangeLead", "PAGE_UP",
0408                                "scrollUp", "shift PAGE_UP",
0409                                "scrollUpExtendSelection",
0410                                "ctrl shift PAGE_UP",
0411                                "scrollUpExtendSelection", "ctrl PAGE_UP",
0412                                "scrollUpChangeLead", "PAGE_DOWN",
0413                                "scrollDown", "shift PAGE_DOWN",
0414                                "scrollDownExtendSelection",
0415                                "ctrl shift PAGE_DOWN",
0416                                "scrollDownExtendSelection", "ctrl PAGE_DOWN",
0417                                "scrollDownChangeLead", "ctrl A", "selectAll",
0418                                "ctrl SLASH", "selectAll", "ctrl BACK_SLASH",
0419                                "clearSelection", "SPACE", "addToSelection",
0420                                "ctrl SPACE", "toggleAndAnchor", "shift SPACE",
0421                                "extendTo", "ctrl shift SPACE",
0422                                "moveSelectionTo" }));
0423
0424                DEFAULT_VALUES.put("List.focusInputMap.RightToLeft",
0425                        new UIDefaults.LazyInputMap(new Object[] { "LEFT",
0426                                "selectNextColumn", "KP_LEFT",
0427                                "selectNextColumn", "shift LEFT",
0428                                "selectNextColumnExtendSelection",
0429                                "shift KP_LEFT",
0430                                "selectNextColumnExtendSelection",
0431                                "ctrl shift LEFT",
0432                                "selectNextColumnExtendSelection",
0433                                "ctrl shift KP_LEFT",
0434                                "selectNextColumnExtendSelection", "ctrl LEFT",
0435                                "selectNextColumnChangeLead", "ctrl KP_LEFT",
0436                                "selectNextColumnChangeLead", "RIGHT",
0437                                "selectPreviousColumn", "KP_RIGHT",
0438                                "selectPreviousColumn", "shift RIGHT",
0439                                "selectPreviousColumnExtendSelection",
0440                                "shift KP_RIGHT",
0441                                "selectPreviousColumnExtendSelection",
0442                                "ctrl shift RIGHT",
0443                                "selectPreviousColumnExtendSelection",
0444                                "ctrl shift KP_RIGHT",
0445                                "selectPreviousColumnExtendSelection",
0446                                "ctrl RIGHT", "selectPreviousColumnChangeLead",
0447                                "ctrl KP_RIGHT",
0448                                "selectPreviousColumnChangeLead", }));
0449
0450                DEFAULT_VALUES.put("MenuBar.windowBindings", new Object[] {
0451                        "F10", "takeFocus" });
0452
0453                DEFAULT_VALUES.put("OptionPane.windowBindings", new Object[] {
0454                        "ESCAPE", "close" });
0455
0456                DEFAULT_VALUES.put("RootPane.defaultButtonWindowKeyBindings",
0457                        new Object[] { "ENTER", "press", "released ENTER",
0458                                "release", "ctrl ENTER", "press",
0459                                "ctrl released ENTER", "release" });
0460
0461                DEFAULT_VALUES.put("RootPane.ancestorInputMap",
0462                        new UIDefaults.LazyInputMap(new Object[] { "shift F10",
0463                                "postPopup" }));
0464
0465                DEFAULT_VALUES.put("ScrollBar.anecstorInputMap",
0466                        new UIDefaults.LazyInputMap(new Object[] { "RIGHT",
0467                                "positiveUnitIncrement", "KP_RIGHT",
0468                                "positiveUnitIncrement", "DOWN",
0469                                "positiveUnitIncrement", "KP_DOWN",
0470                                "positiveUnitIncrement", "PAGE_DOWN",
0471                                "positiveBlockIncrement", "LEFT",
0472                                "negativeUnitIncrement", "KP_LEFT",
0473                                "negativeUnitIncrement", "UP",
0474                                "negativeUnitIncrement", "KP_UP",
0475                                "negativeUnitIncrement", "PAGE_UP",
0476                                "negativeBlockIncrement", "HOME", "minScroll",
0477                                "END", "maxScroll" }));
0478
0479                DEFAULT_VALUES.put("ScrollBar.ancestorInputMap.RightToLeft",
0480                        new UIDefaults.LazyInputMap(new Object[] { "RIGHT",
0481                                "negativeUnitIncrement", "KP_RIGHT",
0482                                "negativeUnitIncrement", "LEFT",
0483                                "positiveUnitIncrement", "KP_LEFT",
0484                                "positiveUnitIncrement", }));
0485
0486                DEFAULT_VALUES.put("ScrollPane.ancestorInputMap",
0487                        new UIDefaults.LazyInputMap(new Object[] { "RIGHT",
0488                                "unitScrollRight", "KP_RIGHT",
0489                                "unitScrollRight", "DOWN", "unitScrollDown",
0490                                "KP_DOWN", "unitScrollDown", "LEFT",
0491                                "unitScrollLeft", "KP_LEFT", "unitScrollLeft",
0492                                "UP", "unitScrollUp", "KP_UP", "unitScrollUp",
0493                                "PAGE_UP", "scrollUp", "PAGE_DOWN",
0494                                "scrollDown", "ctrl PAGE_UP", "scrollLeft",
0495                                "ctrl PAGE_DOWN", "scrollRight", "ctrl HOME",
0496                                "scrollHome", "ctrl END", "scrollEnd" }));
0497                DEFAULT_VALUES.put("ScrollPane.ancestorInputMap.RightToLeft",
0498                        new UIDefaults.LazyInputMap(new Object[] {
0499                                "ctrl PAGE_UP", "scrollRight",
0500                                "ctrl PAGE_DOWN", "scrollLeft", }));
0501
0502                DEFAULT_VALUES.put("SplitPane.ancestorInputMap",
0503                        new UIDefaults.LazyInputMap(new Object[] { "UP",
0504                                "negativeIncrement", "DOWN",
0505                                "positiveIncrement", "LEFT",
0506                                "negativeIncrement", "RIGHT",
0507                                "positiveIncrement", "KP_UP",
0508                                "negativeIncrement", "KP_DOWN",
0509                                "positiveIncrement", "KP_LEFT",
0510                                "negativeIncrement", "KP_RIGHT",
0511                                "positiveIncrement", "HOME", "selectMin",
0512                                "END", "selectMax", "F8", "startResize", "F6",
0513                                "toggleFocus", "ctrl TAB", "focusOutForward",
0514                                "ctrl shift TAB", "focusOutBackward" }));
0515
0516                DEFAULT_VALUES.put("Spinner.ancestorInputMap",
0517                        new UIDefaults.LazyInputMap(new Object[] { "UP",
0518                                "increment", "KP_UP", "increment", "DOWN",
0519                                "decrement", "KP_DOWN", "decrement" }));
0520
0521                DEFAULT_VALUES.put("Slider.focusInputMap",
0522                        new UIDefaults.LazyInputMap(new Object[] { "RIGHT",
0523                                "positiveUnitIncrement", "KP_RIGHT",
0524                                "positiveUnitIncrement", "DOWN",
0525                                "negativeUnitIncrement", "KP_DOWN",
0526                                "negativeUnitIncrement", "PAGE_DOWN",
0527                                "negativeBlockIncrement", "ctrl PAGE_DOWN",
0528                                "negativeBlockIncrement", "LEFT",
0529                                "negativeUnitIncrement", "KP_LEFT",
0530                                "negativeUnitIncrement", "UP",
0531                                "positiveUnitIncrement", "KP_UP",
0532                                "positiveUnitIncrement", "PAGE_UP",
0533                                "positiveBlockIncrement", "ctrl PAGE_UP",
0534                                "positiveBlockIncrement", "HOME", "minScroll",
0535                                "END", "maxScroll" }));
0536
0537                DEFAULT_VALUES.put("Slider.focusInputMap.RightToLeft",
0538                        new UIDefaults.LazyInputMap(new Object[] { "RIGHT",
0539                                "negativeUnitIncrement", "KP_RIGHT",
0540                                "negativeUnitIncrement", "LEFT",
0541                                "positiveUnitIncrement", "KP_LEFT",
0542                                "positiveUnitIncrement", }));
0543
0544                DEFAULT_VALUES
0545                        .put("TabbedPane.ancestorInputMap",
0546                                new UIDefaults.LazyInputMap(new Object[] {
0547                                        "ctrl PAGE_DOWN", "navigatePageDown",
0548                                        "ctrl PAGE_UP", "navigatePageUp",
0549                                        "ctrl UP", "requestFocus",
0550                                        "ctrl KP_UP", "requestFocus", }));
0551
0552                DEFAULT_VALUES.put("TabbedPane.focusInputMap",
0553                        new UIDefaults.LazyInputMap(new Object[] { "RIGHT",
0554                                "navigateRight", "KP_RIGHT", "navigateRight",
0555                                "LEFT", "navigateLeft", "KP_LEFT",
0556                                "navigateLeft", "UP", "navigateUp", "KP_UP",
0557                                "navigateUp", "DOWN", "navigateDown",
0558                                "KP_DOWN", "navigateDown", "ctrl DOWN",
0559                                "requestFocusForVisibleComponent",
0560                                "ctrl KP_DOWN",
0561                                "requestFocusForVisibleComponent", }));
0562
0563                DEFAULT_VALUES.put("Table.ancestorInputMap",
0564                        new UIDefaults.LazyInputMap(new Object[] { "ctrl C",
0565                                "copy", "ctrl V", "paste", "ctrl X", "cut",
0566                                "COPY", "copy", "PASTE", "paste", "CUT", "cut",
0567                                "control INSERT", "copy", "shift INSERT",
0568                                "paste", "shift DELETE", "cut", "RIGHT",
0569                                "selectNextColumn", "KP_RIGHT",
0570                                "selectNextColumn", "shift RIGHT",
0571                                "selectNextColumnExtendSelection",
0572                                "shift KP_RIGHT",
0573                                "selectNextColumnExtendSelection",
0574                                "ctrl shift RIGHT",
0575                                "selectNextColumnExtendSelection",
0576                                "ctrl shift KP_RIGHT",
0577                                "selectNextColumnExtendSelection",
0578                                "ctrl RIGHT", "selectNextColumnChangeLead",
0579                                "ctrl KP_RIGHT", "selectNextColumnChangeLead",
0580                                "LEFT", "selectPreviousColumn", "KP_LEFT",
0581                                "selectPreviousColumn", "shift LEFT",
0582                                "selectPreviousColumnExtendSelection",
0583                                "shift KP_LEFT",
0584                                "selectPreviousColumnExtendSelection",
0585                                "ctrl shift LEFT",
0586                                "selectPreviousColumnExtendSelection",
0587                                "ctrl shift KP_LEFT",
0588                                "selectPreviousColumnExtendSelection",
0589                                "ctrl LEFT", "selectPreviousColumnChangeLead",
0590                                "ctrl KP_LEFT",
0591                                "selectPreviousColumnChangeLead", "DOWN",
0592                                "selectNextRow", "KP_DOWN", "selectNextRow",
0593                                "shift DOWN", "selectNextRowExtendSelection",
0594                                "shift KP_DOWN",
0595                                "selectNextRowExtendSelection",
0596                                "ctrl shift DOWN",
0597                                "selectNextRowExtendSelection",
0598                                "ctrl shift KP_DOWN",
0599                                "selectNextRowExtendSelection", "ctrl DOWN",
0600                                "selectNextRowChangeLead", "ctrl KP_DOWN",
0601                                "selectNextRowChangeLead", "UP",
0602                                "selectPreviousRow", "KP_UP",
0603                                "selectPreviousRow", "shift UP",
0604                                "selectPreviousRowExtendSelection",
0605                                "shift KP_UP",
0606                                "selectPreviousRowExtendSelection",
0607                                "ctrl shift UP",
0608                                "selectPreviousRowExtendSelection",
0609                                "ctrl shift KP_UP",
0610                                "selectPreviousRowExtendSelection", "ctrl UP",
0611                                "selectPreviousRowChangeLead", "ctrl KP_UP",
0612                                "selectPreviousRowChangeLead", "HOME",
0613                                "selectFirstColumn", "shift HOME",
0614                                "selectFirstColumnExtendSelection",
0615                                "ctrl shift HOME",
0616                                "selectFirstRowExtendSelection", "ctrl HOME",
0617                                "selectFirstRow", "END", "selectLastColumn",
0618                                "shift END", "selectLastColumnExtendSelection",
0619                                "ctrl shift END",
0620                                "selectLastRowExtendSelection", "ctrl END",
0621                                "selectLastRow", "PAGE_UP",
0622                                "scrollUpChangeSelection", "shift PAGE_UP",
0623                                "scrollUpExtendSelection",
0624                                "ctrl shift PAGE_UP",
0625                                "scrollLeftExtendSelection", "ctrl PAGE_UP",
0626                                "scrollLeftChangeSelection", "PAGE_DOWN",
0627                                "scrollDownChangeSelection", "shift PAGE_DOWN",
0628                                "scrollDownExtendSelection",
0629                                "ctrl shift PAGE_DOWN",
0630                                "scrollRightExtendSelection", "ctrl PAGE_DOWN",
0631                                "scrollRightChangeSelection", "TAB",
0632                                "selectNextColumnCell", "shift TAB",
0633                                "selectPreviousColumnCell", "ENTER",
0634                                "selectNextRowCell", "shift ENTER",
0635                                "selectPreviousRowCell", "ctrl A", "selectAll",
0636                                "ctrl SLASH", "selectAll", "ctrl BACK_SLASH",
0637                                "clearSelection", "ESCAPE", "cancel", "F2",
0638                                "startEditing", "SPACE", "addToSelection",
0639                                "ctrl SPACE", "toggleAndAnchor", "shift SPACE",
0640                                "extendTo", "ctrl shift SPACE",
0641                                "moveSelectionTo", "F8", "focusHeader" }));
0642
0643                DEFAULT_VALUES.put("TableHeader.ancestorInputMap",
0644                        new UIDefaults.LazyInputMap(new Object[] { "SPACE",
0645                                "toggleSortOrder", "LEFT",
0646                                "selectColumnToLeft", "KP_LEFT",
0647                                "selectColumnToLeft", "RIGHT",
0648                                "selectColumnToRight", "KP_RIGHT",
0649                                "selectColumnToRight", "alt LEFT",
0650                                "moveColumnLeft", "alt KP_LEFT",
0651                                "moveColumnLeft", "alt RIGHT",
0652                                "moveColumnRight", "alt KP_RIGHT",
0653                                "moveColumnRight", "alt shift LEFT",
0654                                "resizeLeft", "alt shift KP_LEFT",
0655                                "resizeLeft", "alt shift RIGHT", "resizeRight",
0656                                "alt shift KP_RIGHT", "resizeRight", "ESCAPE",
0657                                "focusTable", }));
0658
0659                DEFAULT_VALUES.put("Tree.ancestorInputMap",
0660                        new UIDefaults.LazyInputMap(new Object[] { "ESCAPE",
0661                                "cancel" }));
0662                DEFAULT_VALUES.put("Tree.focusInputMap",
0663                        new UIDefaults.LazyInputMap(new Object[] { "ADD",
0664                                "expand", "SUBTRACT", "collapse", "ctrl C",
0665                                "copy", "ctrl V", "paste", "ctrl X", "cut",
0666                                "COPY", "copy", "PASTE", "paste", "CUT", "cut",
0667                                "control INSERT", "copy", "shift INSERT",
0668                                "paste", "shift DELETE", "cut", "UP",
0669                                "selectPrevious", "KP_UP", "selectPrevious",
0670                                "shift UP", "selectPreviousExtendSelection",
0671                                "shift KP_UP", "selectPreviousExtendSelection",
0672                                "ctrl shift UP",
0673                                "selectPreviousExtendSelection",
0674                                "ctrl shift KP_UP",
0675                                "selectPreviousExtendSelection", "ctrl UP",
0676                                "selectPreviousChangeLead", "ctrl KP_UP",
0677                                "selectPreviousChangeLead", "DOWN",
0678                                "selectNext", "KP_DOWN", "selectNext",
0679                                "shift DOWN", "selectNextExtendSelection",
0680                                "shift KP_DOWN", "selectNextExtendSelection",
0681                                "ctrl shift DOWN", "selectNextExtendSelection",
0682                                "ctrl shift KP_DOWN",
0683                                "selectNextExtendSelection", "ctrl DOWN",
0684                                "selectNextChangeLead", "ctrl KP_DOWN",
0685                                "selectNextChangeLead", "RIGHT", "selectChild",
0686                                "KP_RIGHT", "selectChild", "LEFT",
0687                                "selectParent", "KP_LEFT", "selectParent",
0688                                "PAGE_UP", "scrollUpChangeSelection",
0689                                "shift PAGE_UP", "scrollUpExtendSelection",
0690                                "ctrl shift PAGE_UP",
0691                                "scrollUpExtendSelection", "ctrl PAGE_UP",
0692                                "scrollUpChangeLead", "PAGE_DOWN",
0693                                "scrollDownChangeSelection", "shift PAGE_DOWN",
0694                                "scrollDownExtendSelection",
0695                                "ctrl shift PAGE_DOWN",
0696                                "scrollDownExtendSelection", "ctrl PAGE_DOWN",
0697                                "scrollDownChangeLead", "HOME", "selectFirst",
0698                                "shift HOME", "selectFirstExtendSelection",
0699                                "ctrl shift HOME",
0700                                "selectFirstExtendSelection", "ctrl HOME",
0701                                "selectFirstChangeLead", "END", "selectLast",
0702                                "shift END", "selectLastExtendSelection",
0703                                "ctrl shift END", "selectLastExtendSelection",
0704                                "ctrl END", "selectLastChangeLead", "F2",
0705                                "startEditing", "ctrl A", "selectAll",
0706                                "ctrl SLASH", "selectAll", "ctrl BACK_SLASH",
0707                                "clearSelection", "ctrl LEFT", "scrollLeft",
0708                                "ctrl KP_LEFT", "scrollLeft", "ctrl RIGHT",
0709                                "scrollRight", "ctrl KP_RIGHT", "scrollRight",
0710                                "SPACE", "addToSelection", "ctrl SPACE",
0711                                "toggleAndAnchor", "shift SPACE", "extendTo",
0712                                "ctrl shift SPACE", "moveSelectionTo" }));
0713                DEFAULT_VALUES.put("Tree.focusInputMap.RightToLeft",
0714                        new UIDefaults.LazyInputMap(new Object[] { "RIGHT",
0715                                "selectParent", "KP_RIGHT", "selectParent",
0716                                "LEFT", "selectChild", "KP_LEFT",
0717                                "selectChild", }));
0718            }
0719
0720            /**
0721             * Returns the default value for the specified property, or null if there
0722             * is no default for the specified value.
0723             */
0724            private static Object getDefaultValue(Object key) {
0725                synchronized (SynthStyle.class) {
0726                    if (DEFAULT_VALUES == null) {
0727                        DEFAULT_VALUES = new HashMap();
0728                        populateDefaultValues();
0729                    }
0730                    Object value = DEFAULT_VALUES.get(key);
0731                    if (value instanceof  UIDefaults.LazyValue) {
0732                        value = ((UIDefaults.LazyValue) value)
0733                                .createValue(null);
0734                        DEFAULT_VALUES.put(key, value);
0735                    }
0736                    return value;
0737                }
0738            }
0739
0740            /**
0741             * Constructs a SynthStyle.
0742             */
0743            public SynthStyle() {
0744            }
0745
0746            /**
0747             * Returns the <code>SynthGraphicUtils</code> for the specified context.
0748             *
0749             * @param context SynthContext identifying requester
0750             * @return SynthGraphicsUtils
0751             */
0752            public SynthGraphicsUtils getGraphicsUtils(SynthContext context) {
0753                return SYNTH_GRAPHICS;
0754            }
0755
0756            /**
0757             * Returns the color for the specified state. This gives precedence to
0758             * foreground and background of the <code>JComponent</code>. If the
0759             * <code>Color</code> from the <code>JComponent</code> is not appropriate,
0760             * or not used, this will invoke <code>getColorForState</code>. Subclasses
0761             * should generally not have to override this, instead override
0762             * {@link #getColorForState}.
0763             *
0764             * @param context SynthContext identifying requester
0765             * @param type Type of color being requested.
0766             * @return Color
0767             */
0768            public Color getColor(SynthContext context, ColorType type) {
0769                JComponent c = context.getComponent();
0770                Region id = context.getRegion();
0771                int cs = context.getComponentState();
0772                // For the enabled state, prefer the widget's colors
0773                if (!id.isSubregion() && cs == SynthConstants.ENABLED) {
0774                    if (type == ColorType.BACKGROUND) {
0775                        return c.getBackground();
0776                    } else if (type == ColorType.FOREGROUND) {
0777                        return c.getForeground();
0778                    } else if (type == ColorType.TEXT_FOREGROUND) {
0779                        // If getForeground returns a non-UIResource it means the
0780                        // developer has explicitly set the foreground, use it over
0781                        // that of TEXT_FOREGROUND as that is typically the expected
0782                        // behavior.
0783                        Color color = c.getForeground();
0784                        if (!(color instanceof  UIResource)) {
0785                            return color;
0786                        }
0787                    }
0788                }
0789                // Then use what we've locally defined
0790                Color color = getColorForState(context, type);
0791                if (color == null) {
0792                    // No color, fallback to that of the widget.
0793                    if (type == ColorType.BACKGROUND
0794                            || type == ColorType.TEXT_BACKGROUND) {
0795                        return c.getBackground();
0796                    } else if (type == ColorType.FOREGROUND
0797                            || type == ColorType.TEXT_FOREGROUND) {
0798                        return c.getForeground();
0799                    }
0800                }
0801                return color;
0802            }
0803
0804            /**
0805             * Returns the color for the specified state. This should NOT call any
0806             * methods on the <code>JComponent</code>.
0807             *
0808             * @param context SynthContext identifying requester
0809             * @param type Type of color being requested.
0810             * @return Color to render with
0811             */
0812            protected abstract Color getColorForState(SynthContext context,
0813                    ColorType type);
0814
0815            /**
0816             * Returns the Font for the specified state. This redirects to the
0817             * <code>JComponent</code> from the <code>context</code> as necessary.
0818             * If this does not redirect
0819             * to the JComponent {@link #getFontForState} is invoked.
0820             *
0821             * @param context SynthContext identifying requester
0822             * @return Font to render with
0823             */
0824            public Font getFont(SynthContext context) {
0825                JComponent c = context.getComponent();
0826                if (context.getComponentState() == SynthConstants.ENABLED) {
0827                    return c.getFont();
0828                }
0829                Font cFont = c.getFont();
0830                if (cFont != null && !(cFont instanceof  UIResource)) {
0831                    return cFont;
0832                }
0833                return getFontForState(context);
0834            }
0835
0836            /**
0837             * Returns the font for the specified state. This should NOT call any
0838             * method on the <code>JComponent</code>.
0839             *
0840             * @param context SynthContext identifying requester
0841             * @return Font to render with
0842             */
0843            protected abstract Font getFontForState(SynthContext context);
0844
0845            /**
0846             * Returns the Insets that are used to calculate sizing information.
0847             *
0848             * @param context SynthContext identifying requester
0849             * @param insets Insets to place return value in.
0850             * @return Sizing Insets.
0851             */
0852            public Insets getInsets(SynthContext context, Insets insets) {
0853                if (insets == null) {
0854                    insets = new Insets(0, 0, 0, 0);
0855                }
0856                insets.top = insets.bottom = insets.left = insets.right = 0;
0857                return insets;
0858            }
0859
0860            /**
0861             * Returns the <code>SynthPainter</code> that will be used for painting.
0862             * This may return null.
0863             *
0864             * @param context SynthContext identifying requester
0865             * @return SynthPainter to use 
0866             */
0867            public SynthPainter getPainter(SynthContext context) {
0868                return null;
0869            }
0870
0871            /**
0872             * Returns true if the region is opaque.
0873             *
0874             * @param context SynthContext identifying requester
0875             * @return true if region is opaque.
0876             */
0877            public boolean isOpaque(SynthContext context) {
0878                return true;
0879            }
0880
0881            /**
0882             * Getter for a region specific style property.
0883             *
0884             * @param context SynthContext identifying requester
0885             * @param key Property being requested.
0886             * @return Value of the named property
0887             */
0888            public Object get(SynthContext context, Object key) {
0889                return getDefaultValue(key);
0890            }
0891
0892            void installDefaults(SynthContext context, SynthUI ui) {
0893                // Special case the Border as this will likely change when the LAF
0894                // can have more control over this.
0895                if (!context.isSubregion()) {
0896                    JComponent c = context.getComponent();
0897                    Border border = c.getBorder();
0898
0899                    if (border == null || border instanceof  UIResource) {
0900                        c.setBorder(new SynthBorder(ui,
0901                                getInsets(context, null)));
0902                    }
0903                }
0904                installDefaults(context);
0905            }
0906
0907            /**
0908             * Installs the necessary state from this Style on the
0909             * <code>JComponent</code> from <code>context</code>.
0910             *
0911             * @param context SynthContext identifying component to install properties
0912             *        to.
0913             */
0914            public void installDefaults(SynthContext context) {
0915                if (!context.isSubregion()) {
0916                    JComponent c = context.getComponent();
0917                    Region region = context.getRegion();
0918                    Font font = c.getFont();
0919
0920                    if (font == null || (font instanceof  UIResource)) {
0921                        c.setFont(getFontForState(context));
0922                    }
0923                    Color background = c.getBackground();
0924                    if (background == null
0925                            || (background instanceof  UIResource)) {
0926                        c.setBackground(getColorForState(context,
0927                                ColorType.BACKGROUND));
0928                    }
0929                    Color foreground = c.getForeground();
0930                    if (foreground == null
0931                            || (foreground instanceof  UIResource)) {
0932                        c.setForeground(getColorForState(context,
0933                                ColorType.FOREGROUND));
0934                    }
0935                    LookAndFeel.installProperty(c, "opaque", Boolean
0936                            .valueOf(isOpaque(context)));
0937                }
0938            }
0939
0940            /**
0941             * Uninstalls any state that this style installed on
0942             * the <code>JComponent</code> from <code>context</code>.
0943             * <p>
0944             * Styles should NOT depend upon this being called, in certain cases
0945             * it may never be called.
0946             *
0947             * @param context SynthContext identifying component to install properties
0948             *        to.
0949             */
0950            public void uninstallDefaults(SynthContext context) {
0951                if (!context.isSubregion()) {
0952                    // NOTE: because getForeground, getBackground and getFont will look
0953                    // at the parent Container, if we set them to null it may
0954                    // mean we they return a non-null and non-UIResource value
0955                    // preventing install from correctly settings its colors/font. For
0956                    // this reason we do not uninstall the fg/bg/font.
0957
0958                    JComponent c = context.getComponent();
0959                    Border border = c.getBorder();
0960
0961                    if (border instanceof  UIResource) {
0962                        c.setBorder(null);
0963                    }
0964                }
0965            }
0966
0967            /**
0968             * Convenience method to get a specific style property whose value is
0969             * a <code>Number</code>. If the value is a <code>Number</code>,
0970             * <code>intValue</code> is returned, otherwise <code>defaultValue</code>
0971             * is returned.
0972             *
0973             * @param context SynthContext identifying requester
0974             * @param key Property being requested.
0975             * @param defaultValue Value to return if the property has not been
0976             *        specified, or is not a Number
0977             * @return Value of the named property
0978             */
0979            public int getInt(SynthContext context, Object key, int defaultValue) {
0980                Object value = get(context, key);
0981
0982                if (value instanceof  Number) {
0983                    return ((Number) value).intValue();
0984                }
0985                return defaultValue;
0986            }
0987
0988            /**
0989             * Convenience method to get a specific style property whose value is
0990             * an Boolean.
0991             *
0992             * @param context SynthContext identifying requester
0993             * @param key Property being requested.
0994             * @param defaultValue Value to return if the property has not been
0995             *        specified, or is not a Boolean
0996             * @return Value of the named property
0997             */
0998            public boolean getBoolean(SynthContext context, Object key,
0999                    boolean defaultValue) {
1000                Object value = get(context, key);
1001
1002                if (value instanceof  Boolean) {
1003                    return ((Boolean) value).booleanValue();
1004                }
1005                return defaultValue;
1006            }
1007
1008            /**
1009             * Convenience method to get a specific style property whose value is
1010             * an Icon.
1011             *
1012             * @param context SynthContext identifying requester
1013             * @param key Property being requested.
1014             * @return Value of the named property, or null if not specified
1015             */
1016            public Icon getIcon(SynthContext context, Object key) {
1017                Object value = get(context, key);
1018
1019                if (value instanceof  Icon) {
1020                    return (Icon) value;
1021                }
1022                return null;
1023            }
1024
1025            /**
1026             * Convenience method to get a specific style property whose value is
1027             * a String.
1028             *
1029             * @param context SynthContext identifying requester
1030             * @param key Property being requested.
1031             * @param defaultValue Value to return if the property has not been
1032             *        specified, or is not a String
1033             * @return Value of the named property
1034             */
1035            public String getString(SynthContext context, Object key,
1036                    String defaultValue) {
1037                Object value = get(context, key);
1038
1039                if (value instanceof  String) {
1040                    return (String) value;
1041                }
1042                return defaultValue;
1043            }
1044        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.