KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > java > swing > plaf > windows > WindowsLookAndFeel


1 /*
2  * @(#)WindowsLookAndFeel.java 1.189 07/01/18
3  *
4  * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
5  * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
6  */

7
8 /*
9  * <p>These classes are designed to be used while the
10  * corresponding <code>LookAndFeel</code> class has been installed
11  * (<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
12  * Using them while a different <code>LookAndFeel</code> is installed
13  * may produce unexpected results, including exceptions.
14  * Additionally, changing the <code>LookAndFeel</code>
15  * maintained by the <code>UIManager</code> without updating the
16  * corresponding <code>ComponentUI</code> of any
17  * <code>JComponent</code>s may also produce unexpected results,
18  * such as the wrong colors showing up, and is generally not
19  * encouraged.
20  *
21  */

22
23 package com.sun.java.swing.plaf.windows;
24
25 import java.awt.*;
26 import javax.swing.plaf.*;
27 import javax.swing.*;
28 import javax.swing.plaf.basic.*;
29 import javax.swing.border.*;
30 import javax.swing.text.JTextComponent JavaDoc;
31 import javax.swing.text.DefaultEditorKit JavaDoc;
32
33 import java.awt.Font JavaDoc;
34 import java.awt.Color JavaDoc;
35 import java.awt.SystemColor JavaDoc;
36 import java.awt.event.KeyEvent JavaDoc;
37 import java.awt.event.InputEvent JavaDoc;
38 import java.awt.event.ActionEvent JavaDoc;
39
40 import java.beans.PropertyChangeListener JavaDoc;
41 import java.beans.PropertyChangeEvent JavaDoc;
42
43 import java.net.URL JavaDoc;
44 import java.io.Serializable JavaDoc;
45 import java.security.AccessController JavaDoc;
46 import java.util.*;
47
48 import sun.awt.shell.ShellFolder;
49 import sun.font.FontManager;
50 import sun.security.action.GetPropertyAction;
51
52 import sun.swing.SwingLazyValue;
53 import sun.swing.BorderProvider;
54 import com.sun.java.swing.SwingUtilities2;
55
56 import com.sun.java.swing.plaf.windows.TMSchema.*;
57 import com.sun.java.swing.plaf.windows.XPStyle.Skin;
58
59 import com.sun.java.swing.plaf.windows.WindowsIconFactory
60
    .VistaMenuItemCheckIconFactory;
61
62 /**
63  * Implements the Windows95/98/NT/2000 Look and Feel.
64  * UI classes not implemented specifically for Windows will
65  * default to those implemented in Basic.
66  * <p>
67  * <strong>Warning:</strong>
68  * Serialized objects of this class will not be compatible with
69  * future Swing releases. The current serialization support is appropriate
70  * for short term storage or RMI between applications running the same
71  * version of Swing. A future release of Swing will provide support for
72  * long term persistence.
73  *
74  * @version 1.189 01/18/07
75  * @author unattributed
76  */

77 public class WindowsLookAndFeel extends BasicLookAndFeel
78 {
79     private Toolkit toolkit;
80     private boolean updatePending = false;
81
82     private boolean useSystemFontSettings = true;
83     private boolean useSystemFontSizeSettings;
84
85     // These properties are not used directly, but are kept as
86
// private members to avoid being GC'd.
87
private DesktopProperty themeActive, dllName, colorName, sizeName;
88
89     public String JavaDoc getName() {
90         return "Windows";
91     }
92
93     public String JavaDoc getDescription() {
94         return "The Microsoft Windows Look and Feel";
95     }
96
97     public String JavaDoc getID() {
98         return "Windows";
99     }
100     
101     public boolean isNativeLookAndFeel() {
102         String JavaDoc osName = System.getProperty("os.name");
103         return (osName != null) && (osName.indexOf("Windows") != -1);
104     }
105
106     public boolean isSupportedLookAndFeel() {
107         return isNativeLookAndFeel();
108     }
109
110     public void initialize() {
111         super.initialize();
112     toolkit = Toolkit.getDefaultToolkit();
113
114     // Set the flag which determines which version of Windows should
115
// be rendered. This flag only need to be set once.
116
// if version <= 4.0 then the classic LAF should be loaded.
117
String JavaDoc osVersion = System.getProperty("os.version");
118     if (osVersion != null) {
119         Float JavaDoc version = Float.valueOf(osVersion);
120         if (version.floatValue() <= 4.0) {
121         isClassicWindows = true;
122         } else {
123         isClassicWindows = false;
124         XPStyle.invalidateStyle();
125         }
126     }
127
128     // Using the fonts set by the user can potentially cause
129
// performance and compatibility issues, so allow this feature
130
// to be switched off either at runtime or programmatically
131
//
132
String JavaDoc systemFonts = (String JavaDoc) java.security.AccessController.doPrivileged(
133                new GetPropertyAction("swing.useSystemFontSettings"));
134     useSystemFontSettings = (systemFonts == null ||
135                                  Boolean.valueOf(systemFonts).booleanValue());
136
137         if (useSystemFontSettings) {
138             Object JavaDoc value = UIManager.get("Application.useSystemFontSettings");
139
140             useSystemFontSettings = (value == null ||
141                                      Boolean.TRUE.equals(value));
142         }
143         KeyboardFocusManager.getCurrentKeyboardFocusManager().
144             addKeyEventPostProcessor(WindowsRootPaneUI.altProcessor);
145
146     }
147     
148     /**
149      * Initialize the uiClassID to BasicComponentUI mapping.
150      * The JComponent classes define their own uiClassID constants
151      * (see AbstractComponent.getUIClassID). This table must
152      * map those constants to a BasicComponentUI class of the
153      * appropriate type.
154      *
155      * @see BasicLookAndFeel#getDefaults
156      */

157     protected void initClassDefaults(UIDefaults table)
158     {
159         super.initClassDefaults(table);
160
161         final String JavaDoc windowsPackageName = "com.sun.java.swing.plaf.windows.";
162
163         Object JavaDoc[] uiDefaults = {
164               "ButtonUI", windowsPackageName + "WindowsButtonUI",
165             "CheckBoxUI", windowsPackageName + "WindowsCheckBoxUI",
166     "CheckBoxMenuItemUI", windowsPackageName + "WindowsCheckBoxMenuItemUI",
167            "LabelUI", windowsPackageName + "WindowsLabelUI",
168          "RadioButtonUI", windowsPackageName + "WindowsRadioButtonUI",
169  "RadioButtonMenuItemUI", windowsPackageName + "WindowsRadioButtonMenuItemUI",
170         "ToggleButtonUI", windowsPackageName + "WindowsToggleButtonUI",
171          "ProgressBarUI", windowsPackageName + "WindowsProgressBarUI",
172           "SliderUI", windowsPackageName + "WindowsSliderUI",
173        "SeparatorUI", windowsPackageName + "WindowsSeparatorUI",
174            "SplitPaneUI", windowsPackageName + "WindowsSplitPaneUI",
175          "SpinnerUI", windowsPackageName + "WindowsSpinnerUI",
176       "TabbedPaneUI", windowsPackageName + "WindowsTabbedPaneUI",
177             "TextAreaUI", windowsPackageName + "WindowsTextAreaUI",
178            "TextFieldUI", windowsPackageName + "WindowsTextFieldUI",
179        "PasswordFieldUI", windowsPackageName + "WindowsPasswordFieldUI",
180             "TextPaneUI", windowsPackageName + "WindowsTextPaneUI",
181           "EditorPaneUI", windowsPackageName + "WindowsEditorPaneUI",
182                 "TreeUI", windowsPackageName + "WindowsTreeUI",
183          "ToolBarUI", windowsPackageName + "WindowsToolBarUI",
184     "ToolBarSeparatorUI", windowsPackageName + "WindowsToolBarSeparatorUI",
185             "ComboBoxUI", windowsPackageName + "WindowsComboBoxUI",
186      "TableHeaderUI", windowsPackageName + "WindowsTableHeaderUI",
187        "InternalFrameUI", windowsPackageName + "WindowsInternalFrameUI",
188          "DesktopPaneUI", windowsPackageName + "WindowsDesktopPaneUI",
189          "DesktopIconUI", windowsPackageName + "WindowsDesktopIconUI",
190          "FileChooserUI", windowsPackageName + "WindowsFileChooserUI",
191             "MenuUI", windowsPackageName + "WindowsMenuUI",
192         "MenuItemUI", windowsPackageName + "WindowsMenuItemUI",
193          "MenuBarUI", windowsPackageName + "WindowsMenuBarUI",
194        "PopupMenuUI", windowsPackageName + "WindowsPopupMenuUI",
195   "PopupMenuSeparatorUI", windowsPackageName + "WindowsPopupMenuSeparatorUI",
196        "ScrollBarUI", windowsPackageName + "WindowsScrollBarUI",
197         "RootPaneUI", windowsPackageName + "WindowsRootPaneUI"
198         };
199
200         table.putDefaults(uiDefaults);
201     }
202
203     /**
204      * Load the SystemColors into the defaults table. The keys
205      * for SystemColor defaults are the same as the names of
206      * the public fields in SystemColor. If the table is being
207      * created on a native Windows platform we use the SystemColor
208      * values, otherwise we create color objects whose values match
209      * the defaults Windows95 colors.
210      */

211     protected void initSystemColorDefaults(UIDefaults table)
212     {
213         String JavaDoc[] defaultSystemColors = {
214                 "desktop", "#005C5C", /* Color of the desktop background */
215           "activeCaption", "#000080", /* Color for captions (title bars) when they are active. */
216       "activeCaptionText", "#FFFFFF", /* Text color for text in captions (title bars). */
217     "activeCaptionBorder", "#C0C0C0", /* Border color for caption (title bar) window borders. */
218         "inactiveCaption", "#808080", /* Color for captions (title bars) when not active. */
219     "inactiveCaptionText", "#C0C0C0", /* Text color for text in inactive captions (title bars). */
220   "inactiveCaptionBorder", "#C0C0C0", /* Border color for inactive caption (title bar) window borders. */
221                  "window", "#FFFFFF", /* Default color for the interior of windows */
222            "windowBorder", "#000000", /* ??? */
223              "windowText", "#000000", /* ??? */
224                    "menu", "#C0C0C0", /* Background color for menus */
225        "menuPressedItemB", "#000080", /* LightShadow of menubutton highlight */
226        "menuPressedItemF", "#FFFFFF", /* Default color for foreground "text" in menu item */
227                "menuText", "#000000", /* Text color for menus */
228                    "text", "#C0C0C0", /* Text background color */
229                "textText", "#000000", /* Text foreground color */
230           "textHighlight", "#000080", /* Text background color when selected */
231       "textHighlightText", "#FFFFFF", /* Text color when selected */
232        "textInactiveText", "#808080", /* Text color when disabled */
233                 "control", "#C0C0C0", /* Default color for controls (buttons, sliders, etc) */
234             "controlText", "#000000", /* Default color for text in controls */
235        "controlHighlight", "#C0C0C0",
236
237   /*"controlHighlight", "#E0E0E0",*/ /* Specular highlight (opposite of the shadow) */
238      "controlLtHighlight", "#FFFFFF", /* Highlight color for controls */
239           "controlShadow", "#808080", /* Shadow color for controls */
240         "controlDkShadow", "#000000", /* Dark shadow color for controls */
241               "scrollbar", "#E0E0E0", /* Scrollbar background (usually the "track") */
242                    "info", "#FFFFE1", /* ??? */
243                "infoText", "#000000" /* ??? */
244         };
245
246         loadSystemColors(table, defaultSystemColors, isNativeLookAndFeel());
247     }
248
249    /**
250      * Initialize the defaults table with the name of the ResourceBundle
251      * used for getting localized defaults.
252      */

253     private void initResourceBundle(UIDefaults table) {
254         table.addResourceBundle( "com.sun.java.swing.plaf.windows.resources.windows" );
255     }
256
257     // XXX - there are probably a lot of redundant values that could be removed.
258
// ie. Take a look at RadioButtonBorder, etc...
259
protected void initComponentDefaults(UIDefaults table)
260     {
261         super.initComponentDefaults( table );
262
263         initResourceBundle(table);
264
265         // *** Shared Fonts
266
Integer JavaDoc twelve = new Integer JavaDoc(12);
267     Integer JavaDoc eight = new Integer JavaDoc(8);
268     Integer JavaDoc ten = new Integer JavaDoc(10);
269     Integer JavaDoc fontPlain = new Integer JavaDoc(Font.PLAIN);
270     Integer JavaDoc fontBold = new Integer JavaDoc(Font.BOLD);
271
272     Object JavaDoc dialogPlain12 = new SwingLazyValue(
273                    "javax.swing.plaf.FontUIResource",
274                    null,
275                    new Object JavaDoc[] {"Dialog", fontPlain, twelve});
276
277     Object JavaDoc sansSerifPlain12 = new SwingLazyValue(
278               "javax.swing.plaf.FontUIResource",
279               null,
280               new Object JavaDoc[] {"SansSerif", fontPlain, twelve});
281     Object JavaDoc monospacedPlain12 = new SwingLazyValue(
282               "javax.swing.plaf.FontUIResource",
283               null,
284               new Object JavaDoc[] {"MonoSpaced", fontPlain, twelve});
285     Object JavaDoc dialogBold12 = new SwingLazyValue(
286               "javax.swing.plaf.FontUIResource",
287               null,
288               new Object JavaDoc[] {"Dialog", fontBold, twelve});
289
290         // *** Colors
291
// XXX - some of these doens't seem to be used
292
ColorUIResource red = new ColorUIResource(Color.red);
293         ColorUIResource black = new ColorUIResource(Color.black);
294         ColorUIResource white = new ColorUIResource(Color.white);
295         ColorUIResource yellow = new ColorUIResource(Color.yellow);
296         ColorUIResource gray = new ColorUIResource(Color.gray);
297         ColorUIResource lightGray = new ColorUIResource(Color.lightGray);
298         ColorUIResource darkGray = new ColorUIResource(Color.darkGray);
299         ColorUIResource scrollBarTrack = lightGray;
300         ColorUIResource scrollBarTrackHighlight = darkGray;
301
302     // Set the flag which determines which version of Windows should
303
// be rendered. This flag only need to be set once.
304
// if version <= 4.0 then the classic LAF should be loaded.
305
String JavaDoc osVersion = System.getProperty("os.version");
306     if (osVersion != null) {
307         try {
308         Float JavaDoc version = Float.valueOf(osVersion);
309         if (version.floatValue() <= 4.0) {
310             isClassicWindows = true;
311         } else {
312             isClassicWindows = false;
313         }
314         } catch (NumberFormatException JavaDoc ex) {
315         isClassicWindows = false;
316         }
317     }
318
319         // *** Tree
320
ColorUIResource treeSelection = new ColorUIResource(0, 0, 128);
321         Object JavaDoc treeExpandedIcon = WindowsTreeUI.ExpandedIcon.createExpandedIcon();
322
323         Object JavaDoc treeCollapsedIcon = WindowsTreeUI.CollapsedIcon.createCollapsedIcon();
324
325
326     // *** Text
327
Object JavaDoc fieldInputMap = new UIDefaults.LazyInputMap(new Object JavaDoc[] {
328                   "control C", DefaultEditorKit.copyAction,
329                   "control V", DefaultEditorKit.pasteAction,
330                       "control X", DefaultEditorKit.cutAction,
331                "COPY", DefaultEditorKit.copyAction,
332               "PASTE", DefaultEditorKit.pasteAction,
333                 "CUT", DefaultEditorKit.cutAction,
334                  "control INSERT", DefaultEditorKit.copyAction,
335                    "shift INSERT", DefaultEditorKit.pasteAction,
336                    "shift DELETE", DefaultEditorKit.cutAction,
337                   "control A", DefaultEditorKit.selectAllAction,
338          "control BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
339                  "shift LEFT", DefaultEditorKit.selectionBackwardAction,
340                 "shift RIGHT", DefaultEditorKit.selectionForwardAction,
341                "control LEFT", DefaultEditorKit.previousWordAction,
342               "control RIGHT", DefaultEditorKit.nextWordAction,
343          "control shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
344             "control shift RIGHT", DefaultEditorKit.selectionNextWordAction,
345                        "HOME", DefaultEditorKit.beginLineAction,
346                         "END", DefaultEditorKit.endLineAction,
347                  "shift HOME", DefaultEditorKit.selectionBeginLineAction,
348                   "shift END", DefaultEditorKit.selectionEndLineAction,
349                      "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
350                          "ctrl H", DefaultEditorKit.deletePrevCharAction,
351                          "DELETE", DefaultEditorKit.deleteNextCharAction,
352                           "RIGHT", DefaultEditorKit.forwardAction,
353                            "LEFT", DefaultEditorKit.backwardAction,
354                        "KP_RIGHT", DefaultEditorKit.forwardAction,
355                         "KP_LEFT", DefaultEditorKit.backwardAction,
356                       "ENTER", JTextField.notifyAction,
357                 "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
358     });
359
360         Object JavaDoc passwordInputMap = new UIDefaults.LazyInputMap(new Object JavaDoc[] {
361                       "control C", DefaultEditorKit.copyAction,
362                       "control V", DefaultEditorKit.pasteAction,
363                       "control X", DefaultEditorKit.cutAction,
364                            "COPY", DefaultEditorKit.copyAction,
365                           "PASTE", DefaultEditorKit.pasteAction,
366                             "CUT", DefaultEditorKit.cutAction,
367                  "control INSERT", DefaultEditorKit.copyAction,
368                    "shift INSERT", DefaultEditorKit.pasteAction,
369                    "shift DELETE", DefaultEditorKit.cutAction,
370                       "control A", DefaultEditorKit.selectAllAction,
371              "control BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
372                      "shift LEFT", DefaultEditorKit.selectionBackwardAction,
373                     "shift RIGHT", DefaultEditorKit.selectionForwardAction,
374                    "control LEFT", DefaultEditorKit.beginLineAction,
375                   "control RIGHT", DefaultEditorKit.endLineAction,
376              "control shift LEFT", DefaultEditorKit.selectionBeginLineAction,
377             "control shift RIGHT", DefaultEditorKit.selectionEndLineAction,
378                            "HOME", DefaultEditorKit.beginLineAction,
379                             "END", DefaultEditorKit.endLineAction,
380                      "shift HOME", DefaultEditorKit.selectionBeginLineAction,
381                       "shift END", DefaultEditorKit.selectionEndLineAction,
382                      "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
383                          "ctrl H", DefaultEditorKit.deletePrevCharAction,
384                          "DELETE", DefaultEditorKit.deleteNextCharAction,
385                           "RIGHT", DefaultEditorKit.forwardAction,
386                            "LEFT", DefaultEditorKit.backwardAction,
387                        "KP_RIGHT", DefaultEditorKit.forwardAction,
388                         "KP_LEFT", DefaultEditorKit.backwardAction,
389                           "ENTER", JTextField.notifyAction,
390                 "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
391         });
392
393     Object JavaDoc multilineInputMap = new UIDefaults.LazyInputMap(new Object JavaDoc[] {
394               "control C", DefaultEditorKit.copyAction,
395               "control V", DefaultEditorKit.pasteAction,
396               "control X", DefaultEditorKit.cutAction,
397                "COPY", DefaultEditorKit.copyAction,
398               "PASTE", DefaultEditorKit.pasteAction,
399                 "CUT", DefaultEditorKit.cutAction,
400                  "control INSERT", DefaultEditorKit.copyAction,
401                    "shift INSERT", DefaultEditorKit.pasteAction,
402                    "shift DELETE", DefaultEditorKit.cutAction,
403              "shift LEFT", DefaultEditorKit.selectionBackwardAction,
404             "shift RIGHT", DefaultEditorKit.selectionForwardAction,
405            "control LEFT", DefaultEditorKit.previousWordAction,
406           "control RIGHT", DefaultEditorKit.nextWordAction,
407          "control shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
408         "control shift RIGHT", DefaultEditorKit.selectionNextWordAction,
409               "control A", DefaultEditorKit.selectAllAction,
410          "control BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
411                "HOME", DefaultEditorKit.beginLineAction,
412                 "END", DefaultEditorKit.endLineAction,
413              "shift HOME", DefaultEditorKit.selectionBeginLineAction,
414               "shift END", DefaultEditorKit.selectionEndLineAction,
415            "control HOME", DefaultEditorKit.beginAction,
416             "control END", DefaultEditorKit.endAction,
417          "control shift HOME", DefaultEditorKit.selectionBeginAction,
418           "control shift END", DefaultEditorKit.selectionEndAction,
419                  "UP", DefaultEditorKit.upAction,
420                "DOWN", DefaultEditorKit.downAction,
421                      "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
422                          "ctrl H", DefaultEditorKit.deletePrevCharAction,
423                          "DELETE", DefaultEditorKit.deleteNextCharAction,
424                           "RIGHT", DefaultEditorKit.forwardAction,
425                            "LEFT", DefaultEditorKit.backwardAction,
426                        "KP_RIGHT", DefaultEditorKit.forwardAction,
427                         "KP_LEFT", DefaultEditorKit.backwardAction,
428             "PAGE_UP", DefaultEditorKit.pageUpAction,
429               "PAGE_DOWN", DefaultEditorKit.pageDownAction,
430           "shift PAGE_UP", "selection-page-up",
431             "shift PAGE_DOWN", "selection-page-down",
432          "ctrl shift PAGE_UP", "selection-page-left",
433        "ctrl shift PAGE_DOWN", "selection-page-right",
434                "shift UP", DefaultEditorKit.selectionUpAction,
435              "shift DOWN", DefaultEditorKit.selectionDownAction,
436               "ENTER", DefaultEditorKit.insertBreakAction,
437                 "TAB", DefaultEditorKit.insertTabAction,
438                       "control T", "next-link-action",
439                 "control shift T", "previous-link-action",
440                   "control SPACE", "activate-link-action",
441                 "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
442     });
443
444     Object JavaDoc menuItemAcceleratorDelimiter = new String JavaDoc("+");
445
446     Object JavaDoc ControlBackgroundColor = new DesktopProperty(
447                                                        "win.3d.backgroundColor",
448                                 table.get("control"),
449                                                        toolkit);
450     Object JavaDoc ControlLightColor = new DesktopProperty(
451                                                        "win.3d.lightColor",
452                             table.get("controlHighlight"),
453                                                        toolkit);
454     Object JavaDoc ControlHighlightColor = new DesktopProperty(
455                                                        "win.3d.highlightColor",
456                             table.get("controlLtHighlight"),
457                                                        toolkit);
458     Object JavaDoc ControlShadowColor = new DesktopProperty(
459                                                        "win.3d.shadowColor",
460                             table.get("controlShadow"),
461                                                        toolkit);
462     Object JavaDoc ControlDarkShadowColor = new DesktopProperty(
463                                                        "win.3d.darkShadowColor",
464                             table.get("controlDkShadow"),
465                                                        toolkit);
466     Object JavaDoc ControlTextColor = new DesktopProperty(
467                                                        "win.button.textColor",
468                             table.get("controlText"),
469                                                        toolkit);
470     Object JavaDoc MenuBackgroundColor = new DesktopProperty(
471                                                        "win.menu.backgroundColor",
472                             table.get("menu"),
473                                                        toolkit);
474     Object JavaDoc MenuBarBackgroundColor = new DesktopProperty(
475                                                        "win.menubar.backgroundColor",
476                             table.get("menu"),
477                                                        toolkit);
478     Object JavaDoc MenuTextColor = new DesktopProperty(
479                                                        "win.menu.textColor",
480                             table.get("menuText"),
481                                                        toolkit);
482     Object JavaDoc SelectionBackgroundColor = new DesktopProperty(
483                                                        "win.item.highlightColor",
484                             table.get("textHighlight"),
485                                                        toolkit);
486     Object JavaDoc SelectionTextColor = new DesktopProperty(
487                                                        "win.item.highlightTextColor",
488                             table.get("textHighlightText"),
489                                                        toolkit);
490     Object JavaDoc WindowBackgroundColor = new DesktopProperty(
491                                                        "win.frame.backgroundColor",
492                             table.get("window"),
493                                                        toolkit);
494     Object JavaDoc WindowTextColor = new DesktopProperty(
495                                                        "win.frame.textColor",
496                             table.get("windowText"),
497                                                        toolkit);
498         Object JavaDoc WindowBorderWidth = new DesktopProperty(
499                                                        "win.frame.sizingBorderWidth",
500                                                        new Integer JavaDoc(1),
501                                                        toolkit);
502         Object JavaDoc TitlePaneHeight = new DesktopProperty(
503                                                        "win.frame.captionHeight",
504                                                        new Integer JavaDoc(18),
505                                                        toolkit);
506         Object JavaDoc TitleButtonWidth = new DesktopProperty(
507                                                        "win.frame.captionButtonWidth",
508                                                        new Integer JavaDoc(16),
509                                                        toolkit);
510         Object JavaDoc TitleButtonHeight = new DesktopProperty(
511                                                        "win.frame.captionButtonHeight",
512                                                        new Integer JavaDoc(16),
513                                                        toolkit);
514     Object JavaDoc InactiveTextColor = new DesktopProperty(
515                                                        "win.text.grayedTextColor",
516                             table.get("textInactiveText"),
517                                                        toolkit);
518     Object JavaDoc ScrollbarBackgroundColor = new DesktopProperty(
519                                                        "win.scrollbar.backgroundColor",
520                             table.get("scrollbar"),
521                                                        toolkit);
522
523         Object JavaDoc TextBackground = new XPColorValue(
524             Part.EP_EDIT, null, Prop.FILLCOLOR,
525             WindowBackgroundColor);
526         Object JavaDoc ReadOnlyTextBackground = new XPColorValue(
527             Part.EP_EDITTEXT, State.READONLY, Prop.FILLCOLOR,
528             ControlBackgroundColor);
529         Object JavaDoc DisabledTextBackground = new XPColorValue(
530             Part.EP_EDITTEXT, State.DISABLED, Prop.FILLCOLOR,
531             ControlBackgroundColor);
532
533         Object JavaDoc MenuFont = dialogPlain12;
534         Object JavaDoc FixedControlFont = monospacedPlain12;
535         Object JavaDoc ControlFont = dialogPlain12;
536         Object JavaDoc MessageFont = dialogPlain12;
537         Object JavaDoc WindowFont = dialogBold12;
538         Object JavaDoc ToolTipFont = sansSerifPlain12;
539     Object JavaDoc IconFont = ControlFont;
540
541     Object JavaDoc scrollBarWidth = new DesktopProperty("win.scrollbar.width",
542                             new Integer JavaDoc(16), toolkit);
543
544     Object JavaDoc showMnemonics = new DesktopProperty("win.menu.keyboardCuesOn",
545                              Boolean.TRUE, toolkit);
546
547         if (useSystemFontSettings) {
548             MenuFont = getDesktopFontValue("win.menu.font", MenuFont, toolkit);
549             FixedControlFont = getDesktopFontValue("win.ansiFixed.font",
550                                                    FixedControlFont, toolkit);
551             ControlFont = getDesktopFontValue("win.defaultGUI.font",
552                                               ControlFont, toolkit);
553             MessageFont = getDesktopFontValue("win.messagebox.font",
554                                               MessageFont, toolkit);
555             WindowFont = getDesktopFontValue("win.frame.captionFont",
556                                              WindowFont, toolkit);
557         IconFont = getDesktopFontValue("win.icon.font",
558                           IconFont, toolkit);
559             ToolTipFont = getDesktopFontValue("win.tooltip.font", ToolTipFont,
560                                               toolkit);
561         }
562         if (useSystemFontSizeSettings) {
563             MenuFont = new WindowsFontSizeProperty("win.menu.font.height",
564                                   toolkit, "Dialog", Font.PLAIN, 12);
565             FixedControlFont = new WindowsFontSizeProperty(
566                        "win.ansiFixed.font.height", toolkit, "MonoSpaced",
567                        Font.PLAIN, 12);
568             ControlFont = new WindowsFontSizeProperty(
569                         "win.defaultGUI.font.height", toolkit, "Dialog",
570                         Font.PLAIN, 12);
571             MessageFont = new WindowsFontSizeProperty(
572                               "win.messagebox.font.height",
573                               toolkit, "Dialog", Font.PLAIN, 12);
574             WindowFont = new WindowsFontSizeProperty(
575                              "win.frame.captionFont.height", toolkit,
576                              "Dialog", Font.BOLD, 12);
577             ToolTipFont = new WindowsFontSizeProperty(
578                               "win.tooltip.font.height", toolkit, "SansSerif",
579     &nbs