2 * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
28 //import jsjava.awt.AWTEvent;
29 import jsjava.awt.Color;
30 import jsjava.awt.Dimension;
31 import jsjava.awt.Font;
32 import jsjavax.swing.DefaultListCellRenderer;
33 import jsjavax.swing.JTextField;
34 //import jsjava.awt.Component;
35 //import jsjava.awt.Dimension;
36 //import jsjava.awt.Font;
37 //import jsjava.awt.Point;
38 //import jsjava.awt.Toolkit;
39 //import jsjava.awt.Window;
40 //import jsjava.awt.event.AWTEventListener;
41 //import jsjava.awt.event.ActionEvent;
42 //import jsjava.awt.event.KeyEvent;
43 //import jsjava.awt.event.MouseEvent;
44 //import jsjava.beans.PropertyChangeEvent;
45 //import jsjava.beans.PropertyChangeListener;
46 //import jsjava.beans.PropertyVetoException;
47 //import java.io.BufferedInputStream;
48 //import java.io.ByteArrayInputStream;
49 //import java.io.ByteArrayOutputStream;
50 //import java.io.IOException;
51 //import java.io.InputStream;
52 ////import java.io.Serializable;
53 //import jsjava.security.AccessController;
54 //import jsjava.security.PrivilegedAction;
55 //import java.util.HashSet;
56 //import jsjava.util.Locale;
58 ////import jsjavax.sound.sampled.AudioInputStream;
59 ////import jsjavax.sound.sampled.AudioSystem;
60 ////import jsjavax.sound.sampled.Clip;
61 ////import jsjavax.sound.sampled.DataLine;
62 ////import jsjavax.sound.sampled.LineEvent;
63 ////import jsjavax.sound.sampled.LineListener;
64 //import jsjavax.swing.AbstractAction;
65 //import jsjavax.swing.Action;
66 //import jsjavax.swing.ActionMap;
67 //import jsjavax.swing.DefaultListCellRenderer;
68 //import jsjavax.swing.JComponent;
69 ////import jsjavax.swing.JInternalFrame;
70 //import jsjavax.swing.JTextField;
71 //import jsjavax.swing.LookAndFeel;
72 //import jsjavax.swing.MenuElement;
73 //import jsjavax.swing.MenuSelectionManager;
74 //import jsjavax.swing.SwingUtilities;
75 import jsjavax.swing.LookAndFeel;
76 import jsjavax.swing.UIDefaults;
77 //import jsjavax.swing.UIManager;
78 //import jsjavax.swing.border.BevelBorder;
79 //import jsjavax.swing.plaf.ActionMapUIResource;
80 //import jsjavax.swing.plaf.BorderUIResource;
81 import jsjavax.swing.plaf.ColorUIResource;
82 import jsjavax.swing.plaf.FontUIResource;
83 //import jsjavax.swing.plaf.ComponentUI;
84 import jsjavax.swing.plaf.DimensionUIResource;
85 //import jsjavax.swing.plaf.DimensionUIResource;
86 //import jsjavax.swing.plaf.InsetsUIResource;
87 ////import jsjavax.swing.plaf.basic.popupMenuUI;
88 ////import jsjavax.swing.plaf.basic.BasicSplitPaneDivider;
89 //import jsjavax.swing.text.DefaultEditorKit;
91 //import jssun.awt.AppContext;
92 //import jssun.swing.SwingUtilities2;
93 ////import jssun.swing.SwingLazyValue;
95 import jsjavax.swing.plaf.InsetsUIResource;
96 import jssun.swing.SwingLazyValue;
99 * A base class to use in creating a look and feel for Swing.
101 * Each of the {@code ComponentUI}s provided by {@code BasicLookAndFeel} derives
102 * its behavior from the defaults table. Unless otherwise noted each of the
103 * {@code ComponentUI} implementations in this package document the set of
104 * defaults they use. Unless otherwise noted the defaults are installed at the
105 * time {@code installUI} is invoked, and follow the recommendations outlined in
106 * {@code LookAndFeel} for installing defaults.
108 * <strong>Warning:</strong> Serialized objects of this class will not be
109 * compatible with future Swing releases. The current serialization support is
110 * appropriate for short term storage or RMI between applications running the
111 * same version of Swing. As of 1.4, support for long term storage of all
112 * JavaBeans<sup><font size="-2">TM</font></sup> has been added to the
113 * <code>java.beans</code> package. Please see {@link java.beans.XMLEncoder}.
115 * @author unattributed
117 public class HTML5LookAndFeel extends LookAndFeel {
119 // * Whether or not the developer has created a JPopupMenu.
121 // static boolean needsEventHelper;
124 // * Lock used when manipulating clipPlaying.
126 // private transient Object audioLock = new Object();
128 // * The Clip that is currently playing (set in AudioAction).
130 // private Clip clipPlaying;
132 // AWTEventHelper invocator = null;
135 // * Listen for our AppContext being disposed
137 // private PropertyChangeListener disposer = null;
140 * Returns the look and feel defaults. The returned {@code UIDefaults} is
141 * populated by invoking, in order, {@code initClassDefaults},
142 * {@code initSystemColorDefaults} and {@code initComponentDefaults}.
144 * While this method is public, it should only be invoked by the
145 * {@code UIManager} when the look and feel is set as the current look and
146 * feel and after {@code initialize} has been invoked.
148 * @return the look and feel defaults
150 * @see #initClassDefaults
151 * @see #initSystemColorDefaults
152 * @see #initComponentDefaults
154 public UIDefaults getDefaults() {
155 UIDefaults table = new UIDefaults(610, 0.75f);
157 initClassDefaults(table);
158 initSystemColorDefaults(table);
159 initComponentDefaults(table);
167 public void initialize() {
168 // if (needsEventHelper) {
169 // installAWTEventListener();
173 void installAWTEventListener() {
174 // if (invocator == null) {
175 // invocator = new AWTEventHelper();
176 // needsEventHelper = true;
178 // // Add a PropertyChangeListener to our AppContext so we're alerted
179 // // when the AppContext is disposed(), at which time this laf should
180 // // be uninitialize()d.
181 // disposer = new PropertyChangeListener() {
182 // public void propertyChange(PropertyChangeEvent prpChg) {
186 // AppContext.getAppContext().addPropertyChangeListener(
187 // AppContext.GUI_DISPOSED,
195 public void uninitialize() {
196 // AppContext context = AppContext.getAppContext();
197 // synchronized (popupMenuUI.MOUSE_GRABBER_KEY) {
198 // Object grabber = context.get(popupMenuUI.MOUSE_GRABBER_KEY);
199 // if (grabber != null) {
200 // ((popupMenuUI.MouseGrabber)grabber).uninstall();
203 // synchronized (popupMenuUI.MENU_KEYBOARD_HELPER_KEY) {
205 // context.get(popupMenuUI.MENU_KEYBOARD_HELPER_KEY);
206 // if (helper != null) {
207 // ((popupMenuUI.MenuKeyboardHelper)helper).uninstall();
211 // if(invocator != null) {
212 // AccessController.doPrivileged(invocator);
216 // if (disposer != null) {
217 // // Note that we're likely calling removePropertyChangeListener()
218 // // during the course of AppContext.firePropertyChange().
219 // // However, EventListenerAggreggate has code to safely modify
220 // // the list under such circumstances.
221 // context.removePropertyChangeListener(AppContext.GUI_DISPOSED,
228 * Populates {@code table} with mappings from {@code uiClassID} to the fully
229 * qualified name of the ui class. The value for a particular
230 * {@code uiClassID} is {@code "jsjavax.swing.plaf.basic.Basic + uiClassID"}.
231 * For example, the value for the {@code uiClassID} {@code TreeUI} is
232 * {@code "jsjavax.swing.plaf.basic.BasicTreeUI"}.
235 * the {@code UIDefaults} instance the entries are added to
236 * @throws NullPointerException
237 * if {@code table} is {@code null}
239 * @see jsjavax.swing.LookAndFeel
242 protected void initClassDefaults(UIDefaults table) {
243 final String packageName = "swingjs.plaf.";
244 Object[] uiDefaults = {
245 /**/ "ButtonUI", packageName + "JSButtonUI",
246 /**/ "CheckBoxUI", packageName + "JSCheckBoxUI",
247 "ColorChooserUI", packageName + "JSColorChooserUI",
248 /**/ "FormattedTextFieldUI", packageName + "JSFormattedTextFieldUI",
249 /**/ "MenuBarUI", packageName + "JSMenuBarUI",
250 /**/ "MenuUI", packageName + "JSMenuUI",
251 /**/ "MenuItemUI", packageName + "JSMenuItemUI",
252 /**/ "CheckBoxMenuItemUI", packageName + "JSCheckBoxMenuItemUI",
253 /**/ "RadioButtonMenuItemUI", packageName + "JSRadioButtonMenuItemUI",
254 /**/ "RadioButtonUI", packageName + "JSRadioButtonUI",
255 /**/ "ToggleButtonUI", packageName + "JSToggleButtonUI",
256 /**/ "PopupMenuUI", packageName + "JSPopupMenuUI",
257 "ProgressBarUI", packageName + "JSProgressBarUI",
258 /**/ "ScrollBarUI", packageName + "JSScrollBarUI",
259 /**/ "ScrollPaneUI", packageName + "JSScrollPaneUI",
260 "SplitPaneUI", packageName + "JSSplitPaneUI",
261 /**/ "SliderUI", packageName + "JSSliderUI",
262 /**/ "SeparatorUI", packageName + "JSSeparatorUI",
263 "SpinnerUI", packageName + "JSSpinnerUI",
264 /**/ "ToolBarSeparatorUI", packageName + "JSToolBarSeparatorUI",
265 /**/ "PopupMenuSeparatorUI", packageName + "JSPopupMenuSeparatorUI",
266 "TabbedPaneUI", packageName + "JSTabbedPaneUI",
267 /**/ "TextAreaUI", packageName + "JSTextAreaUI",
268 /**/ "TextFieldUI", packageName + "JSTextFieldUI",
269 /**/ "PasswordFieldUI", packageName + "JSPasswordFieldUI",
270 "TextPaneUI", packageName + "JSTextPaneUI",
271 "EditorPaneUI", packageName + "JSEditorPaneUI",
272 "TreeUI", packageName + "JSTreeUI",
273 /**/ "LabelUI", packageName + "JSLabelUI",
274 "ListUI", packageName + "JSListUI",
275 "ToolBarUI", packageName + "JSToolBarUI",
276 "ToolTipUI", packageName + "JSToolTipUI",
277 /**/ "ComboBoxUI", packageName + "JSComboBoxUI",
278 "TableUI", packageName + "JSTableUI",
279 "TableHeaderUI", packageName + "JSTableHeaderUI",
280 "InternalFrameUI", packageName + "JSInternalFrameUI",
281 "DesktopPaneUI", packageName + "JSDesktopPaneUI",
282 "DesktopIconUI", packageName + "JSDesktopIconUI",
283 "OptionPaneUI", packageName + "JSOptionPaneUI",
284 /**/ "PanelUI", packageName + "JSPanelUI",
285 /**/ "ViewportUI", packageName + "JSViewportUI",
286 /**/ "RootPaneUI", packageName + "JSRootPaneUI"
289 table.putDefaults(uiDefaults);
293 * Populates {@code table} with system colors. This creates an array of
294 * {@code name-color} pairs and invokes {@code loadSystemColors}.
296 * The name is a {@code String} that corresponds to the name of one of the
297 * static {@code SystemColor} fields in the {@code SystemColor} class. A
298 * name-color pair is created for every such {@code SystemColor} field.
300 * The {@code color} corresponds to a hex {@code String} as understood by
301 * {@code Color.decode}. For example, one of the {@code name-color} pairs is
302 * {@code "desktop"-"#005C5C"}. This corresponds to the {@code SystemColor}
303 * field {@code desktop}, with a color value of {@code new Color(0x005C5C)}.
305 * The following shows two of the {@code name-color} pairs:
308 * String[] nameColorPairs = new String[] { "desktop", "#005C5C", "activeCaption",
309 * "#000080" };
310 * loadSystemColors(table, nameColorPairs, isNativeLookAndFeel());
313 * As previously stated, this invokes {@code loadSystemColors} with the
314 * supplied {@code table} and {@code name-color} pair array. The last argument
315 * to {@code loadSystemColors} indicates whether the value of the field in
316 * {@code SystemColor} should be used. This method passes the value of
317 * {@code isNativeLookAndFeel()} as the last argument to
318 * {@code loadSystemColors}.
321 * the {@code UIDefaults} object the values are added to
322 * @throws NullPointerException
323 * if {@code table} is {@code null}
325 * @see jsjava.awt.SystemColor
327 * @see #loadSystemColors
329 protected void initSystemColorDefaults(UIDefaults table) {
330 String[] defaultSystemColors = {
333 // "desktop", "#005C5C", /*
338 // "activeCaption", "#000080", /*
339 // * Color for captions (title bars) when they are
342 // "activeCaptionText", "#FFFFFF", /*
343 // * Text color for text in captions (title
346 // "activeCaptionBorder", "#C0C0C0", /*
347 // * Border color for caption (title bar)
350 // "inactiveCaption", "#808080", /*
351 // * Color for captions (title bars) when not
354 // "inactiveCaptionText", "#C0C0C0", /*
355 // * Text color for text in inactive
356 // * captions (title bars).
358 // "inactiveCaptionBorder", "#C0C0C0", /*
359 // * Border color for inactive caption
360 // * (title bar) window borders.
362 // plaf.metal.OceanTheme
363 "window", "#FFFFFF", /* Default color for the interior of windows */
364 // "windowBorder", "#000000", /* ??? */
365 "windowText", "#333333", /* ??? */
366 "menu", "#C0C0C0", /* Background color for menus */
367 "menuText", "#333333", /* Text color for menus */
368 "text", "#C0C0C0", /* Text background color */
369 "textText", "#333333", /* Text foreground color */
370 // "textHighlight", "#000080", /* Text background color when selected */
371 // "textHighlightText", "#FFFFFF", /* Text color when selected */
372 // "textInactiveText", "#808080", /* Text color when disabled */
373 "control", "#EEEEEE", // SECONDARY3 Default color for controls (buttons, sliders, etc)
374 "controlText", "#333333", // Default color for text in controls
375 // "controlHighlight", "#C0C0C0", /*
376 // * Specular highlight (opposite of the
379 // "controlLtHighlight", "#FFFFFF", /* Highlight color for controls */
380 // "controlShadow", "#808080", /* Shadow color for controls */
381 // "controlDkShadow", "#000000", /* Dark shadow color for controls */
382 "scrollbar", "#E0E0E0", /* Scrollbar background (usually the "track") */
383 "info", "#FFFFE1", /* ??? */
384 "infoText", "#000000" /* ??? */
387 loadSystemColors(table, defaultSystemColors, isNativeLookAndFeel());
391 * Populates {@code table} with the {@code name-color} pairs in
392 * {@code systemColors}. Refer to {@link #initSystemColorDefaults(UIDefaults)}
393 * for details on the format of {@code systemColors}.
395 * An entry is added to {@code table} for each of the {@code name-color} pairs
396 * in {@code systemColors}. The entry key is the {@code name} of the
397 * {@code name-color} pair.
399 * The value of the entry corresponds to the {@code color} of the
400 * {@code name-color} pair. The value of the entry is calculated in one of two
401 * ways. With either approach the value is always a {@code ColorUIResource}.
403 * If {@code useNative} is {@code false}, the {@code color} is created by
404 * using {@code Color.decode} to convert the {@code String} into a
405 * {@code Color}. If {@code decode} can not convert the {@code String} into a
406 * {@code Color} ({@code NumberFormatException} is thrown) then a
407 * {@code ColorUIResource} of black is used.
409 * If {@code useNative} is {@code true}, the {@code color} is the value of the
410 * field in {@code SystemColor} with the same name as the {@code name} of the
411 * {@code name-color} pair. If the field is not valid, a
412 * {@code ColorUIResource} of black is used.
415 * the {@code UIDefaults} object the values are added to
416 * @param systemColors
417 * array of {@code name-color} pairs as described in
418 * {@link #initSystemColorDefaults(UIDefaults)}
420 * whether the color is obtained from {@code SystemColor} or
421 * {@code Color.decode}
422 * @throws NullPointerException
423 * if {@code systemColors} is {@code null}; or {@code systemColors}
424 * is not empty, and {@code table} is {@code null}; or one of the
425 * names of the {@code name-color} pairs is {@code null}; or
426 * {@code useNative} is {@code false} and one of the {@code colors}
427 * of the {@code name-color} pairs is {@code null}
428 * @throws ArrayIndexOutOfBoundsException
429 * if {@code useNative} is {@code false} and
430 * {@code systemColors.length} is odd
432 * @see #initSystemColorDefaults(jsjavax.swing.UIDefaults)
433 * @see jsjava.awt.SystemColor
434 * @see jsjava.awt.Color#decode(String)
436 protected void loadSystemColors(UIDefaults table, String[] systemColors,
439 * PENDING(hmuller) We don't load the system colors below because they're
440 * not reliable. Hopefully we'll be able to do better in a future version of
444 // for (int i = 0; i < systemColors.length; i += 2) {
445 // Color color = Color.black;
447 // // String name = systemColors[i];
448 // // color = (Color)(SystemColor.class.getField(name).get(null));
449 // // } catch (Exception e) {
451 // table.put(systemColors[i], new ColorUIResource(color));
454 for (int i = 0; i < systemColors.length; i += 2) {
455 Color color = Color.black;
457 color = Color.decode(systemColors[i + 1]);
458 } catch (NumberFormatException e) {
461 table.put(systemColors[i], new ColorUIResource(color));
467 * Initialize the defaults table with the name of the ResourceBundle used for
468 * getting localized defaults. Also initialize the default locale used when no
469 * locale is passed into UIDefaults.get(). The default locale should generally
470 * not be relied upon. It is here for compatability with releases prior to
473 private void initResourceBundle(UIDefaults table) {
474 // table.setDefaultLocale( Locale.getDefault() );
475 // table.addResourceBundle(
476 // "com.sun.swing.internal.plaf.basic.resources.basic" );
480 * Populates {@code table} with the defaults for the basic look and feel.
483 * the {@code UIDefaults} to add the values to
484 * @throws NullPointerException
485 * if {@code table} is {@code null}
487 protected void initComponentDefaults(UIDefaults table) {
489 initResourceBundle(table);
491 // // *** Shared Integers
492 // Integer fiveHundred = new Integer(500);
495 Long oneThousand = new Long(1000);
498 Integer twelve = new Integer(12);
499 Integer fontPlain = new Integer(Font.PLAIN);
500 // Integer fontBold = new Integer(Font.BOLD);
501 // Object dialogPlain12 = new SwingLazyValue(
502 // "jsjavax.swing.plaf.FontUIResource",
504 // new Object[] {Font.DIALOG, fontPlain, twelve});
505 Object serifPlain12 = new FontUIResource(Font.SERIF, Font.PLAIN, 12);
506 Object sansSerifPlain12 = new FontUIResource(Font.SANS_SERIF, Font.PLAIN,
508 Object dialogPlain12 = new FontUIResource(Font.DIALOG, Font.PLAIN, 12);
509 Object monospacedPlain12 = new FontUIResource(Font.MONOSPACED, Font.PLAIN, 12);
510 // Object dialogBold12 = new SwingLazyValue(
511 // "jsjavax.swing.plaf.FontUIResource",
513 // new Object[] {Font.DIALOG, fontBold, twelve});
517 // ColorUIResource red = new ColorUIResource(Color.red);
518 ColorUIResource black = new ColorUIResource(Color.black);
519 ColorUIResource white = new ColorUIResource(Color.white);
520 // ColorUIResource yellow = new ColorUIResource(Color.yellow);
521 ColorUIResource gray = new ColorUIResource(Color.gray);
522 // ColorUIResource lightGray = new ColorUIResource(Color.lightGray);
523 ColorUIResource darkGray = new ColorUIResource(Color.darkGray);
524 // ColorUIResource scrollBarTrack = new ColorUIResource(224, 224, 224);
526 Color control = table.getColor("control");
527 // Color controlDkShadow = table.getColor("controlDkShadow");
528 // Color controlHighlight = table.getColor("controlHighlight");
529 // Color controlLtHighlight = table.getColor("controlLtHighlight");
530 // Color controlShadow = table.getColor("controlShadow");
531 Color controlText = table.getColor("controlText");
532 Color menu = table.getColor("menu");
533 Color menuText = table.getColor("menuText");
534 // Color textHighlight = table.getColor("textHighlight");
535 // Color textHighlightText = table.getColor("textHighlightText");
536 // Color textInactiveText = table.getColor("textInactiveText");
537 Color textText = table.getColor("textText");
538 Color window = table.getColor("window");
541 InsetsUIResource zeroInsets = new InsetsUIResource(0, 0, 0, 0);
542 InsetsUIResource twoInsets = new InsetsUIResource(2, 2, 2, 2);
543 InsetsUIResource threeInsets = new InsetsUIResource(3, 3, 3, 3);
545 // // *** Shared Borders
546 // Object marginBorder = new SwingLazyValue(
547 // "jsjavax.swing.plaf.basic.BasicBorders$MarginBorder");
548 // Object etchedBorder = new SwingLazyValue(
549 // "jsjavax.swing.plaf.BorderUIResource",
550 // "getEtchedBorderUIResource");
551 // Object loweredBevelBorder = new SwingLazyValue(
552 // "jsjavax.swing.plaf.BorderUIResource",
553 // "getLoweredBevelBorderUIResource");
555 // Object popupMenuBorder = new SwingLazyValue(
556 // "jsjavax.swing.plaf.basic.BasicBorders",
557 // "getInternalFrameBorder");
559 // Object blackLineBorder = new SwingLazyValue(
560 // "jsjavax.swing.plaf.BorderUIResource",
561 // "getBlackLineBorderUIResource");
562 // Object focusCellHighlightBorder = new SwingLazyValue(
563 // "jsjavax.swing.plaf.BorderUIResource$LineBorderUIResource",
565 // new Object[] {yellow});
567 // Object noFocusBorder = new
568 // BorderUIResource.EmptyBorderUIResource(1,1,1,1);
570 // Object tableHeaderBorder = new SwingLazyValue(
571 // "jsjavax.swing.plaf.BorderUIResource$BevelBorderUIResource",
573 // new Object[] { new Integer(BevelBorder.RAISED),
574 // controlLtHighlight,
580 // // *** Button value objects
582 // Object buttonBorder =
583 // new SwingLazyValue(
584 // "jsjavax.swing.plaf.basic.BasicBorders",
585 // "getButtonBorder");
587 // Object buttonToggleBorder =
588 // new SwingLazyValue(
589 // "jsjavax.swing.plaf.basic.BasicBorders",
590 // "getToggleButtonBorder");
592 // Object radioButtonBorder =
593 // new SwingLazyValue(
594 // "jsjavax.swing.plaf.basic.BasicBorders",
595 // "getRadioButtonBorder");
597 // // *** FileChooser / FileView value objects
599 // Object newFolderIcon = SwingUtilities2.makeIcon(getClass(),
600 // BasicLookAndFeel.class,
601 // "icons/NewFolder.gif");
602 // Object upFolderIcon = SwingUtilities2.makeIcon(getClass(),
603 // BasicLookAndFeel.class,
604 // "icons/UpFolder.gif");
605 // Object homeFolderIcon = SwingUtilities2.makeIcon(getClass(),
606 // BasicLookAndFeel.class,
607 // "icons/HomeFolder.gif");
608 // Object detailsViewIcon = SwingUtilities2.makeIcon(getClass(),
609 // BasicLookAndFeel.class,
610 // "icons/DetailsView.gif");
611 // Object listViewIcon = SwingUtilities2.makeIcon(getClass(),
612 // BasicLookAndFeel.class,
613 // "icons/ListView.gif");
614 // Object directoryIcon = SwingUtilities2.makeIcon(getClass(),
615 // BasicLookAndFeel.class,
616 // "icons/Directory.gif");
617 // Object fileIcon = SwingUtilities2.makeIcon(getClass(),
618 // BasicLookAndFeel.class,
619 // "icons/File.gif");
620 // Object computerIcon = SwingUtilities2.makeIcon(getClass(),
621 // BasicLookAndFeel.class,
622 // "icons/Computer.gif");
623 // Object hardDriveIcon = SwingUtilities2.makeIcon(getClass(),
624 // BasicLookAndFeel.class,
625 // "icons/HardDrive.gif");
626 // Object floppyDriveIcon = SwingUtilities2.makeIcon(getClass(),
627 // BasicLookAndFeel.class,
628 // "icons/FloppyDrive.gif");
631 // // *** InternalFrame value objects
633 // Object internalFrameBorder = new SwingLazyValue(
634 // "jsjavax.swing.plaf.basic.BasicBorders",
635 // "getInternalFrameBorder");
637 // // *** List value objects
639 Object listCellRendererActiveValue = new UIDefaults.ActiveValue() {
640 public Object createValue(UIDefaults table) {
641 return new DefaultListCellRenderer.UIResource();
646 // // *** Menus value objects
648 // Object menuBarBorder =
649 // new SwingLazyValue(
650 // "jsjavax.swing.plaf.basic.BasicBorders",
651 // "getMenuBarBorder");
653 // Object menuItemCheckIcon =
654 // new SwingLazyValue(
655 // "jsjavax.swing.plaf.basic.BasicIconFactory",
656 // "getMenuItemCheckIcon");
658 // Object menuItemArrowIcon =
659 // new SwingLazyValue(
660 // "jsjavax.swing.plaf.basic.BasicIconFactory",
661 // "getMenuItemArrowIcon");
664 // Object menuArrowIcon =
665 // new SwingLazyValue(
666 // "jsjavax.swing.plaf.basic.BasicIconFactory",
667 // "getMenuArrowIcon");
669 // Object checkBoxIcon =
670 // new SwingLazyValue(
671 // "jsjavax.swing.plaf.basic.BasicIconFactory",
672 // "getCheckBoxIcon");
674 // Object radioButtonIcon =
675 // new SwingLazyValue(
676 // "jsjavax.swing.plaf.basic.BasicIconFactory",
677 // "getRadioButtonIcon");
679 // Object checkBoxMenuItemIcon =
680 // new SwingLazyValue(
681 // "jsjavax.swing.plaf.basic.BasicIconFactory",
682 // "getCheckBoxMenuItemIcon");
684 // Object radioButtonMenuItemIcon =
685 // new SwingLazyValue(
686 // "jsjavax.swing.plaf.basic.BasicIconFactory",
687 // "getRadioButtonMenuItemIcon");
689 // Object menuItemAcceleratorDelimiter = new String("+");
691 // // *** OptionPane value objects
693 // Object optionPaneMinimumSize = new DimensionUIResource(262, 90);
695 Integer zero = new Integer(0);
696 // Object zeroBorder = new SwingLazyValue(
697 // "jsjavax.swing.plaf.BorderUIResource$EmptyBorderUIResource",
698 // new Object[] {zero, zero, zero, zero});
700 // Integer ten = new Integer(10);
701 // Object optionPaneBorder = new SwingLazyValue(
702 // "jsjavax.swing.plaf.BorderUIResource$EmptyBorderUIResource",
703 // new Object[] {ten, ten, twelve, ten});
705 // Object optionPaneButtonAreaBorder = new SwingLazyValue(
706 // "jsjavax.swing.plaf.BorderUIResource$EmptyBorderUIResource",
707 // new Object[] {new Integer(6), zero, zero, zero});
710 // // *** ProgessBar value objects
712 // Object progressBarBorder =
713 // new SwingLazyValue(
714 // "jsjavax.swing.plaf.basic.BasicBorders",
715 // "getProgressBarBorder");
717 // // ** ScrollBar value objects
719 // Object minimumThumbSize = new DimensionUIResource(8,8);
720 // Object maximumThumbSize = new DimensionUIResource(4096,4096);
722 // // ** Slider value objects
724 // Object sliderFocusInsets = twoInsets;
726 // Object toolBarSeparatorSize = new DimensionUIResource( 10, 10 );
729 // // *** SplitPane value objects
731 // Object splitPaneBorder =
732 // new SwingLazyValue(
733 // "jsjavax.swing.plaf.basic.BasicBorders",
734 // "getSplitPaneBorder");
735 // Object splitPaneDividerBorder =
736 // new SwingLazyValue(
737 // "jsjavax.swing.plaf.basic.BasicBorders",
738 // "getSplitPaneDividerBorder");
740 // ** TabbedBane value objects
742 Object tabbedPaneTabInsets = new InsetsUIResource(0, 4, 1, 4);
744 Object tabbedPaneTabPadInsets = new InsetsUIResource(2, 2, 2, 1);
746 Object tabbedPaneTabAreaInsets = new InsetsUIResource(3, 2, 0, 2);
748 Object tabbedPaneContentBorderInsets = new InsetsUIResource(2, 2, 3, 3);
750 // *** Text value objects
752 // Object textFieldBorder =
753 // new SwingLazyValue(
754 // "jsjavax.swing.plaf.basic.BasicBorders",
755 // "getTextFieldBorder");
757 Object editorMargin = threeInsets;
759 // Object caretBlinkRate = fiveHundred;
760 Integer four = new Integer(4);
762 // Object[] allAuditoryCues = new Object[] {
763 // "CheckBoxMenuItem.commandSound",
764 // "InternalFrame.closeSound",
765 // "InternalFrame.maximizeSound",
766 // "InternalFrame.minimizeSound",
767 // "InternalFrame.restoreDownSound",
768 // "InternalFrame.restoreUpSound",
769 // "MenuItem.commandSound",
770 // "OptionPane.errorSound",
771 // "OptionPane.informationSound",
772 // "OptionPane.questionSound",
773 // "OptionPane.warningSound",
774 // "PopupMenu.popupSound",
775 // "RadioButtonMenuItem.commandSound"};
777 // Object[] noAuditoryCues = new Object[] {"mute"};
779 // // *** Component Defaults
781 Object[] defaults = {
788 // *** Auditory Feedback
789 // "AuditoryCues.cueList", allAuditoryCues,
790 // "AuditoryCues.allAuditoryCues", allAuditoryCues,
791 // "AuditoryCues.noAuditoryCues", noAuditoryCues,
792 // // this key defines which of the various cues to render.
793 // // L&Fs that want auditory feedback NEED to override playList.
794 // "AuditoryCues.playList", null,
797 // "Button.defaultButtonFollowsFocus", Boolean.TRUE,
798 // "Button.font", dialogPlain12,
799 // "Button.background", control,
800 // "Button.foreground", controlText,
801 // "Button.shadow", controlShadow,
802 // "Button.darkShadow", controlDkShadow,
803 // "Button.light", controlHighlight,
804 // "Button.highlight", controlLtHighlight,
805 // "Button.border", buttonBorder,
807 new InsetsUIResource(2, 14, 2, 14),
808 // "Button.textIconGap", four,
809 // "Button.textShiftOffset", zero,
810 // "Button.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
811 // "SPACE", "pressed",
812 // "released SPACE", "released",
813 // "ENTER", "pressed",
814 // "released ENTER", "released"
817 // "ToggleButton.font", dialogPlain12,
818 // "ToggleButton.background", control,
819 // "ToggleButton.foreground", controlText,
820 // "ToggleButton.shadow", controlShadow,
821 // "ToggleButton.darkShadow", controlDkShadow,
822 // "ToggleButton.light", controlHighlight,
823 // "ToggleButton.highlight", controlLtHighlight,
824 // "ToggleButton.border", buttonToggleBorder,
825 "ToggleButton.margin",
826 new InsetsUIResource(2, 14, 2, 14),
827 "ToggleButton.textIconGap",
829 "ToggleButton.textShiftOffset",
831 // "ToggleButton.focusInputMap",
832 // new UIDefaults.LazyInputMap(new Object[] {
833 // "SPACE", "pressed",
834 // "released SPACE", "released"
837 // "RadioButton.font", dialogPlain12,
838 // "RadioButton.background", control,
839 // "RadioButton.foreground", controlText,
840 // "RadioButton.shadow", controlShadow,
841 // "RadioButton.darkShadow", controlDkShadow,
842 // "RadioButton.light", controlHighlight,
843 // "RadioButton.highlight", controlLtHighlight,
844 // "RadioButton.border", radioButtonBorder,
845 "RadioButton.margin",
847 "RadioButton.textIconGap",
849 "RadioButton.textShiftOffset",
851 // "RadioButton.icon", radioButtonIcon,
852 // "RadioButton.focusInputMap",
853 // new UIDefaults.LazyInputMap(new Object[] {
854 // "SPACE", "pressed",
855 // "released SPACE", "released",
856 // "RETURN", "pressed"
859 // "CheckBox.font", dialogPlain12,
860 // "CheckBox.background", control,
861 // "CheckBox.foreground", controlText,
862 // "CheckBox.border", radioButtonBorder,
865 "CheckBox.textIconGap",
867 "CheckBox.textShiftOffset",
869 // "CheckBox.icon", checkBoxIcon,
870 // "CheckBox.focusInputMap",
871 // new UIDefaults.LazyInputMap(new Object[] {
872 // "SPACE", "pressed",
873 // "released SPACE", "released"
875 // "FileChooser.useSystemExtensionHiding", Boolean.FALSE,
878 // "ColorChooser.font", dialogPlain12,
879 // "ColorChooser.background", control,
880 // "ColorChooser.foreground", controlText,
882 "ColorChooser.swatchesSwatchSize",
883 new Dimension(10, 10),
884 "ColorChooser.swatchesRecentSwatchSize",
885 new Dimension(10, 10),
886 "ColorChooser.swatchesDefaultRecentColor",
892 "ComboBox.background",
894 "ComboBox.foreground",
896 // "ComboBox.buttonBackground", control,
897 // "ComboBox.buttonShadow", controlShadow,
898 // "ComboBox.buttonDarkShadow", controlDkShadow,
899 // "ComboBox.buttonHighlight", controlLtHighlight,
900 // "ComboBox.selectionBackground", textHighlight,
901 // "ComboBox.selectionForeground", textHighlightText,
902 // "ComboBox.disabledBackground", control,
903 // "ComboBox.disabledForeground", textInactiveText,
904 "ComboBox.timeFactor",
906 "ComboBox.isEnterSelectablePopup",
908 // "ComboBox.ancestorInputMap",
909 // new UIDefaults.LazyInputMap(new Object[] {
910 // "ESCAPE", "hidePopup",
911 // "PAGE_UP", "pageUpPassThrough",
912 // "PAGE_DOWN", "pageDownPassThrough",
913 // "HOME", "homePassThrough",
914 // "END", "endPassThrough",
915 // "ENTER", "enterPressed"
920 // "FileChooser.newFolderIcon", newFolderIcon,
921 // "FileChooser.upFolderIcon", upFolderIcon,
922 // "FileChooser.homeFolderIcon", homeFolderIcon,
923 // "FileChooser.detailsViewIcon", detailsViewIcon,
924 // "FileChooser.listViewIcon", listViewIcon,
925 "FileChooser.readOnly",
927 // "FileChooser.usesSingleFilePane", Boolean.FALSE,
928 // "FileChooser.ancestorInputMap",
929 // new UIDefaults.LazyInputMap(new Object[] {
930 // "ESCAPE", "cancelSelection",
934 // "FileView.directoryIcon", directoryIcon,
935 // "FileView.fileIcon", fileIcon,
936 // "FileView.computerIcon", computerIcon,
937 // "FileView.hardDriveIcon", hardDriveIcon,
938 // "FileView.floppyDriveIcon", floppyDriveIcon,
941 // "InternalFrame.titleFont", dialogBold12,
942 // "InternalFrame.borderColor", control,
943 // "InternalFrame.borderShadow", controlShadow,
944 // "InternalFrame.borderDarkShadow", controlDkShadow,
945 // "InternalFrame.borderHighlight", controlLtHighlight,
946 // "InternalFrame.borderLight", controlHighlight,
947 // "InternalFrame.border", internalFrameBorder,
948 // "InternalFrame.icon", SwingUtilities2.makeIcon(getClass(),
949 // BasicLookAndFeel.class,
950 // "icons/JavaCup16.png"),
952 // /* Default frame icons are undefined for Basic. */
953 // "InternalFrame.maximizeIcon",
954 // new SwingLazyValue(
955 // "jsjavax.swing.plaf.basic.BasicIconFactory",
956 // "createEmptyFrameIcon"),
957 // "InternalFrame.minimizeIcon",
958 // new SwingLazyValue(
959 // "jsjavax.swing.plaf.basic.BasicIconFactory",
960 // "createEmptyFrameIcon"),
961 // "InternalFrame.iconifyIcon",
962 // new SwingLazyValue(
963 // "jsjavax.swing.plaf.basic.BasicIconFactory",
964 // "createEmptyFrameIcon"),
965 // "InternalFrame.closeIcon",
966 // new SwingLazyValue(
967 // "jsjavax.swing.plaf.basic.BasicIconFactory",
968 // "createEmptyFrameIcon"),
969 // // InternalFrame Auditory Cue Mappings
970 // "InternalFrame.closeSound", null,
971 // "InternalFrame.maximizeSound", null,
972 // "InternalFrame.minimizeSound", null,
973 // "InternalFrame.restoreDownSound", null,
974 // "InternalFrame.restoreUpSound", null,
976 // "InternalFrame.activeTitleBackground", table.get("activeCaption"),
977 // "InternalFrame.activeTitleForeground",
978 // table.get("activeCaptionText"),
979 // "InternalFrame.inactiveTitleBackground",
980 // table.get("inactiveCaption"),
981 // "InternalFrame.inactiveTitleForeground",
982 // table.get("inactiveCaptionText"),
983 // "InternalFrame.windowBindings", new Object[] {
984 // "shift ESCAPE", "showSystemMenu",
985 // "ctrl SPACE", "showSystemMenu",
986 // "ESCAPE", "hideSystemMenu"},
988 // "InternalFrameTitlePane.iconifyButtonOpacity", Boolean.TRUE,
989 // "InternalFrameTitlePane.maximizeButtonOpacity", Boolean.TRUE,
990 // "InternalFrameTitlePane.closeButtonOpacity", Boolean.TRUE,
992 // "DesktopIcon.border", internalFrameBorder,
994 // "Desktop.minOnScreenInsets", threeInsets,
995 // "Desktop.background", table.get("desktop"),
996 // "Desktop.ancestorInputMap",
997 // new UIDefaults.LazyInputMap(new Object[] {
998 // "ctrl F5", "restore",
999 // "ctrl F4", "close",
1000 // "ctrl F7", "move",
1001 // "ctrl F8", "resize",
1002 // "RIGHT", "right",
1003 // "KP_RIGHT", "right",
1004 // "shift RIGHT", "shrinkRight",
1005 // "shift KP_RIGHT", "shrinkRight",
1007 // "KP_LEFT", "left",
1008 // "shift LEFT", "shrinkLeft",
1009 // "shift KP_LEFT", "shrinkLeft",
1012 // "shift UP", "shrinkUp",
1013 // "shift KP_UP", "shrinkUp",
1015 // "KP_DOWN", "down",
1016 // "shift DOWN", "shrinkDown",
1017 // "shift KP_DOWN", "shrinkDown",
1018 // "ESCAPE", "escape",
1019 // "ctrl F9", "minimize",
1020 // "ctrl F10", "maximize",
1021 // "ctrl F6", "selectNextFrame",
1022 // "ctrl TAB", "selectNextFrame",
1023 // "ctrl alt F6", "selectNextFrame",
1024 // "shift ctrl alt F6", "selectPreviousFrame",
1025 // "ctrl F12", "navigateNext",
1026 // "shift ctrl F12", "navigatePrevious"
1030 // "Label.font", dialogPlain12,
1031 // "Label.background", control,
1032 // "Label.foreground", controlText,
1033 // "Label.disabledForeground", white,
1034 // "Label.disabledShadow", controlShadow,
1039 // "List.font", dialogPlain12,
1044 // "List.selectionBackground", textHighlight,
1045 // "List.selectionForeground", textHighlightText,
1046 // "List.noFocusBorder", noFocusBorder,
1047 // "List.focusCellHighlightBorder", focusCellHighlightBorder,
1048 // "List.dropLineColor", controlShadow,
1049 // "List.border", null,
1050 "List.cellRenderer",
1051 listCellRendererActiveValue,
1054 // "List.focusInputMap",
1055 // new UIDefaults.LazyInputMap(new Object[] {
1056 // "ctrl C", "copy",
1057 // "ctrl V", "paste",
1060 // "PASTE", "paste",
1062 // "control INSERT", "copy",
1063 // "shift INSERT", "paste",
1064 // "shift DELETE", "cut",
1065 // "UP", "selectPreviousRow",
1066 // "KP_UP", "selectPreviousRow",
1067 // "shift UP", "selectPreviousRowExtendSelection",
1068 // "shift KP_UP", "selectPreviousRowExtendSelection",
1069 // "ctrl shift UP", "selectPreviousRowExtendSelection",
1070 // "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
1071 // "ctrl UP", "selectPreviousRowChangeLead",
1072 // "ctrl KP_UP", "selectPreviousRowChangeLead",
1073 // "DOWN", "selectNextRow",
1074 // "KP_DOWN", "selectNextRow",
1075 // "shift DOWN", "selectNextRowExtendSelection",
1076 // "shift KP_DOWN", "selectNextRowExtendSelection",
1077 // "ctrl shift DOWN", "selectNextRowExtendSelection",
1078 // "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
1079 // "ctrl DOWN", "selectNextRowChangeLead",
1080 // "ctrl KP_DOWN", "selectNextRowChangeLead",
1081 // "LEFT", "selectPreviousColumn",
1082 // "KP_LEFT", "selectPreviousColumn",
1083 // "shift LEFT", "selectPreviousColumnExtendSelection",
1084 // "shift KP_LEFT", "selectPreviousColumnExtendSelection",
1085 // "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
1086 // "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
1087 // "ctrl LEFT", "selectPreviousColumnChangeLead",
1088 // "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
1089 // "RIGHT", "selectNextColumn",
1090 // "KP_RIGHT", "selectNextColumn",
1091 // "shift RIGHT", "selectNextColumnExtendSelection",
1092 // "shift KP_RIGHT", "selectNextColumnExtendSelection",
1093 // "ctrl shift RIGHT", "selectNextColumnExtendSelection",
1094 // "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
1095 // "ctrl RIGHT", "selectNextColumnChangeLead",
1096 // "ctrl KP_RIGHT", "selectNextColumnChangeLead",
1097 // "HOME", "selectFirstRow",
1098 // "shift HOME", "selectFirstRowExtendSelection",
1099 // "ctrl shift HOME", "selectFirstRowExtendSelection",
1100 // "ctrl HOME", "selectFirstRowChangeLead",
1101 // "END", "selectLastRow",
1102 // "shift END", "selectLastRowExtendSelection",
1103 // "ctrl shift END", "selectLastRowExtendSelection",
1104 // "ctrl END", "selectLastRowChangeLead",
1105 // "PAGE_UP", "scrollUp",
1106 // "shift PAGE_UP", "scrollUpExtendSelection",
1107 // "ctrl shift PAGE_UP", "scrollUpExtendSelection",
1108 // "ctrl PAGE_UP", "scrollUpChangeLead",
1109 // "PAGE_DOWN", "scrollDown",
1110 // "shift PAGE_DOWN", "scrollDownExtendSelection",
1111 // "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
1112 // "ctrl PAGE_DOWN", "scrollDownChangeLead",
1113 // "ctrl A", "selectAll",
1114 // "ctrl SLASH", "selectAll",
1115 // "ctrl BACK_SLASH", "clearSelection",
1116 // "SPACE", "addToSelection",
1117 // "ctrl SPACE", "toggleAndAnchor",
1118 // "shift SPACE", "extendTo",
1119 // "ctrl shift SPACE", "moveSelectionTo"
1121 // "List.focusInputMap.RightToLeft",
1122 // new UIDefaults.LazyInputMap(new Object[] {
1123 // "LEFT", "selectNextColumn",
1124 // "KP_LEFT", "selectNextColumn",
1125 // "shift LEFT", "selectNextColumnExtendSelection",
1126 // "shift KP_LEFT", "selectNextColumnExtendSelection",
1127 // "ctrl shift LEFT", "selectNextColumnExtendSelection",
1128 // "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
1129 // "ctrl LEFT", "selectNextColumnChangeLead",
1130 // "ctrl KP_LEFT", "selectNextColumnChangeLead",
1131 // "RIGHT", "selectPreviousColumn",
1132 // "KP_RIGHT", "selectPreviousColumn",
1133 // "shift RIGHT", "selectPreviousColumnExtendSelection",
1134 // "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
1135 // "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
1136 // "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
1137 // "ctrl RIGHT", "selectPreviousColumnChangeLead",
1138 // "ctrl KP_RIGHT", "selectPreviousColumnChangeLead",
1144 "MenuBar.background",
1146 "MenuBar.foreground",
1148 // "MenuBar.shadow", controlShadow,
1149 // "MenuBar.highlight", controlLtHighlight,
1150 // "MenuBar.border", menuBarBorder,
1151 // "MenuBar.windowBindings", new Object[] {
1152 // "F10", "takeFocus" },
1154 "MenuItem.font", dialogPlain12,
1155 //"MenuItem.acceleratorFont", dialogPlain12,
1156 "MenuItem.background",
1158 "MenuItem.foreground",
1160 // "MenuItem.selectionForeground", textHighlightText,
1161 // "MenuItem.selectionBackground", textHighlight,
1162 // "MenuItem.disabledForeground", null,
1163 // "MenuItem.acceleratorForeground", menuText,
1164 // "MenuItem.acceleratorSelectionForeground", textHighlightText,
1165 // "MenuItem.acceleratorDelimiter", menuItemAcceleratorDelimiter,
1166 // "MenuItem.border", marginBorder,
1167 // "MenuItem.borderPainted", Boolean.FALSE,
1170 // "MenuItem.checkIcon", menuItemCheckIcon,
1171 // "MenuItem.arrowIcon", menuItemArrowIcon,
1172 // "MenuItem.commandSound", null,
1174 "RadioButtonMenuItem.font", dialogPlain12,
1175 // "RadioButtonMenuItem.acceleratorFont", dialogPlain12,
1176 "RadioButtonMenuItem.background",
1178 "RadioButtonMenuItem.foreground",
1180 // "RadioButtonMenuItem.selectionForeground", textHighlightText,
1181 // "RadioButtonMenuItem.selectionBackground", textHighlight,
1182 // "RadioButtonMenuItem.disabledForeground", null,
1183 // "RadioButtonMenuItem.acceleratorForeground", menuText,
1184 // "RadioButtonMenuItem.acceleratorSelectionForeground",
1185 // textHighlightText,
1186 // "RadioButtonMenuItem.border", marginBorder,
1187 // "RadioButtonMenuItem.borderPainted", Boolean.FALSE,
1188 "RadioButtonMenuItem.margin",
1190 // "RadioButtonMenuItem.checkIcon", radioButtonMenuItemIcon,
1191 // "RadioButtonMenuItem.arrowIcon", menuItemArrowIcon,
1192 // "RadioButtonMenuItem.commandSound", null,
1194 "CheckBoxMenuItem.font", dialogPlain12,
1195 // "CheckBoxMenuItem.acceleratorFont", dialogPlain12,
1196 "CheckBoxMenuItem.background",
1198 "CheckBoxMenuItem.foreground",
1200 // "CheckBoxMenuItem.selectionForeground", textHighlightText,
1201 // "CheckBoxMenuItem.selectionBackground", textHighlight,
1202 // "CheckBoxMenuItem.disabledForeground", null,
1203 // "CheckBoxMenuItem.acceleratorForeground", menuText,
1204 // "CheckBoxMenuItem.acceleratorSelectionForeground", textHighlightText,
1205 // "CheckBoxMenuItem.border", marginBorder,
1206 // "CheckBoxMenuItem.borderPainted", Boolean.FALSE,
1207 "CheckBoxMenuItem.margin",
1209 // "CheckBoxMenuItem.checkIcon", checkBoxMenuItemIcon,
1210 // "CheckBoxMenuItem.arrowIcon", menuItemArrowIcon,
1211 // "CheckBoxMenuItem.commandSound", null,
1213 // "Menu.font", dialogPlain12,
1214 // "Menu.acceleratorFont", dialogPlain12,
1219 // "Menu.selectionForeground", textHighlightText,
1220 // "Menu.selectionBackground", textHighlight,
1221 // "Menu.disabledForeground", null,
1222 // "Menu.acceleratorForeground", menuText,
1223 // "Menu.acceleratorSelectionForeground", textHighlightText,
1224 // "Menu.border", marginBorder,
1225 // "Menu.borderPainted", Boolean.FALSE,
1228 // "Menu.checkIcon", menuItemCheckIcon,
1229 // "Menu.arrowIcon", menuArrowIcon,
1230 // "Menu.menuPopupOffsetX", new Integer(0),
1231 // "Menu.menuPopupOffsetY", new Integer(0),
1232 // "Menu.submenuPopupOffsetX", new Integer(0),
1233 // "Menu.submenuPopupOffsetY", new Integer(0),
1234 // "Menu.shortcutKeys", new int[] {KeyEvent.ALT_MASK},
1235 // "Menu.crossMenuMnemonic", Boolean.TRUE,
1236 // Menu.cancelMode affects the cancel menu action behaviour;
1237 // currently supports:
1238 // "hideLastSubmenu" (default)
1239 // hides the last open submenu,
1240 // and move selection one step back
1242 // resets selection and
1243 // hide the entire structure of open menu and its submenus
1244 // "Menu.cancelMode", "hideLastSubmenu",
1246 // Menu.preserveTopLevelSelection affects
1247 // the cancel menu action behaviour
1248 // if set to true then top level menu selection
1249 // will be preserved when the last popup was cancelled;
1250 // the menu itself will be unselect with the next cancel action
1251 // "Menu.preserveTopLevelSelection", Boolean.FALSE,
1254 // "PopupMenu.font", dialogPlain12,
1255 "PopupMenu.background",
1257 "PopupMenu.foreground",
1259 // "PopupMenu.border", popupMenuBorder,
1260 // Internal Frame Auditory Cue Mappings
1261 // "PopupMenu.popupSound", null,
1262 // // These window InputMap bindings are used when the Menu is
1264 // "PopupMenu.selectedWindowInputMapBindings", new Object[] {
1265 // "ESCAPE", "cancel",
1266 // "DOWN", "selectNext",
1267 // "KP_DOWN", "selectNext",
1268 // "UP", "selectPrevious",
1269 // "KP_UP", "selectPrevious",
1270 // "LEFT", "selectParent",
1271 // "KP_LEFT", "selectParent",
1272 // "RIGHT", "selectChild",
1273 // "KP_RIGHT", "selectChild",
1274 // "ENTER", "return",
1275 // "ctrl ENTER", "return",
1276 // "SPACE", "return"
1278 // "PopupMenu.selectedWindowInputMapBindings.RightToLeft", new Object[]
1280 // "LEFT", "selectChild",
1281 // "KP_LEFT", "selectChild",
1282 // "RIGHT", "selectParent",
1283 // "KP_RIGHT", "selectParent",
1285 "PopupMenu.consumeEventOnClose",
1289 // You can additionaly define OptionPane.messageFont which will
1290 // dictate the fonts used for the message, and
1291 // OptionPane.buttonFont, which defines the font for the buttons.
1292 // "OptionPane.font", dialogPlain12,
1293 // "OptionPane.background", control,
1294 // "OptionPane.foreground", controlText,
1295 "OptionPane.messageForeground",
1297 // "OptionPane.border", optionPaneBorder,
1298 // "OptionPane.messageAreaBorder", zeroBorder,
1299 // "OptionPane.buttonAreaBorder", optionPaneButtonAreaBorder,
1300 // "OptionPane.minimumSize", optionPaneMinimumSize,
1301 // "OptionPane.errorIcon", SwingUtilities2.makeIcon(getClass(),
1302 // BasicLookAndFeel.class,
1303 // "icons/Error.gif"),
1304 // "OptionPane.informationIcon", SwingUtilities2.makeIcon(getClass(),
1305 // BasicLookAndFeel.class,
1306 // "icons/Inform.gif"),
1307 // "OptionPane.warningIcon", SwingUtilities2.makeIcon(getClass(),
1308 // BasicLookAndFeel.class,
1309 // "icons/Warn.gif"),
1310 // "OptionPane.questionIcon", SwingUtilities2.makeIcon(getClass(),
1311 // BasicLookAndFeel.class,
1312 // "icons/Question.gif"),
1313 // "OptionPane.windowBindings", new Object[] {
1314 // "ESCAPE", "close" },
1315 // // OptionPane Auditory Cue Mappings
1316 // "OptionPane.errorSound", null,
1317 // "OptionPane.informationSound", null, // Info and Plain
1318 // "OptionPane.questionSound", null,
1319 // "OptionPane.warningSound", null,
1320 // "OptionPane.buttonClickThreshhold", fiveHundred,
1331 // "ProgressBar.font", dialogPlain12,
1332 // "ProgressBar.foreground", textHighlight,
1333 // "ProgressBar.background", control,
1334 // "ProgressBar.selectionForeground", control,
1335 // "ProgressBar.selectionBackground", textHighlight,
1336 // "ProgressBar.border", progressBarBorder,
1337 "ProgressBar.cellLength",
1339 "ProgressBar.cellSpacing",
1341 "ProgressBar.repaintInterval",
1343 "ProgressBar.cycleTime",
1345 "ProgressBar.horizontalSize",
1346 new DimensionUIResource(146, 12),
1347 "ProgressBar.verticalSize",
1348 new DimensionUIResource(12, 146),
1351 // "Separator.shadow", controlShadow, // DEPRECATED - DO NOT USE!
1352 // "Separator.highlight", controlLtHighlight, // DEPRECATED - DO NOT
1355 // "Separator.background", controlLtHighlight,
1356 // "Separator.foreground", controlShadow,
1358 // *** ScrollBar/ScrollPane/Viewport
1359 // "ScrollBar.background", scrollBarTrack,
1360 "ScrollBar.foreground",
1362 // "ScrollBar.track", table.get("scrollbar"),
1363 // "ScrollBar.trackHighlight", controlDkShadow,
1364 // "ScrollBar.thumb", control,
1365 // "ScrollBar.thumbHighlight", controlLtHighlight,
1366 // "ScrollBar.thumbDarkShadow", controlDkShadow,
1367 // "ScrollBar.thumbShadow", controlShadow,
1368 // "ScrollBar.border", null,
1369 // "ScrollBar.minimumThumbSize", minimumThumbSize,
1370 // "ScrollBar.maximumThumbSize", maximumThumbSize,
1371 // "ScrollBar.ancestorInputMap",
1372 // new UIDefaults.LazyInputMap(new Object[] {
1373 // "RIGHT", "positiveUnitIncrement",
1374 // "KP_RIGHT", "positiveUnitIncrement",
1375 // "DOWN", "positiveUnitIncrement",
1376 // "KP_DOWN", "positiveUnitIncrement",
1377 // "PAGE_DOWN", "positiveBlockIncrement",
1378 // "LEFT", "negativeUnitIncrement",
1379 // "KP_LEFT", "negativeUnitIncrement",
1380 // "UP", "negativeUnitIncrement",
1381 // "KP_UP", "negativeUnitIncrement",
1382 // "PAGE_UP", "negativeBlockIncrement",
1383 // "HOME", "minScroll",
1384 // "END", "maxScroll"
1386 // "ScrollBar.ancestorInputMap.RightToLeft",
1387 // new UIDefaults.LazyInputMap(new Object[] {
1388 // "RIGHT", "negativeUnitIncrement",
1389 // "KP_RIGHT", "negativeUnitIncrement",
1390 // "LEFT", "positiveUnitIncrement",
1391 // "KP_LEFT", "positiveUnitIncrement",
1396 // "ScrollPane.font", dialogPlain12,
1397 // "ScrollPane.background", control,
1398 // "ScrollPane.foreground", controlText,
1399 // "ScrollPane.border", textFieldBorder,
1400 // "ScrollPane.viewportBorder", null,
1401 // "ScrollPane.ancestorInputMap",
1402 // new UIDefaults.LazyInputMap(new Object[] {
1403 // "RIGHT", "unitScrollRight",
1404 // "KP_RIGHT", "unitScrollRight",
1405 // "DOWN", "unitScrollDown",
1406 // "KP_DOWN", "unitScrollDown",
1407 // "LEFT", "unitScrollLeft",
1408 // "KP_LEFT", "unitScrollLeft",
1409 // "UP", "unitScrollUp",
1410 // "KP_UP", "unitScrollUp",
1411 // "PAGE_UP", "scrollUp",
1412 // "PAGE_DOWN", "scrollDown",
1413 // "ctrl PAGE_UP", "scrollLeft",
1414 // "ctrl PAGE_DOWN", "scrollRight",
1415 // "ctrl HOME", "scrollHome",
1416 // "ctrl END", "scrollEnd"
1418 // "ScrollPane.ancestorInputMap.RightToLeft",
1419 // new UIDefaults.LazyInputMap(new Object[] {
1420 // "ctrl PAGE_UP", "scrollRight",
1421 // "ctrl PAGE_DOWN", "scrollLeft",
1424 // "Viewport.font", dialogPlain12,
1425 // "Viewport.background", control,
1426 "Viewport.foreground",
1430 // "Slider.font", dialogPlain12,
1431 // "Slider.foreground", control,
1432 // "Slider.background", control,
1433 // "Slider.highlight", controlLtHighlight,
1434 // "Slider.tickColor", Color.black,
1435 // "Slider.shadow", controlShadow,
1436 // "Slider.focus", controlDkShadow,
1437 // "Slider.border", null,
1438 "Slider.horizontalSize",
1439 new Dimension(200, 21),
1440 "Slider.verticalSize",
1441 new Dimension(21, 200),
1442 "Slider.minimumHorizontalSize",
1443 new Dimension(36, 21),
1444 "Slider.minimumVerticalSize",
1445 new Dimension(21, 36),
1446 // "Slider.focusInsets", sliderFocusInsets,
1447 // "Slider.focusInputMap",
1448 // new UIDefaults.LazyInputMap(new Object[] {
1449 // "RIGHT", "positiveUnitIncrement",
1450 // "KP_RIGHT", "positiveUnitIncrement",
1451 // "DOWN", "negativeUnitIncrement",
1452 // "KP_DOWN", "negativeUnitIncrement",
1453 // "PAGE_DOWN", "negativeBlockIncrement",
1454 // "LEFT", "negativeUnitIncrement",
1455 // "KP_LEFT", "negativeUnitIncrement",
1456 // "UP", "positiveUnitIncrement",
1457 // "KP_UP", "positiveUnitIncrement",
1458 // "PAGE_UP", "positiveBlockIncrement",
1459 // "HOME", "minScroll",
1460 // "END", "maxScroll"
1462 // "Slider.focusInputMap.RightToLeft",
1463 // new UIDefaults.LazyInputMap(new Object[] {
1464 // "RIGHT", "negativeUnitIncrement",
1465 // "KP_RIGHT", "negativeUnitIncrement",
1466 // "LEFT", "positiveUnitIncrement",
1467 // "KP_LEFT", "positiveUnitIncrement",
1473 // "Spinner.background", control,
1474 // "Spinner.foreground", control,
1475 // "Spinner.border", textFieldBorder,
1476 // "Spinner.arrowButtonBorder", null,
1477 // "Spinner.arrowButtonInsets", null,
1478 "Spinner.arrowButtonSize",
1479 new Dimension(16, 5),
1480 // "Spinner.ancestorInputMap",
1481 // new UIDefaults.LazyInputMap(new Object[] {
1482 // "UP", "increment",
1483 // "KP_UP", "increment",
1484 // "DOWN", "decrement",
1485 // "KP_DOWN", "decrement",
1487 // "Spinner.editorBorderPainted", Boolean.FALSE,
1488 "Spinner.editorAlignment",
1489 JTextField.TRAILING,
1492 "SplitPane.background",
1494 // "SplitPane.highlight", controlLtHighlight,
1495 // "SplitPane.shadow", controlShadow,
1496 // "SplitPane.darkShadow", controlDkShadow,
1497 // "SplitPane.border", splitPaneBorder,
1498 "SplitPane.dividerSize",
1500 // "SplitPaneDivider.border", splitPaneDividerBorder,
1501 "SplitPaneDivider.draggingColor",
1503 // "SplitPane.ancestorInputMap",
1504 // new UIDefaults.LazyInputMap(new Object[] {
1505 // "UP", "negativeIncrement",
1506 // "DOWN", "positiveIncrement",
1507 // "LEFT", "negativeIncrement",
1508 // "RIGHT", "positiveIncrement",
1509 // "KP_UP", "negativeIncrement",
1510 // "KP_DOWN", "positiveIncrement",
1511 // "KP_LEFT", "negativeIncrement",
1512 // "KP_RIGHT", "positiveIncrement",
1513 // "HOME", "selectMin",
1514 // "END", "selectMax",
1515 // "F8", "startResize",
1516 // "F6", "toggleFocus",
1517 // "ctrl TAB", "focusOutForward",
1518 // "ctrl shift TAB", "focusOutBackward"
1522 // "TabbedPane.font", dialogPlain12,
1523 // "TabbedPane.background", control,
1524 // "TabbedPane.foreground", controlText,
1525 // "TabbedPane.highlight", controlLtHighlight,
1526 // "TabbedPane.light", controlHighlight,
1527 // "TabbedPane.shadow", controlShadow,
1528 // "TabbedPane.darkShadow", controlDkShadow,
1529 "TabbedPane.selected",
1531 // "TabbedPane.focus", controlText,
1532 "TabbedPane.textIconGap",
1535 // Causes tabs to be painted on top of the content area border.
1536 // The amount of overlap is then controlled by tabAreaInsets.bottom,
1537 // which is zero by default
1538 "TabbedPane.tabsOverlapBorder",
1540 // "TabbedPane.selectionFollowsFocus", Boolean.TRUE,
1542 "TabbedPane.labelShift",
1544 "TabbedPane.selectedLabelShift",
1546 "TabbedPane.tabInsets",
1547 tabbedPaneTabInsets,
1548 "TabbedPane.selectedTabPadInsets",
1549 tabbedPaneTabPadInsets,
1550 "TabbedPane.tabAreaInsets",
1551 tabbedPaneTabAreaInsets,
1552 "TabbedPane.contentBorderInsets",
1553 tabbedPaneContentBorderInsets,
1554 "TabbedPane.tabRunOverlay",
1556 // "TabbedPane.tabsOpaque", Boolean.TRUE,
1557 // "TabbedPane.contentOpaque", Boolean.TRUE,
1558 // "TabbedPane.focusInputMap",
1559 // new UIDefaults.LazyInputMap(new Object[] {
1560 // "RIGHT", "navigateRight",
1561 // "KP_RIGHT", "navigateRight",
1562 // "LEFT", "navigateLeft",
1563 // "KP_LEFT", "navigateLeft",
1564 // "UP", "navigateUp",
1565 // "KP_UP", "navigateUp",
1566 // "DOWN", "navigateDown",
1567 // "KP_DOWN", "navigateDown",
1568 // "ctrl DOWN", "requestFocusForVisibleComponent",
1569 // "ctrl KP_DOWN", "requestFocusForVisibleComponent",
1571 // "TabbedPane.ancestorInputMap",
1572 // new UIDefaults.LazyInputMap(new Object[] {
1573 // "ctrl PAGE_DOWN", "navigatePageDown",
1574 // "ctrl PAGE_UP", "navigatePageUp",
1575 // "ctrl UP", "requestFocus",
1576 // "ctrl KP_UP", "requestFocus",
1581 // "Table.font", dialogPlain12,
1582 // "Table.foreground", controlText, // cell text color
1584 window, // cell background color
1585 // "Table.selectionForeground", textHighlightText,
1586 // "Table.selectionBackground", textHighlight,
1587 // "Table.dropLineColor", controlShadow,
1588 "Table.dropLineShortColor",
1591 gray, // grid line color
1592 "Table.focusCellBackground",
1594 "Table.focusCellForeground",
1596 // "Table.focusCellHighlightBorder", focusCellHighlightBorder,
1597 // "Table.scrollPaneBorder", loweredBevelBorder,
1598 // "Table.ancestorInputMap",
1599 // new UIDefaults.LazyInputMap(new Object[] {
1600 // "ctrl C", "copy",
1601 // "ctrl V", "paste",
1604 // "PASTE", "paste",
1606 // "control INSERT", "copy",
1607 // "shift INSERT", "paste",
1608 // "shift DELETE", "cut",
1609 // "RIGHT", "selectNextColumn",
1610 // "KP_RIGHT", "selectNextColumn",
1611 // "shift RIGHT", "selectNextColumnExtendSelection",
1612 // "shift KP_RIGHT", "selectNextColumnExtendSelection",
1613 // "ctrl shift RIGHT", "selectNextColumnExtendSelection",
1614 // "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
1615 // "ctrl RIGHT", "selectNextColumnChangeLead",
1616 // "ctrl KP_RIGHT", "selectNextColumnChangeLead",
1617 // "LEFT", "selectPreviousColumn",
1618 // "KP_LEFT", "selectPreviousColumn",
1619 // "shift LEFT", "selectPreviousColumnExtendSelection",
1620 // "shift KP_LEFT", "selectPreviousColumnExtendSelection",
1621 // "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
1622 // "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
1623 // "ctrl LEFT", "selectPreviousColumnChangeLead",
1624 // "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
1625 // "DOWN", "selectNextRow",
1626 // "KP_DOWN", "selectNextRow",
1627 // "shift DOWN", "selectNextRowExtendSelection",
1628 // "shift KP_DOWN", "selectNextRowExtendSelection",
1629 // "ctrl shift DOWN", "selectNextRowExtendSelection",
1630 // "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
1631 // "ctrl DOWN", "selectNextRowChangeLead",
1632 // "ctrl KP_DOWN", "selectNextRowChangeLead",
1633 // "UP", "selectPreviousRow",
1634 // "KP_UP", "selectPreviousRow",
1635 // "shift UP", "selectPreviousRowExtendSelection",
1636 // "shift KP_UP", "selectPreviousRowExtendSelection",
1637 // "ctrl shift UP", "selectPreviousRowExtendSelection",
1638 // "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
1639 // "ctrl UP", "selectPreviousRowChangeLead",
1640 // "ctrl KP_UP", "selectPreviousRowChangeLead",
1641 // "HOME", "selectFirstColumn",
1642 // "shift HOME", "selectFirstColumnExtendSelection",
1643 // "ctrl shift HOME", "selectFirstRowExtendSelection",
1644 // "ctrl HOME", "selectFirstRow",
1645 // "END", "selectLastColumn",
1646 // "shift END", "selectLastColumnExtendSelection",
1647 // "ctrl shift END", "selectLastRowExtendSelection",
1648 // "ctrl END", "selectLastRow",
1649 // "PAGE_UP", "scrollUpChangeSelection",
1650 // "shift PAGE_UP", "scrollUpExtendSelection",
1651 // "ctrl shift PAGE_UP", "scrollLeftExtendSelection",
1652 // "ctrl PAGE_UP", "scrollLeftChangeSelection",
1653 // "PAGE_DOWN", "scrollDownChangeSelection",
1654 // "shift PAGE_DOWN", "scrollDownExtendSelection",
1655 // "ctrl shift PAGE_DOWN", "scrollRightExtendSelection",
1656 // "ctrl PAGE_DOWN", "scrollRightChangeSelection",
1657 // "TAB", "selectNextColumnCell",
1658 // "shift TAB", "selectPreviousColumnCell",
1659 // "ENTER", "selectNextRowCell",
1660 // "shift ENTER", "selectPreviousRowCell",
1661 // "ctrl A", "selectAll",
1662 // "ctrl SLASH", "selectAll",
1663 // "ctrl BACK_SLASH", "clearSelection",
1664 // "ESCAPE", "cancel",
1665 // "F2", "startEditing",
1666 // "SPACE", "addToSelection",
1667 // "ctrl SPACE", "toggleAndAnchor",
1668 // "shift SPACE", "extendTo",
1669 // "ctrl shift SPACE", "moveSelectionTo",
1670 // "F8", "focusHeader"
1672 // "Table.ancestorInputMap.RightToLeft",
1673 // new UIDefaults.LazyInputMap(new Object[] {
1674 // "RIGHT", "selectPreviousColumn",
1675 // "KP_RIGHT", "selectPreviousColumn",
1676 // "shift RIGHT", "selectPreviousColumnExtendSelection",
1677 // "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
1678 // "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
1679 // "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
1680 // "ctrl RIGHT", "selectPreviousColumnChangeLead",
1681 // "ctrl KP_RIGHT", "selectPreviousColumnChangeLead",
1682 // "LEFT", "selectNextColumn",
1683 // "KP_LEFT", "selectNextColumn",
1684 // "shift LEFT", "selectNextColumnExtendSelection",
1685 // "shift KP_LEFT", "selectNextColumnExtendSelection",
1686 // "ctrl shift LEFT", "selectNextColumnExtendSelection",
1687 // "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
1688 // "ctrl LEFT", "selectNextColumnChangeLead",
1689 // "ctrl KP_LEFT", "selectNextColumnChangeLead",
1690 // "ctrl PAGE_UP", "scrollRightChangeSelection",
1691 // "ctrl PAGE_DOWN", "scrollLeftChangeSelection",
1692 // "ctrl shift PAGE_UP", "scrollRightExtendSelection",
1693 // "ctrl shift PAGE_DOWN", "scrollLeftExtendSelection",
1695 // "Table.ascendingSortIcon", new SwingLazyValue(
1696 // "sun.swing.icon.SortArrowIcon",
1697 // null, new Object[] { Boolean.TRUE,
1698 // "Table.sortIconColor" }),
1699 // "Table.descendingSortIcon", new SwingLazyValue(
1700 // "sun.swing.icon.SortArrowIcon",
1701 // null, new Object[] { Boolean.FALSE,
1702 // "Table.sortIconColor" }),
1703 // "Table.sortIconColor", controlShadow,
1705 // "TableHeader.font", dialogPlain12,
1706 // "TableHeader.foreground", controlText, // header text color
1707 // "TableHeader.background", control, // header background
1708 // "TableHeader.cellBorder", tableHeaderBorder,
1710 // Support for changing the background/border of the currently
1711 // selected header column when the header has the keyboard focus.
1712 // "TableHeader.focusCellBackground", table.getColor("text"), // like
1713 // text component bg
1714 // "TableHeader.focusCellForeground", null,
1715 // "TableHeader.focusCellBorder", null,
1716 // "TableHeader.ancestorInputMap",
1717 // new UIDefaults.LazyInputMap(new Object[] {
1718 // "SPACE", "toggleSortOrder",
1719 // "LEFT", "selectColumnToLeft",
1720 // "KP_LEFT", "selectColumnToLeft",
1721 // "RIGHT", "selectColumnToRight",
1722 // "KP_RIGHT", "selectColumnToRight",
1723 // "alt LEFT", "moveColumnLeft",
1724 // "alt KP_LEFT", "moveColumnLeft",
1725 // "alt RIGHT", "moveColumnRight",
1726 // "alt KP_RIGHT", "moveColumnRight",
1727 // "alt shift LEFT", "resizeLeft",
1728 // "alt shift KP_LEFT", "resizeLeft",
1729 // "alt shift RIGHT", "resizeRight",
1730 // "alt shift KP_RIGHT", "resizeRight",
1731 // "ESCAPE", "focusTable",
1737 "TextField.background",
1739 "TextField.foreground",
1741 // "TextField.shadow", controlShadow,
1742 // "TextField.darkShadow", controlDkShadow,
1743 // "TextField.light", controlHighlight,
1744 // "TextField.highlight", controlLtHighlight,
1745 // "TextField.inactiveForeground", textInactiveText,
1746 // "TextField.inactiveBackground", control,
1747 // "TextField.selectionBackground", textHighlight,
1748 // "TextField.selectionForeground", textHighlightText,
1749 // "TextField.caretForeground", textText,
1750 // "TextField.caretBlinkRate", caretBlinkRate,
1751 // "TextField.border", textFieldBorder,
1755 "FormattedTextField.font",
1757 "FormattedTextField.background",
1759 "FormattedTextField.foreground",
1761 // "FormattedTextField.inactiveForeground", textInactiveText,
1762 // "FormattedTextField.inactiveBackground", control,
1763 // "FormattedTextField.selectionBackground", textHighlight,
1764 // "FormattedTextField.selectionForeground", textHighlightText,
1765 "FormattedTextField.caretForeground",
1767 // "FormattedTextField.caretBlinkRate", caretBlinkRate,
1768 // "FormattedTextField.border", textFieldBorder,
1769 "FormattedTextField.margin",
1771 // "FormattedTextField.focusInputMap",
1772 // new UIDefaults.LazyInputMap(new Object[] {
1773 // "ctrl C", DefaultEditorKit.copyAction,
1774 // "ctrl V", DefaultEditorKit.pasteAction,
1775 // "ctrl X", DefaultEditorKit.cutAction,
1776 // "COPY", DefaultEditorKit.copyAction,
1777 // "PASTE", DefaultEditorKit.pasteAction,
1778 // "CUT", DefaultEditorKit.cutAction,
1779 // "control INSERT", DefaultEditorKit.copyAction,
1780 // "shift INSERT", DefaultEditorKit.pasteAction,
1781 // "shift DELETE", DefaultEditorKit.cutAction,
1782 // "shift LEFT", DefaultEditorKit.selectionBackwardAction,
1783 // "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
1784 // "shift RIGHT", DefaultEditorKit.selectionForwardAction,
1785 // "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
1786 // "ctrl LEFT", DefaultEditorKit.previousWordAction,
1787 // "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
1788 // "ctrl RIGHT", DefaultEditorKit.nextWordAction,
1789 // "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
1790 // "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
1791 // "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
1792 // "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
1793 // "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
1794 // "ctrl A", DefaultEditorKit.selectAllAction,
1795 // "HOME", DefaultEditorKit.beginLineAction,
1796 // "END", DefaultEditorKit.endLineAction,
1797 // "shift HOME", DefaultEditorKit.selectionBeginLineAction,
1798 // "shift END", DefaultEditorKit.selectionEndLineAction,
1799 // "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
1800 // "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
1801 // "ctrl H", DefaultEditorKit.deletePrevCharAction,
1802 // "DELETE", DefaultEditorKit.deleteNextCharAction,
1803 // "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
1804 // "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
1805 // "RIGHT", DefaultEditorKit.forwardAction,
1806 // "LEFT", DefaultEditorKit.backwardAction,
1807 // "KP_RIGHT", DefaultEditorKit.forwardAction,
1808 // "KP_LEFT", DefaultEditorKit.backwardAction,
1809 // "ENTER", JTextField.notifyAction,
1810 // "ctrl BACK_SLASH", "unselect",
1811 // "control shift O", "toggle-componentOrientation",
1812 // "ESCAPE", "reset-field-edit",
1813 // "UP", "increment",
1814 // "KP_UP", "increment",
1815 // "DOWN", "decrement",
1816 // "KP_DOWN", "decrement",
1819 "PasswordField.font",
1821 "PasswordField.background",
1823 "PasswordField.foreground",
1825 // "PasswordField.inactiveForeground", textInactiveText,
1826 // "PasswordField.inactiveBackground", control,
1827 // "PasswordField.selectionBackground", textHighlight,
1828 // "PasswordField.selectionForeground", textHighlightText,
1829 // "PasswordField.caretForeground", textText,
1830 // "PasswordField.caretBlinkRate", caretBlinkRate,
1831 // "PasswordField.border", textFieldBorder,
1832 "PasswordField.margin",
1834 "PasswordField.echoChar",
1839 "TextArea.background",
1841 "TextArea.foreground",
1843 // "TextArea.inactiveForeground", textInactiveText,
1844 // "TextArea.selectionBackground", textHighlight,
1845 // "TextArea.selectionForeground", textHighlightText,
1846 // "TextArea.caretForeground", textText,
1847 // "TextArea.caretBlinkRate", caretBlinkRate,
1848 // "TextArea.border", marginBorder,
1854 "TextPane.background",
1856 "TextPane.foreground",
1858 // "TextPane.selectionBackground", textHighlight,
1859 // "TextPane.selectionForeground", textHighlightText,
1860 // "TextPane.caretForeground", textText,
1861 // "TextPane.caretBlinkRate", caretBlinkRate,
1862 // "TextPane.inactiveForeground", textInactiveText,
1863 // "TextPane.border", marginBorder,
1869 "EditorPane.background",
1871 "EditorPane.foreground",
1873 // "EditorPane.selectionBackground", textHighlight,
1874 // "EditorPane.selectionForeground", textHighlightText,
1875 // "EditorPane.caretForeground", textText,
1876 // "EditorPane.caretBlinkRate", caretBlinkRate,
1877 // "EditorPane.inactiveForeground", textInactiveText,
1878 // "EditorPane.border", marginBorder,
1879 "EditorPane.margin",
1882 // "html.pendingImage", SwingUtilities2.makeIcon(getClass(),
1883 // BasicLookAndFeel.class,
1884 // "icons/image-delayed.png"),
1885 // "html.missingImage", SwingUtilities2.makeIcon(getClass(),
1886 // BasicLookAndFeel.class,
1887 // "icons/image-failed.png"),
1889 // "TitledBorder.font", dialogPlain12,
1890 "TitledBorder.titleColor",
1892 // "TitledBorder.border", etchedBorder,
1895 // "ToolBar.font", dialogPlain12,
1896 // "ToolBar.background", control,
1897 // "ToolBar.foreground", controlText,
1898 // "ToolBar.shadow", controlShadow,
1899 // "ToolBar.darkShadow", controlDkShadow,
1900 // "ToolBar.light", controlHighlight,
1901 // "ToolBar.highlight", controlLtHighlight,
1902 // "ToolBar.dockingBackground", control,
1903 // "ToolBar.dockingForeground", red,
1904 // "ToolBar.floatingBackground", control,
1905 // "ToolBar.floatingForeground", darkGray,
1906 // "ToolBar.border", etchedBorder,
1907 // "ToolBar.separatorSize", toolBarSeparatorSize,
1908 // "ToolBar.ancestorInputMap",
1909 // new UIDefaults.LazyInputMap(new Object[] {
1910 // "UP", "navigateUp",
1911 // "KP_UP", "navigateUp",
1912 // "DOWN", "navigateDown",
1913 // "KP_DOWN", "navigateDown",
1914 // "LEFT", "navigateLeft",
1915 // "KP_LEFT", "navigateLeft",
1916 // "RIGHT", "navigateRight",
1917 // "KP_RIGHT", "navigateRight"
1921 // "ToolTip.font", sansSerifPlain12,
1922 // "ToolTip.background", table.get("info"),
1923 // "ToolTip.foreground", table.get("infoText"),
1924 // "ToolTip.border", blackLineBorder,
1925 // ToolTips also support backgroundInactive, borderInactive,
1926 // and foregroundInactive
1928 // *** ToolTipManager
1929 // ToolTipManager.enableToolTipMode currently supports:
1930 // "allWindows" (default):
1931 // enables tool tips for all windows of all java applications,
1932 // whether the windows are active or inactive
1933 // "activeApplication"
1934 // enables tool tips for windows of an application only when
1935 // the application has an active window
1936 // "ToolTipManager.enableToolTipMode", "allWindows",
1941 "Tree.lineTypeDashed",
1943 // "Tree.font", dialogPlain12,
1950 "Tree.textForeground",
1952 "Tree.textBackground",
1954 // "Tree.selectionForeground", textHighlightText,
1955 // "Tree.selectionBackground", textHighlight,
1956 // "Tree.selectionBorderColor", black,
1957 // "Tree.dropLineColor", controlShadow,
1958 // "Tree.editorBorder", blackLineBorder,
1959 "Tree.leftChildIndent", new Integer(7), "Tree.rightChildIndent",
1960 new Integer(13), "Tree.rowHeight", new Integer(16),
1961 "Tree.scrollsOnExpand", Boolean.TRUE,
1962 // "Tree.openIcon", SwingUtilities2.makeIcon(getClass(),
1963 // BasicLookAndFeel.class,
1964 // "icons/TreeOpen.gif"),
1965 // "Tree.closedIcon", SwingUtilities2.makeIcon(getClass(),
1966 // BasicLookAndFeel.class,
1967 // "icons/TreeClosed.gif"),
1968 // "Tree.leafIcon", SwingUtilities2.makeIcon(getClass(),
1969 // BasicLookAndFeel.class,
1970 // "icons/TreeLeaf.gif"),
1971 // "Tree.expandedIcon", null,
1972 // "Tree.collapsedIcon", null,
1973 // "Tree.changeSelectionWithFocus", Boolean.TRUE,
1974 // "Tree.drawsFocusBorderAroundIcon", Boolean.FALSE,
1975 "Tree.timeFactor", oneThousand,
1976 // "Tree.focusInputMap",
1977 // new UIDefaults.LazyInputMap(new Object[] {
1978 // "ctrl C", "copy",
1979 // "ctrl V", "paste",
1982 // "PASTE", "paste",
1984 // "control INSERT", "copy",
1985 // "shift INSERT", "paste",
1986 // "shift DELETE", "cut",
1987 // "UP", "selectPrevious",
1988 // "KP_UP", "selectPrevious",
1989 // "shift UP", "selectPreviousExtendSelection",
1990 // "shift KP_UP", "selectPreviousExtendSelection",
1991 // "ctrl shift UP", "selectPreviousExtendSelection",
1992 // "ctrl shift KP_UP", "selectPreviousExtendSelection",
1993 // "ctrl UP", "selectPreviousChangeLead",
1994 // "ctrl KP_UP", "selectPreviousChangeLead",
1995 // "DOWN", "selectNext",
1996 // "KP_DOWN", "selectNext",
1997 // "shift DOWN", "selectNextExtendSelection",
1998 // "shift KP_DOWN", "selectNextExtendSelection",
1999 // "ctrl shift DOWN", "selectNextExtendSelection",
2000 // "ctrl shift KP_DOWN", "selectNextExtendSelection",
2001 // "ctrl DOWN", "selectNextChangeLead",
2002 // "ctrl KP_DOWN", "selectNextChangeLead",
2003 // "RIGHT", "selectChild",
2004 // "KP_RIGHT", "selectChild",
2005 // "LEFT", "selectParent",
2006 // "KP_LEFT", "selectParent",
2007 // "PAGE_UP", "scrollUpChangeSelection",
2008 // "shift PAGE_UP", "scrollUpExtendSelection",
2009 // "ctrl shift PAGE_UP", "scrollUpExtendSelection",
2010 // "ctrl PAGE_UP", "scrollUpChangeLead",
2011 // "PAGE_DOWN", "scrollDownChangeSelection",
2012 // "shift PAGE_DOWN", "scrollDownExtendSelection",
2013 // "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
2014 // "ctrl PAGE_DOWN", "scrollDownChangeLead",
2015 // "HOME", "selectFirst",
2016 // "shift HOME", "selectFirstExtendSelection",
2017 // "ctrl shift HOME", "selectFirstExtendSelection",
2018 // "ctrl HOME", "selectFirstChangeLead",
2019 // "END", "selectLast",
2020 // "shift END", "selectLastExtendSelection",
2021 // "ctrl shift END", "selectLastExtendSelection",
2022 // "ctrl END", "selectLastChangeLead",
2023 // "F2", "startEditing",
2024 // "ctrl A", "selectAll",
2025 // "ctrl SLASH", "selectAll",
2026 // "ctrl BACK_SLASH", "clearSelection",
2027 // "ctrl LEFT", "scrollLeft",
2028 // "ctrl KP_LEFT", "scrollLeft",
2029 // "ctrl RIGHT", "scrollRight",
2030 // "ctrl KP_RIGHT", "scrollRight",
2031 // "SPACE", "addToSelection",
2032 // "ctrl SPACE", "toggleAndAnchor",
2033 // "shift SPACE", "extendTo",
2034 // "ctrl shift SPACE", "moveSelectionTo"
2036 // "Tree.focusInputMap.RightToLeft",
2037 // new UIDefaults.LazyInputMap(new Object[] {
2038 // "RIGHT", "selectParent",
2039 // "KP_RIGHT", "selectParent",
2040 // "LEFT", "selectChild",
2041 // "KP_LEFT", "selectChild",
2043 // "Tree.ancestorInputMap",
2044 // new UIDefaults.LazyInputMap(new Object[] {
2045 // "ESCAPE", "cancel"
2047 // // Bind specific keys that can invoke popup on currently
2048 // // focused JComponent
2049 // "RootPane.ancestorInputMap",
2050 // new UIDefaults.LazyInputMap(new Object[] {
2051 // "shift F10", "postPopup",
2052 // "CONTEXT_MENU", "postPopup"
2055 // // These bindings are only enabled when there is a default
2056 // // button set on the rootpane.
2057 // "RootPane.defaultButtonWindowKeyBindings", new Object[] {
2058 // "ENTER", "press",
2059 // "released ENTER", "release",
2060 // "ctrl ENTER", "press",
2061 // "ctrl released ENTER", "release"
2065 table.putDefaults(defaults);
2069 // * Returns the ui that is of type <code>klass</code>, or null if
2070 // * one can not be found.
2072 // static Object getUIOfType(ComponentUI ui, Class klass) {
2073 // if (klass.isInstance(ui)) {
2079 // // ********* Auditory Cue support methods and objects *********
2080 // // also see the "AuditoryCues" section of the defaults table
2083 // * Returns an <code>ActionMap</code> containing the audio actions
2084 // * for this look and feel.
2086 // * The returned <code>ActionMap</code> contains <code>Actions</code> that
2087 // * embody the ability to render an auditory cue. These auditory
2088 // * cues map onto user and system activities that may be useful
2089 // * for an end user to know about (such as a dialog box appearing).
2091 // * At the appropriate time,
2092 // * the {@code ComponentUI} is responsible for obtaining an
2093 // * <code>Action</code> out of the <code>ActionMap</code> and passing
2094 // * it to <code>playSound</code>.
2096 // * This method first looks up the {@code ActionMap} from the
2097 // * defaults using the key {@code "AuditoryCues.actionMap"}.
2099 // * If the value is {@code non-null}, it is returned. If the value
2100 // * of the default {@code "AuditoryCues.actionMap"} is {@code null}
2101 // * and the value of the default {@code "AuditoryCues.cueList"} is
2102 // * {@code non-null}, an {@code ActionMapUIResource} is created and
2103 // * populated. Population is done by iterating over each of the
2104 // * elements of the {@code "AuditoryCues.cueList"} array, and
2105 // * invoking {@code createAudioAction()} to create an {@code
2106 // * Action} for each element. The resulting {@code Action} is
2107 // * placed in the {@code ActionMapUIResource}, using the array
2108 // * element as the key. For example, if the {@code
2109 // * "AuditoryCues.cueList"} array contains a single-element, {@code
2110 // * "audioKey"}, the {@code ActionMapUIResource} is created, then
2111 // * populated by way of {@code actionMap.put(cueList[0],
2112 // * createAudioAction(cueList[0]))}.
2114 // * If the value of the default {@code "AuditoryCues.actionMap"} is
2115 // * {@code null} and the value of the default
2116 // * {@code "AuditoryCues.cueList"} is {@code null}, an empty
2117 // * {@code ActionMapUIResource} is created.
2120 // * @return an ActionMap containing {@code Actions}
2121 // * responsible for playing auditory cues
2122 // * @throws ClassCastException if the value of the
2123 // * default {@code "AuditoryCues.actionMap"} is not an
2124 // * {@code ActionMap}, or the value of the default
2125 // * {@code "AuditoryCues.cueList"} is not an {@code Object[]}
2126 // * @see #createAudioAction
2127 // * @see #playSound(Action)
2130 // protected ActionMap getAudioActionMap() {
2131 // ActionMap audioActionMap = (ActionMap)UIManager.get(
2132 // "AuditoryCues.actionMap");
2133 // if (audioActionMap == null) {
2134 // Object[] acList = (Object[])UIManager.get("AuditoryCues.cueList");
2135 // if (acList != null) {
2136 // audioActionMap = new ActionMapUIResource();
2137 // for(int counter = acList.length-1; counter >= 0; counter--) {
2138 // audioActionMap.put(acList[counter],
2139 // createAudioAction(acList[counter]));
2142 // UIManager.getLookAndFeelDefaults().put("AuditoryCues.actionMap",
2145 // return audioActionMap;
2149 // * Creates and returns an {@code Action} used to play a sound.
2151 // * If {@code key} is {@code non-null}, an {@code Action} is created
2152 // * using the value from the defaults with key {@code key}. The value
2153 // * identifies the sound resource to load when
2154 // * {@code actionPerformed} is invoked on the {@code Action}. The
2155 // * sound resource is loaded into a {@code byte[]} by way of
2156 // * {@code getClass().getResourceAsStream()}.
2158 // * @param key the key identifying the audio action
2159 // * @return an {@code Action} used to play the source, or {@code null}
2160 // * if {@code key} is {@code null}
2161 // * @see #playSound(Action)
2164 // protected Action createAudioAction(Object key) {
2165 // if (key != null) {
2166 // String audioKey = (String)key;
2167 // String audioValue = (String)UIManager.get(key);
2168 // return new AudioAction(audioKey, audioValue);
2175 // * Pass the name String to the super constructor. This is used
2176 // * later to identify the Action and decide whether to play it or
2177 // * not. Store the resource String. I is used to get the audio
2178 // * resource. In this case, the resource is an audio file.
2182 // private class AudioAction extends AbstractAction implements LineListener {
2183 // // We strive to only play one sound at a time (other platforms
2184 // // appear to do this). This is done by maintaining the field
2185 // // clipPlaying. Every time a sound is to be played,
2186 // // cancelCurrentSound is invoked to cancel any sound that may be
2188 // private String audioResource;
2189 // private byte[] audioBuffer;
2192 // * The String is the name of the Action and
2193 // * points to the audio resource.
2194 // * The byte[] is a buffer of the audio bits.
2196 // public AudioAction(String name, String resource) {
2198 // audioResource = resource;
2201 // public void actionPerformed(ActionEvent e) {
2202 // if (audioBuffer == null) {
2203 // audioBuffer = loadAudioData(audioResource);
2205 // if (audioBuffer != null) {
2206 // cancelCurrentSound(null);
2208 // AudioInputStream soundStream =
2209 // AudioSystem.getAudioInputStream(
2210 // new ByteArrayInputStream(audioBuffer));
2211 // DataLine.Info info =
2212 // new DataLine.Info(Clip.class, soundStream.getFormat());
2213 // Clip clip = (Clip) AudioSystem.getLine(info);
2214 // clip.open(soundStream);
2215 // clip.addLineListener(this);
2217 // synchronized(audioLock) {
2218 // clipPlaying = clip;
2222 // } catch (Exception ex) {}
2226 // public void update(LineEvent event) {
2227 // if (event.getType() == LineEvent.Type.STOP) {
2228 // cancelCurrentSound((Clip)event.getLine());
2233 // * If the parameter is null, or equal to the currently
2234 // * playing sound, then cancel the currently playing sound.
2236 // private void cancelCurrentSound(Clip clip) {
2237 // Clip lastClip = null;
2239 // synchronized(audioLock) {
2240 // if (clip == null || clip == clipPlaying) {
2241 // lastClip = clipPlaying;
2242 // clipPlaying = null;
2246 // if (lastClip != null) {
2247 // lastClip.removeLineListener(this);
2248 // lastClip.close();
2254 // * Utility method that loads audio bits for the specified
2255 // * <code>soundFile</code> filename. If this method is unable to
2256 // * build a viable path name from the <code>baseClass</code> and
2257 // * <code>soundFile</code> passed into this method, it will
2258 // * return <code>null</code>.
2260 // * @param baseClass used as the root class/location to get the
2262 // * @param soundFile the name of the audio file to be retrieved
2264 // * @return A byte[] with audio data or null
2267 // private byte[] loadAudioData(final String soundFile){
2268 // if (soundFile == null) {
2271 // /* Copy resource into a byte array. This is
2272 // * necessary because several browsers consider
2273 // * Class.getResource a security risk since it
2274 // * can be used to load additional classes.
2275 // * Class.getResourceAsStream just returns raw
2276 // * bytes, which we can convert to a sound.
2278 // byte[] buffer = (byte[])AccessController.doPrivileged(
2279 // new PrivilegedAction() {
2280 // public Object run() {
2282 // InputStream resource = BasicLookAndFeel.this.
2283 // getClass().getResourceAsStream(soundFile);
2284 // if (resource == null) {
2287 // BufferedInputStream in =
2288 // new BufferedInputStream(resource);
2289 // ByteArrayOutputStream out =
2290 // new ByteArrayOutputStream(1024);
2291 // byte[] buffer = new byte[1024];
2293 // while ((n = in.read(buffer)) > 0) {
2294 // out.write(buffer, 0, n);
2298 // buffer = out.toByteArray();
2300 // } catch (IOException ioe) {
2301 // System.err.println(ioe.toString());
2306 // if (buffer == null) {
2307 // System.err.println(getClass().getName() + "/" +
2308 // soundFile + " not found.");
2311 // if (buffer.length == 0) {
2312 // System.err.println("warning: " + soundFile +
2313 // " is zero-length");
2320 // * If necessary, invokes {@code actionPerformed} on
2321 // * {@code audioAction} to play a sound.
2322 // * The {@code actionPerformed} method is invoked if the value of
2323 // * the {@code "AuditoryCues.playList"} default is a {@code
2324 // * non-null} {@code Object[]} containing a {@code String} entry
2325 // * equal to the name of the {@code audioAction}.
2327 // * @param audioAction an Action that knows how to render the audio
2328 // * associated with the system or user activity
2329 // * that is occurring; a value of {@code null}, is
2331 // * @throws ClassCastException if {@code audioAction} is {@code non-null}
2332 // * and the value of the default {@code "AuditoryCues.playList"}
2333 // * is not an {@code Object[]}
2336 // protected void playSound(Action audioAction) {
2337 // if (audioAction != null) {
2338 // Object[] audioStrings = (Object[])
2339 // UIManager.get("AuditoryCues.playList");
2340 // if (audioStrings != null) {
2341 // // create a HashSet to help us decide to play or not
2342 // HashSet audioCues = new HashSet();
2343 // for (int i = 0; i < audioStrings.length; i++) {
2344 // audioCues.add(audioStrings[i]);
2346 // // get the name of the Action
2347 // String actionName = (String)audioAction.getValue(Action.NAME);
2348 // // if the actionName is in the audioCues HashSet, play it.
2349 // if (audioCues.contains(actionName)) {
2350 // audioAction.actionPerformed(new
2351 // ActionEvent(this, ActionEvent.ACTION_PERFORMED,
2360 // * Sets the parent of the passed in ActionMap to be the audio action
2363 // static void installAudioActionMap(ActionMap map) {
2364 // LookAndFeel laf = UIManager.getLookAndFeel();
2365 // if (laf instanceof BasicLookAndFeel) {
2366 // map.setParent(((BasicLookAndFeel)laf).getAudioActionMap());
2372 // * Helper method to play a named sound.
2374 // * @param c JComponent to play the sound for.
2375 // * @param actionKey Key for the sound.
2377 // static void playSound(JComponent c, Object actionKey) {
2378 // LookAndFeel laf = UIManager.getLookAndFeel();
2379 // if (laf instanceof BasicLookAndFeel) {
2380 // ActionMap map = c.getActionMap();
2381 // if (map != null) {
2382 // Action audioAction = map.get(actionKey);
2383 // if (audioAction != null) {
2384 // // pass off firing the Action to a utility method
2385 // ((BasicLookAndFeel)laf).playSound(audioAction);
2392 // * This class contains listener that watches for all the mouse
2393 // * events that can possibly invoke popup on the component
2395 // class AWTEventHelper implements AWTEventListener,PrivilegedAction {
2396 // AWTEventHelper() {
2398 // AccessController.doPrivileged(this);
2401 // public Object run() {
2402 // Toolkit tk = Toolkit.getDefaultToolkit();
2403 // if(invocator == null) {
2404 // tk.addAWTEventListener(this, AWTEvent.MOUSE_EVENT_MASK);
2406 // tk.removeAWTEventListener(invocator);
2408 // // Return value not used.
2412 // public void eventDispatched(AWTEvent ev) {
2413 // int eventID = ev.getID();
2414 // if((eventID & AWTEvent.MOUSE_EVENT_MASK) != 0) {
2415 // MouseEvent me = (MouseEvent) ev;
2416 // if(me.isPopupTrigger()) {
2417 // MenuElement[] elems = MenuSelectionManager
2418 // .defaultManager()
2419 // .getSelectedPath();
2420 // if(elems != null && elems.length != 0) {
2422 // // We shall not interfere with already opened menu
2424 // Object c = me.getSource();
2425 // JComponent src = null;
2426 // if(c instanceof JComponent) {
2427 // src = (JComponent) c;
2428 // } else if(c instanceof BasicSplitPaneDivider) {
2429 // // Special case - if user clicks on divider we must
2430 // // invoke popup from the SplitPane
2431 // src = (JComponent)
2432 // ((BasicSplitPaneDivider)c).getParent();
2434 // if(src != null) {
2435 // if(src.getComponentPopupMenu() != null) {
2436 // Point pt = src.getPopupLocation(me);
2438 // pt = me.getPoint();
2439 // pt = SwingUtilities.convertPoint((Component)c,
2442 // src.getComponentPopupMenu().show(src, pt.x, pt.y);
2448 // /* Activate a JInternalFrame if necessary. */
2449 // if (eventID == MouseEvent.MOUSE_PRESSED) {
2450 // Object object = ev.getSource();
2451 // if (!(object instanceof Component)) {
2454 // Component component = (Component)object;
2455 // if (component != null) {
2456 // Component parent = component;
2457 // while (parent != null && !(parent instanceof Window)) {
2458 // if (parent instanceof JInternalFrame) {
2459 // // Activate the frame.
2460 // try { ((JInternalFrame)parent).setSelected(true); }
2461 // catch (PropertyVetoException e1) { }
2463 // parent = parent.getParent();
2471 public String getName() {
2476 public String getID() {
2481 public String getDescription() {
2482 return "SwingJS L&F";
2486 public boolean isNativeLookAndFeel() {
2491 public boolean isSupportedLookAndFeel() {