/* * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package swingjs.plaf; //import jsjava.awt.AWTEvent; import jsjava.awt.Color; import jsjava.awt.Dimension; import jsjava.awt.Font; import jsjavax.swing.DefaultListCellRenderer; import jsjavax.swing.JTextField; //import jsjava.awt.Component; //import jsjava.awt.Dimension; //import jsjava.awt.Font; //import jsjava.awt.Point; //import jsjava.awt.Toolkit; //import jsjava.awt.Window; //import jsjava.awt.event.AWTEventListener; //import jsjava.awt.event.ActionEvent; //import jsjava.awt.event.KeyEvent; //import jsjava.awt.event.MouseEvent; //import jsjava.beans.PropertyChangeEvent; //import jsjava.beans.PropertyChangeListener; //import jsjava.beans.PropertyVetoException; //import java.io.BufferedInputStream; //import java.io.ByteArrayInputStream; //import java.io.ByteArrayOutputStream; //import java.io.IOException; //import java.io.InputStream; ////import java.io.Serializable; //import jsjava.security.AccessController; //import jsjava.security.PrivilegedAction; //import java.util.HashSet; //import jsjava.util.Locale; // ////import jsjavax.sound.sampled.AudioInputStream; ////import jsjavax.sound.sampled.AudioSystem; ////import jsjavax.sound.sampled.Clip; ////import jsjavax.sound.sampled.DataLine; ////import jsjavax.sound.sampled.LineEvent; ////import jsjavax.sound.sampled.LineListener; //import jsjavax.swing.AbstractAction; //import jsjavax.swing.Action; //import jsjavax.swing.ActionMap; //import jsjavax.swing.DefaultListCellRenderer; //import jsjavax.swing.JComponent; ////import jsjavax.swing.JInternalFrame; //import jsjavax.swing.JTextField; //import jsjavax.swing.LookAndFeel; //import jsjavax.swing.MenuElement; //import jsjavax.swing.MenuSelectionManager; //import jsjavax.swing.SwingUtilities; import jsjavax.swing.LookAndFeel; import jsjavax.swing.UIDefaults; //import jsjavax.swing.UIManager; //import jsjavax.swing.border.BevelBorder; //import jsjavax.swing.plaf.ActionMapUIResource; //import jsjavax.swing.plaf.BorderUIResource; import jsjavax.swing.plaf.ColorUIResource; import jsjavax.swing.plaf.FontUIResource; //import jsjavax.swing.plaf.ComponentUI; import jsjavax.swing.plaf.DimensionUIResource; //import jsjavax.swing.plaf.DimensionUIResource; //import jsjavax.swing.plaf.InsetsUIResource; ////import jsjavax.swing.plaf.basic.popupMenuUI; ////import jsjavax.swing.plaf.basic.BasicSplitPaneDivider; //import jsjavax.swing.text.DefaultEditorKit; // //import jssun.awt.AppContext; //import jssun.swing.SwingUtilities2; ////import jssun.swing.SwingLazyValue; // import jsjavax.swing.plaf.InsetsUIResource; import jssun.swing.SwingLazyValue; /** * A base class to use in creating a look and feel for Swing. *
* Each of the {@code ComponentUI}s provided by {@code BasicLookAndFeel} derives * its behavior from the defaults table. Unless otherwise noted each of the * {@code ComponentUI} implementations in this package document the set of * defaults they use. Unless otherwise noted the defaults are installed at the * time {@code installUI} is invoked, and follow the recommendations outlined in * {@code LookAndFeel} for installing defaults. *
* Warning: Serialized objects of this class will not be
* compatible with future Swing releases. The current serialization support is
* appropriate for short term storage or RMI between applications running the
* same version of Swing. As of 1.4, support for long term storage of all
* JavaBeansTM has been added to the
* java.beans
package. Please see {@link java.beans.XMLEncoder}.
*
* @author unattributed
*/
public class HTML5LookAndFeel extends LookAndFeel {
// /**
// * Whether or not the developer has created a JPopupMenu.
// */
// static boolean needsEventHelper;
//
// /**
// * Lock used when manipulating clipPlaying.
// */
// private transient Object audioLock = new Object();
// /**
// * The Clip that is currently playing (set in AudioAction).
// */
// private Clip clipPlaying;
//
// AWTEventHelper invocator = null;
//
// /*
// * Listen for our AppContext being disposed
// */
// private PropertyChangeListener disposer = null;
//
/**
* Returns the look and feel defaults. The returned {@code UIDefaults} is
* populated by invoking, in order, {@code initClassDefaults},
* {@code initSystemColorDefaults} and {@code initComponentDefaults}.
*
* While this method is public, it should only be invoked by the * {@code UIManager} when the look and feel is set as the current look and * feel and after {@code initialize} has been invoked. * * @return the look and feel defaults * * @see #initClassDefaults * @see #initSystemColorDefaults * @see #initComponentDefaults */ public UIDefaults getDefaults() { UIDefaults table = new UIDefaults(610, 0.75f); initClassDefaults(table); initSystemColorDefaults(table); initComponentDefaults(table); return table; } /** * {@inheritDoc} */ public void initialize() { // if (needsEventHelper) { // installAWTEventListener(); // } } void installAWTEventListener() { // if (invocator == null) { // invocator = new AWTEventHelper(); // needsEventHelper = true; // // // Add a PropertyChangeListener to our AppContext so we're alerted // // when the AppContext is disposed(), at which time this laf should // // be uninitialize()d. // disposer = new PropertyChangeListener() { // public void propertyChange(PropertyChangeEvent prpChg) { // uninitialize(); // } // }; // AppContext.getAppContext().addPropertyChangeListener( // AppContext.GUI_DISPOSED, // disposer); // } } /** * {@inheritDoc} */ public void uninitialize() { // AppContext context = AppContext.getAppContext(); // synchronized (popupMenuUI.MOUSE_GRABBER_KEY) { // Object grabber = context.get(popupMenuUI.MOUSE_GRABBER_KEY); // if (grabber != null) { // ((popupMenuUI.MouseGrabber)grabber).uninstall(); // } // } // synchronized (popupMenuUI.MENU_KEYBOARD_HELPER_KEY) { // Object helper = // context.get(popupMenuUI.MENU_KEYBOARD_HELPER_KEY); // if (helper != null) { // ((popupMenuUI.MenuKeyboardHelper)helper).uninstall(); // } // } // // if(invocator != null) { // AccessController.doPrivileged(invocator); // invocator = null; // } // // if (disposer != null) { // // Note that we're likely calling removePropertyChangeListener() // // during the course of AppContext.firePropertyChange(). // // However, EventListenerAggreggate has code to safely modify // // the list under such circumstances. // context.removePropertyChangeListener(AppContext.GUI_DISPOSED, // disposer); // disposer = null; // } } /** * Populates {@code table} with mappings from {@code uiClassID} to the fully * qualified name of the ui class. The value for a particular * {@code uiClassID} is {@code "jsjavax.swing.plaf.basic.Basic + uiClassID"}. * For example, the value for the {@code uiClassID} {@code TreeUI} is * {@code "jsjavax.swing.plaf.basic.BasicTreeUI"}. * * @param table * the {@code UIDefaults} instance the entries are added to * @throws NullPointerException * if {@code table} is {@code null} * * @see jsjavax.swing.LookAndFeel * @see #getDefaults */ protected void initClassDefaults(UIDefaults table) { final String packageName = "swingjs.plaf."; Object[] uiDefaults = { /**/ "ButtonUI", packageName + "JSButtonUI", /**/ "CheckBoxUI", packageName + "JSCheckBoxUI", "ColorChooserUI", packageName + "JSColorChooserUI", /**/ "FormattedTextFieldUI", packageName + "JSFormattedTextFieldUI", /**/ "MenuBarUI", packageName + "JSMenuBarUI", /**/ "MenuUI", packageName + "JSMenuUI", /**/ "MenuItemUI", packageName + "JSMenuItemUI", /**/ "CheckBoxMenuItemUI", packageName + "JSCheckBoxMenuItemUI", /**/ "RadioButtonMenuItemUI", packageName + "JSRadioButtonMenuItemUI", /**/ "RadioButtonUI", packageName + "JSRadioButtonUI", /**/ "ToggleButtonUI", packageName + "JSToggleButtonUI", /**/ "PopupMenuUI", packageName + "JSPopupMenuUI", "ProgressBarUI", packageName + "JSProgressBarUI", /**/ "ScrollBarUI", packageName + "JSScrollBarUI", /**/ "ScrollPaneUI", packageName + "JSScrollPaneUI", "SplitPaneUI", packageName + "JSSplitPaneUI", /**/ "SliderUI", packageName + "JSSliderUI", /**/ "SeparatorUI", packageName + "JSSeparatorUI", "SpinnerUI", packageName + "JSSpinnerUI", /**/ "ToolBarSeparatorUI", packageName + "JSToolBarSeparatorUI", /**/ "PopupMenuSeparatorUI", packageName + "JSPopupMenuSeparatorUI", "TabbedPaneUI", packageName + "JSTabbedPaneUI", /**/ "TextAreaUI", packageName + "JSTextAreaUI", /**/ "TextFieldUI", packageName + "JSTextFieldUI", /**/ "PasswordFieldUI", packageName + "JSPasswordFieldUI", "TextPaneUI", packageName + "JSTextPaneUI", "EditorPaneUI", packageName + "JSEditorPaneUI", "TreeUI", packageName + "JSTreeUI", /**/ "LabelUI", packageName + "JSLabelUI", "ListUI", packageName + "JSListUI", "ToolBarUI", packageName + "JSToolBarUI", "ToolTipUI", packageName + "JSToolTipUI", /**/ "ComboBoxUI", packageName + "JSComboBoxUI", "TableUI", packageName + "JSTableUI", "TableHeaderUI", packageName + "JSTableHeaderUI", "InternalFrameUI", packageName + "JSInternalFrameUI", "DesktopPaneUI", packageName + "JSDesktopPaneUI", "DesktopIconUI", packageName + "JSDesktopIconUI", "OptionPaneUI", packageName + "JSOptionPaneUI", /**/ "PanelUI", packageName + "JSPanelUI", /**/ "ViewportUI", packageName + "JSViewportUI", /**/ "RootPaneUI", packageName + "JSRootPaneUI" }; table.putDefaults(uiDefaults); } /** * Populates {@code table} with system colors. This creates an array of * {@code name-color} pairs and invokes {@code loadSystemColors}. *
* The name is a {@code String} that corresponds to the name of one of the * static {@code SystemColor} fields in the {@code SystemColor} class. A * name-color pair is created for every such {@code SystemColor} field. *
* The {@code color} corresponds to a hex {@code String} as understood by * {@code Color.decode}. For example, one of the {@code name-color} pairs is * {@code "desktop"-"#005C5C"}. This corresponds to the {@code SystemColor} * field {@code desktop}, with a color value of {@code new Color(0x005C5C)}. *
* The following shows two of the {@code name-color} pairs: * *
* String[] nameColorPairs = new String[] { "desktop", "#005C5C", "activeCaption", * "#000080" }; * loadSystemColors(table, nameColorPairs, isNativeLookAndFeel()); ** * As previously stated, this invokes {@code loadSystemColors} with the * supplied {@code table} and {@code name-color} pair array. The last argument * to {@code loadSystemColors} indicates whether the value of the field in * {@code SystemColor} should be used. This method passes the value of * {@code isNativeLookAndFeel()} as the last argument to * {@code loadSystemColors}. * * @param table * the {@code UIDefaults} object the values are added to * @throws NullPointerException * if {@code table} is {@code null} * * @see jsjava.awt.SystemColor * @see #getDefaults * @see #loadSystemColors */ protected void initSystemColorDefaults(UIDefaults table) { String[] defaultSystemColors = { // "desktop", "#005C5C", /* // * Color of the // * desktop // * background // */ // "activeCaption", "#000080", /* // * Color for captions (title bars) when they are // * active. // */ // "activeCaptionText", "#FFFFFF", /* // * Text color for text in captions (title // * bars). // */ // "activeCaptionBorder", "#C0C0C0", /* // * Border color for caption (title bar) // * window borders. // */ // "inactiveCaption", "#808080", /* // * Color for captions (title bars) when not // * active. // */ // "inactiveCaptionText", "#C0C0C0", /* // * Text color for text in inactive // * captions (title bars). // */ // "inactiveCaptionBorder", "#C0C0C0", /* // * Border color for inactive caption // * (title bar) window borders. // */ // plaf.metal.OceanTheme "window", "#FFFFFF", /* Default color for the interior of windows */ // "windowBorder", "#000000", /* ??? */ "windowText", "#333333", /* ??? */ "menu", "#C0C0C0", /* Background color for menus */ "menuText", "#333333", /* Text color for menus */ "text", "#C0C0C0", /* Text background color */ "textText", "#333333", /* Text foreground color */ // "textHighlight", "#000080", /* Text background color when selected */ // "textHighlightText", "#FFFFFF", /* Text color when selected */ // "textInactiveText", "#808080", /* Text color when disabled */ "control", "#EEEEEE", // SECONDARY3 Default color for controls (buttons, sliders, etc) "controlText", "#333333", // Default color for text in controls // "controlHighlight", "#C0C0C0", /* // * Specular highlight (opposite of the // * shadow) // */ // "controlLtHighlight", "#FFFFFF", /* Highlight color for controls */ // "controlShadow", "#808080", /* Shadow color for controls */ // "controlDkShadow", "#000000", /* Dark shadow color for controls */ "scrollbar", "#E0E0E0", /* Scrollbar background (usually the "track") */ "info", "#FFFFE1", /* ??? */ "infoText", "#000000" /* ??? */ }; loadSystemColors(table, defaultSystemColors, isNativeLookAndFeel()); } /** * Populates {@code table} with the {@code name-color} pairs in * {@code systemColors}. Refer to {@link #initSystemColorDefaults(UIDefaults)} * for details on the format of {@code systemColors}. *
* An entry is added to {@code table} for each of the {@code name-color} pairs * in {@code systemColors}. The entry key is the {@code name} of the * {@code name-color} pair. *
* The value of the entry corresponds to the {@code color} of the * {@code name-color} pair. The value of the entry is calculated in one of two * ways. With either approach the value is always a {@code ColorUIResource}. *
* If {@code useNative} is {@code false}, the {@code color} is created by * using {@code Color.decode} to convert the {@code String} into a * {@code Color}. If {@code decode} can not convert the {@code String} into a * {@code Color} ({@code NumberFormatException} is thrown) then a * {@code ColorUIResource} of black is used. *
* If {@code useNative} is {@code true}, the {@code color} is the value of the
* field in {@code SystemColor} with the same name as the {@code name} of the
* {@code name-color} pair. If the field is not valid, a
* {@code ColorUIResource} of black is used.
*
* @param table
* the {@code UIDefaults} object the values are added to
* @param systemColors
* array of {@code name-color} pairs as described in
* {@link #initSystemColorDefaults(UIDefaults)}
* @param useNative
* whether the color is obtained from {@code SystemColor} or
* {@code Color.decode}
* @throws NullPointerException
* if {@code systemColors} is {@code null}; or {@code systemColors}
* is not empty, and {@code table} is {@code null}; or one of the
* names of the {@code name-color} pairs is {@code null}; or
* {@code useNative} is {@code false} and one of the {@code colors}
* of the {@code name-color} pairs is {@code null}
* @throws ArrayIndexOutOfBoundsException
* if {@code useNative} is {@code false} and
* {@code systemColors.length} is odd
*
* @see #initSystemColorDefaults(jsjavax.swing.UIDefaults)
* @see jsjava.awt.SystemColor
* @see jsjava.awt.Color#decode(String)
*/
protected void loadSystemColors(UIDefaults table, String[] systemColors,
boolean useNative) {
/*
* PENDING(hmuller) We don't load the system colors below because they're
* not reliable. Hopefully we'll be able to do better in a future version of
* AWT.
*/
// if (useNative) {
// for (int i = 0; i < systemColors.length; i += 2) {
// Color color = Color.black;
// // try {
// // String name = systemColors[i];
// // color = (Color)(SystemColor.class.getField(name).get(null));
// // } catch (Exception e) {
// // }
// table.put(systemColors[i], new ColorUIResource(color));
// }
// } else {
for (int i = 0; i < systemColors.length; i += 2) {
Color color = Color.black;
try {
color = Color.decode(systemColors[i + 1]);
} catch (NumberFormatException e) {
e.printStackTrace();
}
table.put(systemColors[i], new ColorUIResource(color));
}
// }
}
/**
* Initialize the defaults table with the name of the ResourceBundle used for
* getting localized defaults. Also initialize the default locale used when no
* locale is passed into UIDefaults.get(). The default locale should generally
* not be relied upon. It is here for compatability with releases prior to
* 1.4.
*/
private void initResourceBundle(UIDefaults table) {
// table.setDefaultLocale( Locale.getDefault() );
// table.addResourceBundle(
// "com.sun.swing.internal.plaf.basic.resources.basic" );
}
/**
* Populates {@code table} with the defaults for the basic look and feel.
*
* @param table
* the {@code UIDefaults} to add the values to
* @throws NullPointerException
* if {@code table} is {@code null}
*/
protected void initComponentDefaults(UIDefaults table) {
initResourceBundle(table);
// // *** Shared Integers
// Integer fiveHundred = new Integer(500);
// *** Shared Longs
Long oneThousand = new Long(1000);
// *** Shared Fonts
Integer twelve = new Integer(12);
Integer fontPlain = new Integer(Font.PLAIN);
// Integer fontBold = new Integer(Font.BOLD);
// Object dialogPlain12 = new SwingLazyValue(
// "jsjavax.swing.plaf.FontUIResource",
// null,
// new Object[] {Font.DIALOG, fontPlain, twelve});
Object serifPlain12 = new FontUIResource(Font.SERIF, Font.PLAIN, 12);
Object sansSerifPlain12 = new FontUIResource(Font.SANS_SERIF, Font.PLAIN,
12);
Object dialogPlain12 = new FontUIResource(Font.DIALOG, Font.PLAIN, 12);
Object monospacedPlain12 = new FontUIResource(Font.MONOSPACED, Font.PLAIN, 12);
// Object dialogBold12 = new SwingLazyValue(
// "jsjavax.swing.plaf.FontUIResource",
// null,
// new Object[] {Font.DIALOG, fontBold, twelve});
//
// *** Shared Colors
// ColorUIResource red = new ColorUIResource(Color.red);
ColorUIResource black = new ColorUIResource(Color.black);
ColorUIResource white = new ColorUIResource(Color.white);
// ColorUIResource yellow = new ColorUIResource(Color.yellow);
ColorUIResource gray = new ColorUIResource(Color.gray);
// ColorUIResource lightGray = new ColorUIResource(Color.lightGray);
ColorUIResource darkGray = new ColorUIResource(Color.darkGray);
// ColorUIResource scrollBarTrack = new ColorUIResource(224, 224, 224);
Color control = table.getColor("control");
// Color controlDkShadow = table.getColor("controlDkShadow");
// Color controlHighlight = table.getColor("controlHighlight");
// Color controlLtHighlight = table.getColor("controlLtHighlight");
// Color controlShadow = table.getColor("controlShadow");
Color controlText = table.getColor("controlText");
Color menu = table.getColor("menu");
Color menuText = table.getColor("menuText");
// Color textHighlight = table.getColor("textHighlight");
// Color textHighlightText = table.getColor("textHighlightText");
// Color textInactiveText = table.getColor("textInactiveText");
Color textText = table.getColor("textText");
Color window = table.getColor("window");
// *** Shared Insets
InsetsUIResource zeroInsets = new InsetsUIResource(0, 0, 0, 0);
InsetsUIResource twoInsets = new InsetsUIResource(2, 2, 2, 2);
InsetsUIResource threeInsets = new InsetsUIResource(3, 3, 3, 3);
// // *** Shared Borders
// Object marginBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders$MarginBorder");
// Object etchedBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.BorderUIResource",
// "getEtchedBorderUIResource");
// Object loweredBevelBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.BorderUIResource",
// "getLoweredBevelBorderUIResource");
//
// Object popupMenuBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getInternalFrameBorder");
//
// Object blackLineBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.BorderUIResource",
// "getBlackLineBorderUIResource");
// Object focusCellHighlightBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.BorderUIResource$LineBorderUIResource",
// null,
// new Object[] {yellow});
//
// Object noFocusBorder = new
// BorderUIResource.EmptyBorderUIResource(1,1,1,1);
//
// Object tableHeaderBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.BorderUIResource$BevelBorderUIResource",
// null,
// new Object[] { new Integer(BevelBorder.RAISED),
// controlLtHighlight,
// control,
// controlDkShadow,
// controlShadow });
//
//
// // *** Button value objects
//
// Object buttonBorder =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getButtonBorder");
//
// Object buttonToggleBorder =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getToggleButtonBorder");
//
// Object radioButtonBorder =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getRadioButtonBorder");
//
// // *** FileChooser / FileView value objects
//
// Object newFolderIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/NewFolder.gif");
// Object upFolderIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/UpFolder.gif");
// Object homeFolderIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/HomeFolder.gif");
// Object detailsViewIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/DetailsView.gif");
// Object listViewIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/ListView.gif");
// Object directoryIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/Directory.gif");
// Object fileIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/File.gif");
// Object computerIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/Computer.gif");
// Object hardDriveIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/HardDrive.gif");
// Object floppyDriveIcon = SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/FloppyDrive.gif");
//
//
// // *** InternalFrame value objects
//
// Object internalFrameBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getInternalFrameBorder");
//
// // *** List value objects
//
Object listCellRendererActiveValue = new UIDefaults.ActiveValue() {
public Object createValue(UIDefaults table) {
return new DefaultListCellRenderer.UIResource();
}
};
//
// // *** Menus value objects
//
// Object menuBarBorder =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getMenuBarBorder");
//
// Object menuItemCheckIcon =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "getMenuItemCheckIcon");
//
// Object menuItemArrowIcon =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "getMenuItemArrowIcon");
//
//
// Object menuArrowIcon =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "getMenuArrowIcon");
//
// Object checkBoxIcon =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "getCheckBoxIcon");
//
// Object radioButtonIcon =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "getRadioButtonIcon");
//
// Object checkBoxMenuItemIcon =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "getCheckBoxMenuItemIcon");
//
// Object radioButtonMenuItemIcon =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "getRadioButtonMenuItemIcon");
//
// Object menuItemAcceleratorDelimiter = new String("+");
//
// // *** OptionPane value objects
//
// Object optionPaneMinimumSize = new DimensionUIResource(262, 90);
//
Integer zero = new Integer(0);
// Object zeroBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.BorderUIResource$EmptyBorderUIResource",
// new Object[] {zero, zero, zero, zero});
//
// Integer ten = new Integer(10);
// Object optionPaneBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.BorderUIResource$EmptyBorderUIResource",
// new Object[] {ten, ten, twelve, ten});
//
// Object optionPaneButtonAreaBorder = new SwingLazyValue(
// "jsjavax.swing.plaf.BorderUIResource$EmptyBorderUIResource",
// new Object[] {new Integer(6), zero, zero, zero});
//
//
// // *** ProgessBar value objects
//
// Object progressBarBorder =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getProgressBarBorder");
//
// // ** ScrollBar value objects
//
// Object minimumThumbSize = new DimensionUIResource(8,8);
// Object maximumThumbSize = new DimensionUIResource(4096,4096);
//
// // ** Slider value objects
//
// Object sliderFocusInsets = twoInsets;
//
// Object toolBarSeparatorSize = new DimensionUIResource( 10, 10 );
//
//
// // *** SplitPane value objects
//
// Object splitPaneBorder =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getSplitPaneBorder");
// Object splitPaneDividerBorder =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getSplitPaneDividerBorder");
//
// ** TabbedBane value objects
Object tabbedPaneTabInsets = new InsetsUIResource(0, 4, 1, 4);
Object tabbedPaneTabPadInsets = new InsetsUIResource(2, 2, 2, 1);
Object tabbedPaneTabAreaInsets = new InsetsUIResource(3, 2, 0, 2);
Object tabbedPaneContentBorderInsets = new InsetsUIResource(2, 2, 3, 3);
// *** Text value objects
// Object textFieldBorder =
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicBorders",
// "getTextFieldBorder");
//
Object editorMargin = threeInsets;
// Object caretBlinkRate = fiveHundred;
Integer four = new Integer(4);
//
// Object[] allAuditoryCues = new Object[] {
// "CheckBoxMenuItem.commandSound",
// "InternalFrame.closeSound",
// "InternalFrame.maximizeSound",
// "InternalFrame.minimizeSound",
// "InternalFrame.restoreDownSound",
// "InternalFrame.restoreUpSound",
// "MenuItem.commandSound",
// "OptionPane.errorSound",
// "OptionPane.informationSound",
// "OptionPane.questionSound",
// "OptionPane.warningSound",
// "PopupMenu.popupSound",
// "RadioButtonMenuItem.commandSound"};
//
// Object[] noAuditoryCues = new Object[] {"mute"};
//
// // *** Component Defaults
//
Object[] defaults = {
"*.font",
dialogPlain12,
"*.background",
control,
"*.foreground",
controlText,
// *** Auditory Feedback
// "AuditoryCues.cueList", allAuditoryCues,
// "AuditoryCues.allAuditoryCues", allAuditoryCues,
// "AuditoryCues.noAuditoryCues", noAuditoryCues,
// // this key defines which of the various cues to render.
// // L&Fs that want auditory feedback NEED to override playList.
// "AuditoryCues.playList", null,
// *** Buttons
// "Button.defaultButtonFollowsFocus", Boolean.TRUE,
// "Button.font", dialogPlain12,
// "Button.background", control,
// "Button.foreground", controlText,
// "Button.shadow", controlShadow,
// "Button.darkShadow", controlDkShadow,
// "Button.light", controlHighlight,
// "Button.highlight", controlLtHighlight,
// "Button.border", buttonBorder,
"Button.margin",
new InsetsUIResource(2, 14, 2, 14),
// "Button.textIconGap", four,
// "Button.textShiftOffset", zero,
// "Button.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
// "SPACE", "pressed",
// "released SPACE", "released",
// "ENTER", "pressed",
// "released ENTER", "released"
// }),
//
// "ToggleButton.font", dialogPlain12,
// "ToggleButton.background", control,
// "ToggleButton.foreground", controlText,
// "ToggleButton.shadow", controlShadow,
// "ToggleButton.darkShadow", controlDkShadow,
// "ToggleButton.light", controlHighlight,
// "ToggleButton.highlight", controlLtHighlight,
// "ToggleButton.border", buttonToggleBorder,
"ToggleButton.margin",
new InsetsUIResource(2, 14, 2, 14),
"ToggleButton.textIconGap",
four,
"ToggleButton.textShiftOffset",
zero,
// "ToggleButton.focusInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "SPACE", "pressed",
// "released SPACE", "released"
// }),
//
// "RadioButton.font", dialogPlain12,
// "RadioButton.background", control,
// "RadioButton.foreground", controlText,
// "RadioButton.shadow", controlShadow,
// "RadioButton.darkShadow", controlDkShadow,
// "RadioButton.light", controlHighlight,
// "RadioButton.highlight", controlLtHighlight,
// "RadioButton.border", radioButtonBorder,
"RadioButton.margin",
twoInsets,
"RadioButton.textIconGap",
four,
"RadioButton.textShiftOffset",
zero,
// "RadioButton.icon", radioButtonIcon,
// "RadioButton.focusInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "SPACE", "pressed",
// "released SPACE", "released",
// "RETURN", "pressed"
// }),
//
// "CheckBox.font", dialogPlain12,
// "CheckBox.background", control,
// "CheckBox.foreground", controlText,
// "CheckBox.border", radioButtonBorder,
"CheckBox.margin",
twoInsets,
"CheckBox.textIconGap",
four,
"CheckBox.textShiftOffset",
zero,
// "CheckBox.icon", checkBoxIcon,
// "CheckBox.focusInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "SPACE", "pressed",
// "released SPACE", "released"
// }),
// "FileChooser.useSystemExtensionHiding", Boolean.FALSE,
// *** ColorChooser
// "ColorChooser.font", dialogPlain12,
// "ColorChooser.background", control,
// "ColorChooser.foreground", controlText,
//
"ColorChooser.swatchesSwatchSize",
new Dimension(10, 10),
"ColorChooser.swatchesRecentSwatchSize",
new Dimension(10, 10),
"ColorChooser.swatchesDefaultRecentColor",
control,
// *** ComboBox
"ComboBox.font",
sansSerifPlain12,
"ComboBox.background",
window,
"ComboBox.foreground",
textText,
// "ComboBox.buttonBackground", control,
// "ComboBox.buttonShadow", controlShadow,
// "ComboBox.buttonDarkShadow", controlDkShadow,
// "ComboBox.buttonHighlight", controlLtHighlight,
// "ComboBox.selectionBackground", textHighlight,
// "ComboBox.selectionForeground", textHighlightText,
// "ComboBox.disabledBackground", control,
// "ComboBox.disabledForeground", textInactiveText,
"ComboBox.timeFactor",
oneThousand,
"ComboBox.isEnterSelectablePopup",
Boolean.FALSE,
// "ComboBox.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "ESCAPE", "hidePopup",
// "PAGE_UP", "pageUpPassThrough",
// "PAGE_DOWN", "pageDownPassThrough",
// "HOME", "homePassThrough",
// "END", "endPassThrough",
// "ENTER", "enterPressed"
// }),
//
// *** FileChooser
// "FileChooser.newFolderIcon", newFolderIcon,
// "FileChooser.upFolderIcon", upFolderIcon,
// "FileChooser.homeFolderIcon", homeFolderIcon,
// "FileChooser.detailsViewIcon", detailsViewIcon,
// "FileChooser.listViewIcon", listViewIcon,
"FileChooser.readOnly",
Boolean.FALSE,
// "FileChooser.usesSingleFilePane", Boolean.FALSE,
// "FileChooser.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "ESCAPE", "cancelSelection",
// "F5", "refresh",
// }),
//
// "FileView.directoryIcon", directoryIcon,
// "FileView.fileIcon", fileIcon,
// "FileView.computerIcon", computerIcon,
// "FileView.hardDriveIcon", hardDriveIcon,
// "FileView.floppyDriveIcon", floppyDriveIcon,
// *** InternalFrame
// "InternalFrame.titleFont", dialogBold12,
// "InternalFrame.borderColor", control,
// "InternalFrame.borderShadow", controlShadow,
// "InternalFrame.borderDarkShadow", controlDkShadow,
// "InternalFrame.borderHighlight", controlLtHighlight,
// "InternalFrame.borderLight", controlHighlight,
// "InternalFrame.border", internalFrameBorder,
// "InternalFrame.icon", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/JavaCup16.png"),
//
// /* Default frame icons are undefined for Basic. */
// "InternalFrame.maximizeIcon",
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "createEmptyFrameIcon"),
// "InternalFrame.minimizeIcon",
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "createEmptyFrameIcon"),
// "InternalFrame.iconifyIcon",
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "createEmptyFrameIcon"),
// "InternalFrame.closeIcon",
// new SwingLazyValue(
// "jsjavax.swing.plaf.basic.BasicIconFactory",
// "createEmptyFrameIcon"),
// // InternalFrame Auditory Cue Mappings
// "InternalFrame.closeSound", null,
// "InternalFrame.maximizeSound", null,
// "InternalFrame.minimizeSound", null,
// "InternalFrame.restoreDownSound", null,
// "InternalFrame.restoreUpSound", null,
//
// "InternalFrame.activeTitleBackground", table.get("activeCaption"),
// "InternalFrame.activeTitleForeground",
// table.get("activeCaptionText"),
// "InternalFrame.inactiveTitleBackground",
// table.get("inactiveCaption"),
// "InternalFrame.inactiveTitleForeground",
// table.get("inactiveCaptionText"),
// "InternalFrame.windowBindings", new Object[] {
// "shift ESCAPE", "showSystemMenu",
// "ctrl SPACE", "showSystemMenu",
// "ESCAPE", "hideSystemMenu"},
//
// "InternalFrameTitlePane.iconifyButtonOpacity", Boolean.TRUE,
// "InternalFrameTitlePane.maximizeButtonOpacity", Boolean.TRUE,
// "InternalFrameTitlePane.closeButtonOpacity", Boolean.TRUE,
// "DesktopIcon.border", internalFrameBorder,
//
// "Desktop.minOnScreenInsets", threeInsets,
// "Desktop.background", table.get("desktop"),
// "Desktop.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "ctrl F5", "restore",
// "ctrl F4", "close",
// "ctrl F7", "move",
// "ctrl F8", "resize",
// "RIGHT", "right",
// "KP_RIGHT", "right",
// "shift RIGHT", "shrinkRight",
// "shift KP_RIGHT", "shrinkRight",
// "LEFT", "left",
// "KP_LEFT", "left",
// "shift LEFT", "shrinkLeft",
// "shift KP_LEFT", "shrinkLeft",
// "UP", "up",
// "KP_UP", "up",
// "shift UP", "shrinkUp",
// "shift KP_UP", "shrinkUp",
// "DOWN", "down",
// "KP_DOWN", "down",
// "shift DOWN", "shrinkDown",
// "shift KP_DOWN", "shrinkDown",
// "ESCAPE", "escape",
// "ctrl F9", "minimize",
// "ctrl F10", "maximize",
// "ctrl F6", "selectNextFrame",
// "ctrl TAB", "selectNextFrame",
// "ctrl alt F6", "selectNextFrame",
// "shift ctrl alt F6", "selectPreviousFrame",
// "ctrl F12", "navigateNext",
// "shift ctrl F12", "navigatePrevious"
// }),
// *** Label
// "Label.font", dialogPlain12,
// "Label.background", control,
// "Label.foreground", controlText,
// "Label.disabledForeground", white,
// "Label.disabledShadow", controlShadow,
"Label.border",
null,
// *** List
// "List.font", dialogPlain12,
"List.background",
window,
"List.foreground",
textText,
// "List.selectionBackground", textHighlight,
// "List.selectionForeground", textHighlightText,
// "List.noFocusBorder", noFocusBorder,
// "List.focusCellHighlightBorder", focusCellHighlightBorder,
// "List.dropLineColor", controlShadow,
// "List.border", null,
"List.cellRenderer",
listCellRendererActiveValue,
"List.timeFactor",
oneThousand,
// "List.focusInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "ctrl C", "copy",
// "ctrl V", "paste",
// "ctrl X", "cut",
// "COPY", "copy",
// "PASTE", "paste",
// "CUT", "cut",
// "control INSERT", "copy",
// "shift INSERT", "paste",
// "shift DELETE", "cut",
// "UP", "selectPreviousRow",
// "KP_UP", "selectPreviousRow",
// "shift UP", "selectPreviousRowExtendSelection",
// "shift KP_UP", "selectPreviousRowExtendSelection",
// "ctrl shift UP", "selectPreviousRowExtendSelection",
// "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
// "ctrl UP", "selectPreviousRowChangeLead",
// "ctrl KP_UP", "selectPreviousRowChangeLead",
// "DOWN", "selectNextRow",
// "KP_DOWN", "selectNextRow",
// "shift DOWN", "selectNextRowExtendSelection",
// "shift KP_DOWN", "selectNextRowExtendSelection",
// "ctrl shift DOWN", "selectNextRowExtendSelection",
// "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
// "ctrl DOWN", "selectNextRowChangeLead",
// "ctrl KP_DOWN", "selectNextRowChangeLead",
// "LEFT", "selectPreviousColumn",
// "KP_LEFT", "selectPreviousColumn",
// "shift LEFT", "selectPreviousColumnExtendSelection",
// "shift KP_LEFT", "selectPreviousColumnExtendSelection",
// "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
// "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
// "ctrl LEFT", "selectPreviousColumnChangeLead",
// "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
// "RIGHT", "selectNextColumn",
// "KP_RIGHT", "selectNextColumn",
// "shift RIGHT", "selectNextColumnExtendSelection",
// "shift KP_RIGHT", "selectNextColumnExtendSelection",
// "ctrl shift RIGHT", "selectNextColumnExtendSelection",
// "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
// "ctrl RIGHT", "selectNextColumnChangeLead",
// "ctrl KP_RIGHT", "selectNextColumnChangeLead",
// "HOME", "selectFirstRow",
// "shift HOME", "selectFirstRowExtendSelection",
// "ctrl shift HOME", "selectFirstRowExtendSelection",
// "ctrl HOME", "selectFirstRowChangeLead",
// "END", "selectLastRow",
// "shift END", "selectLastRowExtendSelection",
// "ctrl shift END", "selectLastRowExtendSelection",
// "ctrl END", "selectLastRowChangeLead",
// "PAGE_UP", "scrollUp",
// "shift PAGE_UP", "scrollUpExtendSelection",
// "ctrl shift PAGE_UP", "scrollUpExtendSelection",
// "ctrl PAGE_UP", "scrollUpChangeLead",
// "PAGE_DOWN", "scrollDown",
// "shift PAGE_DOWN", "scrollDownExtendSelection",
// "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
// "ctrl PAGE_DOWN", "scrollDownChangeLead",
// "ctrl A", "selectAll",
// "ctrl SLASH", "selectAll",
// "ctrl BACK_SLASH", "clearSelection",
// "SPACE", "addToSelection",
// "ctrl SPACE", "toggleAndAnchor",
// "shift SPACE", "extendTo",
// "ctrl shift SPACE", "moveSelectionTo"
// }),
// "List.focusInputMap.RightToLeft",
// new UIDefaults.LazyInputMap(new Object[] {
// "LEFT", "selectNextColumn",
// "KP_LEFT", "selectNextColumn",
// "shift LEFT", "selectNextColumnExtendSelection",
// "shift KP_LEFT", "selectNextColumnExtendSelection",
// "ctrl shift LEFT", "selectNextColumnExtendSelection",
// "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
// "ctrl LEFT", "selectNextColumnChangeLead",
// "ctrl KP_LEFT", "selectNextColumnChangeLead",
// "RIGHT", "selectPreviousColumn",
// "KP_RIGHT", "selectPreviousColumn",
// "shift RIGHT", "selectPreviousColumnExtendSelection",
// "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
// "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
// "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
// "ctrl RIGHT", "selectPreviousColumnChangeLead",
// "ctrl KP_RIGHT", "selectPreviousColumnChangeLead",
// }),
//
// *** Menus
"MenuBar.font",
dialogPlain12,
"MenuBar.background",
menu,
"MenuBar.foreground",
menuText,
// "MenuBar.shadow", controlShadow,
// "MenuBar.highlight", controlLtHighlight,
// "MenuBar.border", menuBarBorder,
// "MenuBar.windowBindings", new Object[] {
// "F10", "takeFocus" },
//
"MenuItem.font", dialogPlain12,
//"MenuItem.acceleratorFont", dialogPlain12,
"MenuItem.background",
menu,
"MenuItem.foreground",
menuText,
// "MenuItem.selectionForeground", textHighlightText,
// "MenuItem.selectionBackground", textHighlight,
// "MenuItem.disabledForeground", null,
// "MenuItem.acceleratorForeground", menuText,
// "MenuItem.acceleratorSelectionForeground", textHighlightText,
// "MenuItem.acceleratorDelimiter", menuItemAcceleratorDelimiter,
// "MenuItem.border", marginBorder,
// "MenuItem.borderPainted", Boolean.FALSE,
"MenuItem.margin",
twoInsets,
// "MenuItem.checkIcon", menuItemCheckIcon,
// "MenuItem.arrowIcon", menuItemArrowIcon,
// "MenuItem.commandSound", null,
//
"RadioButtonMenuItem.font", dialogPlain12,
// "RadioButtonMenuItem.acceleratorFont", dialogPlain12,
"RadioButtonMenuItem.background",
menu,
"RadioButtonMenuItem.foreground",
menuText,
// "RadioButtonMenuItem.selectionForeground", textHighlightText,
// "RadioButtonMenuItem.selectionBackground", textHighlight,
// "RadioButtonMenuItem.disabledForeground", null,
// "RadioButtonMenuItem.acceleratorForeground", menuText,
// "RadioButtonMenuItem.acceleratorSelectionForeground",
// textHighlightText,
// "RadioButtonMenuItem.border", marginBorder,
// "RadioButtonMenuItem.borderPainted", Boolean.FALSE,
"RadioButtonMenuItem.margin",
twoInsets,
// "RadioButtonMenuItem.checkIcon", radioButtonMenuItemIcon,
// "RadioButtonMenuItem.arrowIcon", menuItemArrowIcon,
// "RadioButtonMenuItem.commandSound", null,
"CheckBoxMenuItem.font", dialogPlain12,
// "CheckBoxMenuItem.acceleratorFont", dialogPlain12,
"CheckBoxMenuItem.background",
menu,
"CheckBoxMenuItem.foreground",
menuText,
// "CheckBoxMenuItem.selectionForeground", textHighlightText,
// "CheckBoxMenuItem.selectionBackground", textHighlight,
// "CheckBoxMenuItem.disabledForeground", null,
// "CheckBoxMenuItem.acceleratorForeground", menuText,
// "CheckBoxMenuItem.acceleratorSelectionForeground", textHighlightText,
// "CheckBoxMenuItem.border", marginBorder,
// "CheckBoxMenuItem.borderPainted", Boolean.FALSE,
"CheckBoxMenuItem.margin",
twoInsets,
// "CheckBoxMenuItem.checkIcon", checkBoxMenuItemIcon,
// "CheckBoxMenuItem.arrowIcon", menuItemArrowIcon,
// "CheckBoxMenuItem.commandSound", null,
// "Menu.font", dialogPlain12,
// "Menu.acceleratorFont", dialogPlain12,
"Menu.background",
menu,
"Menu.foreground",
menuText,
// "Menu.selectionForeground", textHighlightText,
// "Menu.selectionBackground", textHighlight,
// "Menu.disabledForeground", null,
// "Menu.acceleratorForeground", menuText,
// "Menu.acceleratorSelectionForeground", textHighlightText,
// "Menu.border", marginBorder,
// "Menu.borderPainted", Boolean.FALSE,
"Menu.margin",
twoInsets,
// "Menu.checkIcon", menuItemCheckIcon,
// "Menu.arrowIcon", menuArrowIcon,
// "Menu.menuPopupOffsetX", new Integer(0),
// "Menu.menuPopupOffsetY", new Integer(0),
// "Menu.submenuPopupOffsetX", new Integer(0),
// "Menu.submenuPopupOffsetY", new Integer(0),
// "Menu.shortcutKeys", new int[] {KeyEvent.ALT_MASK},
// "Menu.crossMenuMnemonic", Boolean.TRUE,
// Menu.cancelMode affects the cancel menu action behaviour;
// currently supports:
// "hideLastSubmenu" (default)
// hides the last open submenu,
// and move selection one step back
// "hideMenuTree"
// resets selection and
// hide the entire structure of open menu and its submenus
// "Menu.cancelMode", "hideLastSubmenu",
// Menu.preserveTopLevelSelection affects
// the cancel menu action behaviour
// if set to true then top level menu selection
// will be preserved when the last popup was cancelled;
// the menu itself will be unselect with the next cancel action
// "Menu.preserveTopLevelSelection", Boolean.FALSE,
// PopupMenu
// "PopupMenu.font", dialogPlain12,
"PopupMenu.background",
menu,
"PopupMenu.foreground",
menuText,
// "PopupMenu.border", popupMenuBorder,
// Internal Frame Auditory Cue Mappings
// "PopupMenu.popupSound", null,
// // These window InputMap bindings are used when the Menu is
// // selected.
// "PopupMenu.selectedWindowInputMapBindings", new Object[] {
// "ESCAPE", "cancel",
// "DOWN", "selectNext",
// "KP_DOWN", "selectNext",
// "UP", "selectPrevious",
// "KP_UP", "selectPrevious",
// "LEFT", "selectParent",
// "KP_LEFT", "selectParent",
// "RIGHT", "selectChild",
// "KP_RIGHT", "selectChild",
// "ENTER", "return",
// "ctrl ENTER", "return",
// "SPACE", "return"
// },
// "PopupMenu.selectedWindowInputMapBindings.RightToLeft", new Object[]
// {
// "LEFT", "selectChild",
// "KP_LEFT", "selectChild",
// "RIGHT", "selectParent",
// "KP_RIGHT", "selectParent",
// },
"PopupMenu.consumeEventOnClose",
Boolean.FALSE,
// *** OptionPane
// You can additionaly define OptionPane.messageFont which will
// dictate the fonts used for the message, and
// OptionPane.buttonFont, which defines the font for the buttons.
// "OptionPane.font", dialogPlain12,
// "OptionPane.background", control,
// "OptionPane.foreground", controlText,
"OptionPane.messageForeground",
controlText,
// "OptionPane.border", optionPaneBorder,
// "OptionPane.messageAreaBorder", zeroBorder,
// "OptionPane.buttonAreaBorder", optionPaneButtonAreaBorder,
// "OptionPane.minimumSize", optionPaneMinimumSize,
// "OptionPane.errorIcon", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/Error.gif"),
// "OptionPane.informationIcon", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/Inform.gif"),
// "OptionPane.warningIcon", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/Warn.gif"),
// "OptionPane.questionIcon", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/Question.gif"),
// "OptionPane.windowBindings", new Object[] {
// "ESCAPE", "close" },
// // OptionPane Auditory Cue Mappings
// "OptionPane.errorSound", null,
// "OptionPane.informationSound", null, // Info and Plain
// "OptionPane.questionSound", null,
// "OptionPane.warningSound", null,
// "OptionPane.buttonClickThreshhold", fiveHundred,
// *** Panel
"Panel.font",
dialogPlain12,
"Panel.background",
control,
"Panel.foreground",
textText,
// *** ProgressBar
// "ProgressBar.font", dialogPlain12,
// "ProgressBar.foreground", textHighlight,
// "ProgressBar.background", control,
// "ProgressBar.selectionForeground", control,
// "ProgressBar.selectionBackground", textHighlight,
// "ProgressBar.border", progressBarBorder,
"ProgressBar.cellLength",
new Integer(1),
"ProgressBar.cellSpacing",
zero,
"ProgressBar.repaintInterval",
new Integer(50),
"ProgressBar.cycleTime",
new Integer(3000),
"ProgressBar.horizontalSize",
new DimensionUIResource(146, 12),
"ProgressBar.verticalSize",
new DimensionUIResource(12, 146),
// *** Separator
// "Separator.shadow", controlShadow, // DEPRECATED - DO NOT USE!
// "Separator.highlight", controlLtHighlight, // DEPRECATED - DO NOT
// USE!
//
// "Separator.background", controlLtHighlight,
// "Separator.foreground", controlShadow,
// *** ScrollBar/ScrollPane/Viewport
// "ScrollBar.background", scrollBarTrack,
"ScrollBar.foreground",
control,
// "ScrollBar.track", table.get("scrollbar"),
// "ScrollBar.trackHighlight", controlDkShadow,
// "ScrollBar.thumb", control,
// "ScrollBar.thumbHighlight", controlLtHighlight,
// "ScrollBar.thumbDarkShadow", controlDkShadow,
// "ScrollBar.thumbShadow", controlShadow,
// "ScrollBar.border", null,
// "ScrollBar.minimumThumbSize", minimumThumbSize,
// "ScrollBar.maximumThumbSize", maximumThumbSize,
// "ScrollBar.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "RIGHT", "positiveUnitIncrement",
// "KP_RIGHT", "positiveUnitIncrement",
// "DOWN", "positiveUnitIncrement",
// "KP_DOWN", "positiveUnitIncrement",
// "PAGE_DOWN", "positiveBlockIncrement",
// "LEFT", "negativeUnitIncrement",
// "KP_LEFT", "negativeUnitIncrement",
// "UP", "negativeUnitIncrement",
// "KP_UP", "negativeUnitIncrement",
// "PAGE_UP", "negativeBlockIncrement",
// "HOME", "minScroll",
// "END", "maxScroll"
// }),
// "ScrollBar.ancestorInputMap.RightToLeft",
// new UIDefaults.LazyInputMap(new Object[] {
// "RIGHT", "negativeUnitIncrement",
// "KP_RIGHT", "negativeUnitIncrement",
// "LEFT", "positiveUnitIncrement",
// "KP_LEFT", "positiveUnitIncrement",
// }),
"ScrollBar.width",
new Integer(16),
// "ScrollPane.font", dialogPlain12,
// "ScrollPane.background", control,
// "ScrollPane.foreground", controlText,
// "ScrollPane.border", textFieldBorder,
// "ScrollPane.viewportBorder", null,
// "ScrollPane.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "RIGHT", "unitScrollRight",
// "KP_RIGHT", "unitScrollRight",
// "DOWN", "unitScrollDown",
// "KP_DOWN", "unitScrollDown",
// "LEFT", "unitScrollLeft",
// "KP_LEFT", "unitScrollLeft",
// "UP", "unitScrollUp",
// "KP_UP", "unitScrollUp",
// "PAGE_UP", "scrollUp",
// "PAGE_DOWN", "scrollDown",
// "ctrl PAGE_UP", "scrollLeft",
// "ctrl PAGE_DOWN", "scrollRight",
// "ctrl HOME", "scrollHome",
// "ctrl END", "scrollEnd"
// }),
// "ScrollPane.ancestorInputMap.RightToLeft",
// new UIDefaults.LazyInputMap(new Object[] {
// "ctrl PAGE_UP", "scrollRight",
// "ctrl PAGE_DOWN", "scrollLeft",
// }),
//
// "Viewport.font", dialogPlain12,
// "Viewport.background", control,
"Viewport.foreground",
textText,
// *** Slider
// "Slider.font", dialogPlain12,
// "Slider.foreground", control,
// "Slider.background", control,
// "Slider.highlight", controlLtHighlight,
// "Slider.tickColor", Color.black,
// "Slider.shadow", controlShadow,
// "Slider.focus", controlDkShadow,
// "Slider.border", null,
"Slider.horizontalSize",
new Dimension(200, 21),
"Slider.verticalSize",
new Dimension(21, 200),
"Slider.minimumHorizontalSize",
new Dimension(36, 21),
"Slider.minimumVerticalSize",
new Dimension(21, 36),
// "Slider.focusInsets", sliderFocusInsets,
// "Slider.focusInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "RIGHT", "positiveUnitIncrement",
// "KP_RIGHT", "positiveUnitIncrement",
// "DOWN", "negativeUnitIncrement",
// "KP_DOWN", "negativeUnitIncrement",
// "PAGE_DOWN", "negativeBlockIncrement",
// "LEFT", "negativeUnitIncrement",
// "KP_LEFT", "negativeUnitIncrement",
// "UP", "positiveUnitIncrement",
// "KP_UP", "positiveUnitIncrement",
// "PAGE_UP", "positiveBlockIncrement",
// "HOME", "minScroll",
// "END", "maxScroll"
// }),
// "Slider.focusInputMap.RightToLeft",
// new UIDefaults.LazyInputMap(new Object[] {
// "RIGHT", "negativeUnitIncrement",
// "KP_RIGHT", "negativeUnitIncrement",
// "LEFT", "positiveUnitIncrement",
// "KP_LEFT", "positiveUnitIncrement",
// }),
//
// *** Spinner
"Spinner.font",
monospacedPlain12,
// "Spinner.background", control,
// "Spinner.foreground", control,
// "Spinner.border", textFieldBorder,
// "Spinner.arrowButtonBorder", null,
// "Spinner.arrowButtonInsets", null,
"Spinner.arrowButtonSize",
new Dimension(16, 5),
// "Spinner.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "UP", "increment",
// "KP_UP", "increment",
// "DOWN", "decrement",
// "KP_DOWN", "decrement",
// }),
// "Spinner.editorBorderPainted", Boolean.FALSE,
"Spinner.editorAlignment",
JTextField.TRAILING,
// *** SplitPane
"SplitPane.background",
control,
// "SplitPane.highlight", controlLtHighlight,
// "SplitPane.shadow", controlShadow,
// "SplitPane.darkShadow", controlDkShadow,
// "SplitPane.border", splitPaneBorder,
"SplitPane.dividerSize",
new Integer(7),
// "SplitPaneDivider.border", splitPaneDividerBorder,
"SplitPaneDivider.draggingColor",
darkGray,
// "SplitPane.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "UP", "negativeIncrement",
// "DOWN", "positiveIncrement",
// "LEFT", "negativeIncrement",
// "RIGHT", "positiveIncrement",
// "KP_UP", "negativeIncrement",
// "KP_DOWN", "positiveIncrement",
// "KP_LEFT", "negativeIncrement",
// "KP_RIGHT", "positiveIncrement",
// "HOME", "selectMin",
// "END", "selectMax",
// "F8", "startResize",
// "F6", "toggleFocus",
// "ctrl TAB", "focusOutForward",
// "ctrl shift TAB", "focusOutBackward"
// }),
//
// *** TabbedPane
// "TabbedPane.font", dialogPlain12,
// "TabbedPane.background", control,
// "TabbedPane.foreground", controlText,
// "TabbedPane.highlight", controlLtHighlight,
// "TabbedPane.light", controlHighlight,
// "TabbedPane.shadow", controlShadow,
// "TabbedPane.darkShadow", controlDkShadow,
"TabbedPane.selected",
null,
// "TabbedPane.focus", controlText,
"TabbedPane.textIconGap",
four,
// Causes tabs to be painted on top of the content area border.
// The amount of overlap is then controlled by tabAreaInsets.bottom,
// which is zero by default
"TabbedPane.tabsOverlapBorder",
Boolean.FALSE,
// "TabbedPane.selectionFollowsFocus", Boolean.TRUE,
"TabbedPane.labelShift",
1,
"TabbedPane.selectedLabelShift",
-1,
"TabbedPane.tabInsets",
tabbedPaneTabInsets,
"TabbedPane.selectedTabPadInsets",
tabbedPaneTabPadInsets,
"TabbedPane.tabAreaInsets",
tabbedPaneTabAreaInsets,
"TabbedPane.contentBorderInsets",
tabbedPaneContentBorderInsets,
"TabbedPane.tabRunOverlay",
new Integer(2),
// "TabbedPane.tabsOpaque", Boolean.TRUE,
// "TabbedPane.contentOpaque", Boolean.TRUE,
// "TabbedPane.focusInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "RIGHT", "navigateRight",
// "KP_RIGHT", "navigateRight",
// "LEFT", "navigateLeft",
// "KP_LEFT", "navigateLeft",
// "UP", "navigateUp",
// "KP_UP", "navigateUp",
// "DOWN", "navigateDown",
// "KP_DOWN", "navigateDown",
// "ctrl DOWN", "requestFocusForVisibleComponent",
// "ctrl KP_DOWN", "requestFocusForVisibleComponent",
// }),
// "TabbedPane.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "ctrl PAGE_DOWN", "navigatePageDown",
// "ctrl PAGE_UP", "navigatePageUp",
// "ctrl UP", "requestFocus",
// "ctrl KP_UP", "requestFocus",
// }),
//
//
// *** Table
// "Table.font", dialogPlain12,
// "Table.foreground", controlText, // cell text color
"Table.background",
window, // cell background color
// "Table.selectionForeground", textHighlightText,
// "Table.selectionBackground", textHighlight,
// "Table.dropLineColor", controlShadow,
"Table.dropLineShortColor",
black,
"Table.gridColor",
gray, // grid line color
"Table.focusCellBackground",
window,
"Table.focusCellForeground",
controlText,
// "Table.focusCellHighlightBorder", focusCellHighlightBorder,
// "Table.scrollPaneBorder", loweredBevelBorder,
// "Table.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "ctrl C", "copy",
// "ctrl V", "paste",
// "ctrl X", "cut",
// "COPY", "copy",
// "PASTE", "paste",
// "CUT", "cut",
// "control INSERT", "copy",
// "shift INSERT", "paste",
// "shift DELETE", "cut",
// "RIGHT", "selectNextColumn",
// "KP_RIGHT", "selectNextColumn",
// "shift RIGHT", "selectNextColumnExtendSelection",
// "shift KP_RIGHT", "selectNextColumnExtendSelection",
// "ctrl shift RIGHT", "selectNextColumnExtendSelection",
// "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
// "ctrl RIGHT", "selectNextColumnChangeLead",
// "ctrl KP_RIGHT", "selectNextColumnChangeLead",
// "LEFT", "selectPreviousColumn",
// "KP_LEFT", "selectPreviousColumn",
// "shift LEFT", "selectPreviousColumnExtendSelection",
// "shift KP_LEFT", "selectPreviousColumnExtendSelection",
// "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
// "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
// "ctrl LEFT", "selectPreviousColumnChangeLead",
// "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
// "DOWN", "selectNextRow",
// "KP_DOWN", "selectNextRow",
// "shift DOWN", "selectNextRowExtendSelection",
// "shift KP_DOWN", "selectNextRowExtendSelection",
// "ctrl shift DOWN", "selectNextRowExtendSelection",
// "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
// "ctrl DOWN", "selectNextRowChangeLead",
// "ctrl KP_DOWN", "selectNextRowChangeLead",
// "UP", "selectPreviousRow",
// "KP_UP", "selectPreviousRow",
// "shift UP", "selectPreviousRowExtendSelection",
// "shift KP_UP", "selectPreviousRowExtendSelection",
// "ctrl shift UP", "selectPreviousRowExtendSelection",
// "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
// "ctrl UP", "selectPreviousRowChangeLead",
// "ctrl KP_UP", "selectPreviousRowChangeLead",
// "HOME", "selectFirstColumn",
// "shift HOME", "selectFirstColumnExtendSelection",
// "ctrl shift HOME", "selectFirstRowExtendSelection",
// "ctrl HOME", "selectFirstRow",
// "END", "selectLastColumn",
// "shift END", "selectLastColumnExtendSelection",
// "ctrl shift END", "selectLastRowExtendSelection",
// "ctrl END", "selectLastRow",
// "PAGE_UP", "scrollUpChangeSelection",
// "shift PAGE_UP", "scrollUpExtendSelection",
// "ctrl shift PAGE_UP", "scrollLeftExtendSelection",
// "ctrl PAGE_UP", "scrollLeftChangeSelection",
// "PAGE_DOWN", "scrollDownChangeSelection",
// "shift PAGE_DOWN", "scrollDownExtendSelection",
// "ctrl shift PAGE_DOWN", "scrollRightExtendSelection",
// "ctrl PAGE_DOWN", "scrollRightChangeSelection",
// "TAB", "selectNextColumnCell",
// "shift TAB", "selectPreviousColumnCell",
// "ENTER", "selectNextRowCell",
// "shift ENTER", "selectPreviousRowCell",
// "ctrl A", "selectAll",
// "ctrl SLASH", "selectAll",
// "ctrl BACK_SLASH", "clearSelection",
// "ESCAPE", "cancel",
// "F2", "startEditing",
// "SPACE", "addToSelection",
// "ctrl SPACE", "toggleAndAnchor",
// "shift SPACE", "extendTo",
// "ctrl shift SPACE", "moveSelectionTo",
// "F8", "focusHeader"
// }),
// "Table.ancestorInputMap.RightToLeft",
// new UIDefaults.LazyInputMap(new Object[] {
// "RIGHT", "selectPreviousColumn",
// "KP_RIGHT", "selectPreviousColumn",
// "shift RIGHT", "selectPreviousColumnExtendSelection",
// "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
// "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
// "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
// "ctrl RIGHT", "selectPreviousColumnChangeLead",
// "ctrl KP_RIGHT", "selectPreviousColumnChangeLead",
// "LEFT", "selectNextColumn",
// "KP_LEFT", "selectNextColumn",
// "shift LEFT", "selectNextColumnExtendSelection",
// "shift KP_LEFT", "selectNextColumnExtendSelection",
// "ctrl shift LEFT", "selectNextColumnExtendSelection",
// "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
// "ctrl LEFT", "selectNextColumnChangeLead",
// "ctrl KP_LEFT", "selectNextColumnChangeLead",
// "ctrl PAGE_UP", "scrollRightChangeSelection",
// "ctrl PAGE_DOWN", "scrollLeftChangeSelection",
// "ctrl shift PAGE_UP", "scrollRightExtendSelection",
// "ctrl shift PAGE_DOWN", "scrollLeftExtendSelection",
// }),
// "Table.ascendingSortIcon", new SwingLazyValue(
// "sun.swing.icon.SortArrowIcon",
// null, new Object[] { Boolean.TRUE,
// "Table.sortIconColor" }),
// "Table.descendingSortIcon", new SwingLazyValue(
// "sun.swing.icon.SortArrowIcon",
// null, new Object[] { Boolean.FALSE,
// "Table.sortIconColor" }),
// "Table.sortIconColor", controlShadow,
//
// "TableHeader.font", dialogPlain12,
// "TableHeader.foreground", controlText, // header text color
// "TableHeader.background", control, // header background
// "TableHeader.cellBorder", tableHeaderBorder,
// Support for changing the background/border of the currently
// selected header column when the header has the keyboard focus.
// "TableHeader.focusCellBackground", table.getColor("text"), // like
// text component bg
// "TableHeader.focusCellForeground", null,
// "TableHeader.focusCellBorder", null,
// "TableHeader.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "SPACE", "toggleSortOrder",
// "LEFT", "selectColumnToLeft",
// "KP_LEFT", "selectColumnToLeft",
// "RIGHT", "selectColumnToRight",
// "KP_RIGHT", "selectColumnToRight",
// "alt LEFT", "moveColumnLeft",
// "alt KP_LEFT", "moveColumnLeft",
// "alt RIGHT", "moveColumnRight",
// "alt KP_RIGHT", "moveColumnRight",
// "alt shift LEFT", "resizeLeft",
// "alt shift KP_LEFT", "resizeLeft",
// "alt shift RIGHT", "resizeRight",
// "alt shift KP_RIGHT", "resizeRight",
// "ESCAPE", "focusTable",
// }),
//
// *** Text
"TextField.font",
sansSerifPlain12,
"TextField.background",
window,
"TextField.foreground",
textText,
// "TextField.shadow", controlShadow,
// "TextField.darkShadow", controlDkShadow,
// "TextField.light", controlHighlight,
// "TextField.highlight", controlLtHighlight,
// "TextField.inactiveForeground", textInactiveText,
// "TextField.inactiveBackground", control,
// "TextField.selectionBackground", textHighlight,
// "TextField.selectionForeground", textHighlightText,
// "TextField.caretForeground", textText,
// "TextField.caretBlinkRate", caretBlinkRate,
// "TextField.border", textFieldBorder,
"TextField.margin",
zeroInsets,
"FormattedTextField.font",
sansSerifPlain12,
"FormattedTextField.background",
window,
"FormattedTextField.foreground",
textText,
// "FormattedTextField.inactiveForeground", textInactiveText,
// "FormattedTextField.inactiveBackground", control,
// "FormattedTextField.selectionBackground", textHighlight,
// "FormattedTextField.selectionForeground", textHighlightText,
"FormattedTextField.caretForeground",
textText,
// "FormattedTextField.caretBlinkRate", caretBlinkRate,
// "FormattedTextField.border", textFieldBorder,
"FormattedTextField.margin",
zeroInsets,
// "FormattedTextField.focusInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "ctrl C", DefaultEditorKit.copyAction,
// "ctrl V", DefaultEditorKit.pasteAction,
// "ctrl X", DefaultEditorKit.cutAction,
// "COPY", DefaultEditorKit.copyAction,
// "PASTE", DefaultEditorKit.pasteAction,
// "CUT", DefaultEditorKit.cutAction,
// "control INSERT", DefaultEditorKit.copyAction,
// "shift INSERT", DefaultEditorKit.pasteAction,
// "shift DELETE", DefaultEditorKit.cutAction,
// "shift LEFT", DefaultEditorKit.selectionBackwardAction,
// "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
// "shift RIGHT", DefaultEditorKit.selectionForwardAction,
// "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
// "ctrl LEFT", DefaultEditorKit.previousWordAction,
// "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
// "ctrl RIGHT", DefaultEditorKit.nextWordAction,
// "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
// "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
// "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
// "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
// "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
// "ctrl A", DefaultEditorKit.selectAllAction,
// "HOME", DefaultEditorKit.beginLineAction,
// "END", DefaultEditorKit.endLineAction,
// "shift HOME", DefaultEditorKit.selectionBeginLineAction,
// "shift END", DefaultEditorKit.selectionEndLineAction,
// "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
// "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
// "ctrl H", DefaultEditorKit.deletePrevCharAction,
// "DELETE", DefaultEditorKit.deleteNextCharAction,
// "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
// "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
// "RIGHT", DefaultEditorKit.forwardAction,
// "LEFT", DefaultEditorKit.backwardAction,
// "KP_RIGHT", DefaultEditorKit.forwardAction,
// "KP_LEFT", DefaultEditorKit.backwardAction,
// "ENTER", JTextField.notifyAction,
// "ctrl BACK_SLASH", "unselect",
// "control shift O", "toggle-componentOrientation",
// "ESCAPE", "reset-field-edit",
// "UP", "increment",
// "KP_UP", "increment",
// "DOWN", "decrement",
// "KP_DOWN", "decrement",
// }),
//
"PasswordField.font",
monospacedPlain12,
"PasswordField.background",
window,
"PasswordField.foreground",
textText,
// "PasswordField.inactiveForeground", textInactiveText,
// "PasswordField.inactiveBackground", control,
// "PasswordField.selectionBackground", textHighlight,
// "PasswordField.selectionForeground", textHighlightText,
// "PasswordField.caretForeground", textText,
// "PasswordField.caretBlinkRate", caretBlinkRate,
// "PasswordField.border", textFieldBorder,
"PasswordField.margin",
zeroInsets,
"PasswordField.echoChar",
'*',
"TextArea.font",
monospacedPlain12,
"TextArea.background",
window,
"TextArea.foreground",
textText,
// "TextArea.inactiveForeground", textInactiveText,
// "TextArea.selectionBackground", textHighlight,
// "TextArea.selectionForeground", textHighlightText,
// "TextArea.caretForeground", textText,
// "TextArea.caretBlinkRate", caretBlinkRate,
// "TextArea.border", marginBorder,
"TextArea.margin",
zeroInsets,
"TextPane.font",
serifPlain12,
"TextPane.background",
white,
"TextPane.foreground",
textText,
// "TextPane.selectionBackground", textHighlight,
// "TextPane.selectionForeground", textHighlightText,
// "TextPane.caretForeground", textText,
// "TextPane.caretBlinkRate", caretBlinkRate,
// "TextPane.inactiveForeground", textInactiveText,
// "TextPane.border", marginBorder,
"TextPane.margin",
editorMargin,
"EditorPane.font",
serifPlain12,
"EditorPane.background",
white,
"EditorPane.foreground",
textText,
// "EditorPane.selectionBackground", textHighlight,
// "EditorPane.selectionForeground", textHighlightText,
// "EditorPane.caretForeground", textText,
// "EditorPane.caretBlinkRate", caretBlinkRate,
// "EditorPane.inactiveForeground", textInactiveText,
// "EditorPane.border", marginBorder,
"EditorPane.margin",
editorMargin,
//
// "html.pendingImage", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/image-delayed.png"),
// "html.missingImage", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/image-failed.png"),
// *** TitledBorder
// "TitledBorder.font", dialogPlain12,
"TitledBorder.titleColor",
controlText,
// "TitledBorder.border", etchedBorder,
// *** ToolBar
// "ToolBar.font", dialogPlain12,
// "ToolBar.background", control,
// "ToolBar.foreground", controlText,
// "ToolBar.shadow", controlShadow,
// "ToolBar.darkShadow", controlDkShadow,
// "ToolBar.light", controlHighlight,
// "ToolBar.highlight", controlLtHighlight,
// "ToolBar.dockingBackground", control,
// "ToolBar.dockingForeground", red,
// "ToolBar.floatingBackground", control,
// "ToolBar.floatingForeground", darkGray,
// "ToolBar.border", etchedBorder,
// "ToolBar.separatorSize", toolBarSeparatorSize,
// "ToolBar.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "UP", "navigateUp",
// "KP_UP", "navigateUp",
// "DOWN", "navigateDown",
// "KP_DOWN", "navigateDown",
// "LEFT", "navigateLeft",
// "KP_LEFT", "navigateLeft",
// "RIGHT", "navigateRight",
// "KP_RIGHT", "navigateRight"
// }),
// *** ToolTips
// "ToolTip.font", sansSerifPlain12,
// "ToolTip.background", table.get("info"),
// "ToolTip.foreground", table.get("infoText"),
// "ToolTip.border", blackLineBorder,
// ToolTips also support backgroundInactive, borderInactive,
// and foregroundInactive
// *** ToolTipManager
// ToolTipManager.enableToolTipMode currently supports:
// "allWindows" (default):
// enables tool tips for all windows of all java applications,
// whether the windows are active or inactive
// "activeApplication"
// enables tool tips for windows of an application only when
// the application has an active window
// "ToolTipManager.enableToolTipMode", "allWindows",
// *** Tree
"Tree.paintLines",
Boolean.TRUE,
"Tree.lineTypeDashed",
Boolean.FALSE,
// "Tree.font", dialogPlain12,
"Tree.background",
window,
"Tree.foreground",
textText,
"Tree.hash",
gray,
"Tree.textForeground",
textText,
"Tree.textBackground",
table.get("text"),
// "Tree.selectionForeground", textHighlightText,
// "Tree.selectionBackground", textHighlight,
// "Tree.selectionBorderColor", black,
// "Tree.dropLineColor", controlShadow,
// "Tree.editorBorder", blackLineBorder,
"Tree.leftChildIndent", new Integer(7), "Tree.rightChildIndent",
new Integer(13), "Tree.rowHeight", new Integer(16),
"Tree.scrollsOnExpand", Boolean.TRUE,
// "Tree.openIcon", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/TreeOpen.gif"),
// "Tree.closedIcon", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/TreeClosed.gif"),
// "Tree.leafIcon", SwingUtilities2.makeIcon(getClass(),
// BasicLookAndFeel.class,
// "icons/TreeLeaf.gif"),
// "Tree.expandedIcon", null,
// "Tree.collapsedIcon", null,
// "Tree.changeSelectionWithFocus", Boolean.TRUE,
// "Tree.drawsFocusBorderAroundIcon", Boolean.FALSE,
"Tree.timeFactor", oneThousand,
// "Tree.focusInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "ctrl C", "copy",
// "ctrl V", "paste",
// "ctrl X", "cut",
// "COPY", "copy",
// "PASTE", "paste",
// "CUT", "cut",
// "control INSERT", "copy",
// "shift INSERT", "paste",
// "shift DELETE", "cut",
// "UP", "selectPrevious",
// "KP_UP", "selectPrevious",
// "shift UP", "selectPreviousExtendSelection",
// "shift KP_UP", "selectPreviousExtendSelection",
// "ctrl shift UP", "selectPreviousExtendSelection",
// "ctrl shift KP_UP", "selectPreviousExtendSelection",
// "ctrl UP", "selectPreviousChangeLead",
// "ctrl KP_UP", "selectPreviousChangeLead",
// "DOWN", "selectNext",
// "KP_DOWN", "selectNext",
// "shift DOWN", "selectNextExtendSelection",
// "shift KP_DOWN", "selectNextExtendSelection",
// "ctrl shift DOWN", "selectNextExtendSelection",
// "ctrl shift KP_DOWN", "selectNextExtendSelection",
// "ctrl DOWN", "selectNextChangeLead",
// "ctrl KP_DOWN", "selectNextChangeLead",
// "RIGHT", "selectChild",
// "KP_RIGHT", "selectChild",
// "LEFT", "selectParent",
// "KP_LEFT", "selectParent",
// "PAGE_UP", "scrollUpChangeSelection",
// "shift PAGE_UP", "scrollUpExtendSelection",
// "ctrl shift PAGE_UP", "scrollUpExtendSelection",
// "ctrl PAGE_UP", "scrollUpChangeLead",
// "PAGE_DOWN", "scrollDownChangeSelection",
// "shift PAGE_DOWN", "scrollDownExtendSelection",
// "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
// "ctrl PAGE_DOWN", "scrollDownChangeLead",
// "HOME", "selectFirst",
// "shift HOME", "selectFirstExtendSelection",
// "ctrl shift HOME", "selectFirstExtendSelection",
// "ctrl HOME", "selectFirstChangeLead",
// "END", "selectLast",
// "shift END", "selectLastExtendSelection",
// "ctrl shift END", "selectLastExtendSelection",
// "ctrl END", "selectLastChangeLead",
// "F2", "startEditing",
// "ctrl A", "selectAll",
// "ctrl SLASH", "selectAll",
// "ctrl BACK_SLASH", "clearSelection",
// "ctrl LEFT", "scrollLeft",
// "ctrl KP_LEFT", "scrollLeft",
// "ctrl RIGHT", "scrollRight",
// "ctrl KP_RIGHT", "scrollRight",
// "SPACE", "addToSelection",
// "ctrl SPACE", "toggleAndAnchor",
// "shift SPACE", "extendTo",
// "ctrl shift SPACE", "moveSelectionTo"
// }),
// "Tree.focusInputMap.RightToLeft",
// new UIDefaults.LazyInputMap(new Object[] {
// "RIGHT", "selectParent",
// "KP_RIGHT", "selectParent",
// "LEFT", "selectChild",
// "KP_LEFT", "selectChild",
// }),
// "Tree.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "ESCAPE", "cancel"
// }),
// // Bind specific keys that can invoke popup on currently
// // focused JComponent
// "RootPane.ancestorInputMap",
// new UIDefaults.LazyInputMap(new Object[] {
// "shift F10", "postPopup",
// "CONTEXT_MENU", "postPopup"
// }),
//
// // These bindings are only enabled when there is a default
// // button set on the rootpane.
// "RootPane.defaultButtonWindowKeyBindings", new Object[] {
// "ENTER", "press",
// "released ENTER", "release",
// "ctrl ENTER", "press",
// "ctrl released ENTER", "release"
// },
};
table.putDefaults(defaults);
}
// /**
// * Returns the ui that is of type klass
, or null if
// * one can not be found.
// */
// static Object getUIOfType(ComponentUI ui, Class klass) {
// if (klass.isInstance(ui)) {
// return ui;
// }
// return null;
// }
//
// // ********* Auditory Cue support methods and objects *********
// // also see the "AuditoryCues" section of the defaults table
//
// /**
// * Returns an ActionMap
containing the audio actions
// * for this look and feel.
// *
// * The returned ActionMap
contains Actions
that
// * embody the ability to render an auditory cue. These auditory
// * cues map onto user and system activities that may be useful
// * for an end user to know about (such as a dialog box appearing).
// *
// * At the appropriate time,
// * the {@code ComponentUI} is responsible for obtaining an
// * Action
out of the ActionMap
and passing
// * it to playSound
.
// *
// * This method first looks up the {@code ActionMap} from the // * defaults using the key {@code "AuditoryCues.actionMap"}. // *
// * If the value is {@code non-null}, it is returned. If the value // * of the default {@code "AuditoryCues.actionMap"} is {@code null} // * and the value of the default {@code "AuditoryCues.cueList"} is // * {@code non-null}, an {@code ActionMapUIResource} is created and // * populated. Population is done by iterating over each of the // * elements of the {@code "AuditoryCues.cueList"} array, and // * invoking {@code createAudioAction()} to create an {@code // * Action} for each element. The resulting {@code Action} is // * placed in the {@code ActionMapUIResource}, using the array // * element as the key. For example, if the {@code // * "AuditoryCues.cueList"} array contains a single-element, {@code // * "audioKey"}, the {@code ActionMapUIResource} is created, then // * populated by way of {@code actionMap.put(cueList[0], // * createAudioAction(cueList[0]))}. // *
// * If the value of the default {@code "AuditoryCues.actionMap"} is // * {@code null} and the value of the default // * {@code "AuditoryCues.cueList"} is {@code null}, an empty // * {@code ActionMapUIResource} is created. // * // * // * @return an ActionMap containing {@code Actions} // * responsible for playing auditory cues // * @throws ClassCastException if the value of the // * default {@code "AuditoryCues.actionMap"} is not an // * {@code ActionMap}, or the value of the default // * {@code "AuditoryCues.cueList"} is not an {@code Object[]} // * @see #createAudioAction // * @see #playSound(Action) // * @since 1.4 // */ // protected ActionMap getAudioActionMap() { // ActionMap audioActionMap = (ActionMap)UIManager.get( // "AuditoryCues.actionMap"); // if (audioActionMap == null) { // Object[] acList = (Object[])UIManager.get("AuditoryCues.cueList"); // if (acList != null) { // audioActionMap = new ActionMapUIResource(); // for(int counter = acList.length-1; counter >= 0; counter--) { // audioActionMap.put(acList[counter], // createAudioAction(acList[counter])); // } // } // UIManager.getLookAndFeelDefaults().put("AuditoryCues.actionMap", // audioActionMap); // } // return audioActionMap; // } // // /** // * Creates and returns an {@code Action} used to play a sound. // *
// * If {@code key} is {@code non-null}, an {@code Action} is created
// * using the value from the defaults with key {@code key}. The value
// * identifies the sound resource to load when
// * {@code actionPerformed} is invoked on the {@code Action}. The
// * sound resource is loaded into a {@code byte[]} by way of
// * {@code getClass().getResourceAsStream()}.
// *
// * @param key the key identifying the audio action
// * @return an {@code Action} used to play the source, or {@code null}
// * if {@code key} is {@code null}
// * @see #playSound(Action)
// * @since 1.4
// */
// protected Action createAudioAction(Object key) {
// if (key != null) {
// String audioKey = (String)key;
// String audioValue = (String)UIManager.get(key);
// return new AudioAction(audioKey, audioValue);
// } else {
// return null;
// }
// }
//
// /**
// * Pass the name String to the super constructor. This is used
// * later to identify the Action and decide whether to play it or
// * not. Store the resource String. I is used to get the audio
// * resource. In this case, the resource is an audio file.
// *
// * @since 1.4
// */
// private class AudioAction extends AbstractAction implements LineListener {
// // We strive to only play one sound at a time (other platforms
// // appear to do this). This is done by maintaining the field
// // clipPlaying. Every time a sound is to be played,
// // cancelCurrentSound is invoked to cancel any sound that may be
// // playing.
// private String audioResource;
// private byte[] audioBuffer;
//
// /**
// * The String is the name of the Action and
// * points to the audio resource.
// * The byte[] is a buffer of the audio bits.
// */
// public AudioAction(String name, String resource) {
// super(name);
// audioResource = resource;
// }
//
// public void actionPerformed(ActionEvent e) {
// if (audioBuffer == null) {
// audioBuffer = loadAudioData(audioResource);
// }
// if (audioBuffer != null) {
// cancelCurrentSound(null);
// try {
// AudioInputStream soundStream =
// AudioSystem.getAudioInputStream(
// new ByteArrayInputStream(audioBuffer));
// DataLine.Info info =
// new DataLine.Info(Clip.class, soundStream.getFormat());
// Clip clip = (Clip) AudioSystem.getLine(info);
// clip.open(soundStream);
// clip.addLineListener(this);
//
// synchronized(audioLock) {
// clipPlaying = clip;
// }
//
// clip.start();
// } catch (Exception ex) {}
// }
// }
//
// public void update(LineEvent event) {
// if (event.getType() == LineEvent.Type.STOP) {
// cancelCurrentSound((Clip)event.getLine());
// }
// }
//
// /**
// * If the parameter is null, or equal to the currently
// * playing sound, then cancel the currently playing sound.
// */
// private void cancelCurrentSound(Clip clip) {
// Clip lastClip = null;
//
// synchronized(audioLock) {
// if (clip == null || clip == clipPlaying) {
// lastClip = clipPlaying;
// clipPlaying = null;
// }
// }
//
// if (lastClip != null) {
// lastClip.removeLineListener(this);
// lastClip.close();
// }
// }
// }
//
// /**
// * Utility method that loads audio bits for the specified
// * soundFile
filename. If this method is unable to
// * build a viable path name from the baseClass
and
// * soundFile
passed into this method, it will
// * return null
.
// *
// * @param baseClass used as the root class/location to get the
// * soundFile from
// * @param soundFile the name of the audio file to be retrieved
// * from disk
// * @return A byte[] with audio data or null
// * @since 1.4
// */
// private byte[] loadAudioData(final String soundFile){
// if (soundFile == null) {
// return null;
// }
// /* Copy resource into a byte array. This is
// * necessary because several browsers consider
// * Class.getResource a security risk since it
// * can be used to load additional classes.
// * Class.getResourceAsStream just returns raw
// * bytes, which we can convert to a sound.
// */
// byte[] buffer = (byte[])AccessController.doPrivileged(
// new PrivilegedAction() {
// public Object run() {
// try {
// InputStream resource = BasicLookAndFeel.this.
// getClass().getResourceAsStream(soundFile);
// if (resource == null) {
// return null;
// }
// BufferedInputStream in =
// new BufferedInputStream(resource);
// ByteArrayOutputStream out =
// new ByteArrayOutputStream(1024);
// byte[] buffer = new byte[1024];
// int n;
// while ((n = in.read(buffer)) > 0) {
// out.write(buffer, 0, n);
// }
// in.close();
// out.flush();
// buffer = out.toByteArray();
// return buffer;
// } catch (IOException ioe) {
// System.err.println(ioe.toString());
// return null;
// }
// }
// });
// if (buffer == null) {
// System.err.println(getClass().getName() + "/" +
// soundFile + " not found.");
// return null;
// }
// if (buffer.length == 0) {
// System.err.println("warning: " + soundFile +
// " is zero-length");
// return null;
// }
// return buffer;
// }
//
// /**
// * If necessary, invokes {@code actionPerformed} on
// * {@code audioAction} to play a sound.
// * The {@code actionPerformed} method is invoked if the value of
// * the {@code "AuditoryCues.playList"} default is a {@code
// * non-null} {@code Object[]} containing a {@code String} entry
// * equal to the name of the {@code audioAction}.
// *
// * @param audioAction an Action that knows how to render the audio
// * associated with the system or user activity
// * that is occurring; a value of {@code null}, is
// * ignored
// * @throws ClassCastException if {@code audioAction} is {@code non-null}
// * and the value of the default {@code "AuditoryCues.playList"}
// * is not an {@code Object[]}
// * @since 1.4
// */
// protected void playSound(Action audioAction) {
// if (audioAction != null) {
// Object[] audioStrings = (Object[])
// UIManager.get("AuditoryCues.playList");
// if (audioStrings != null) {
// // create a HashSet to help us decide to play or not
// HashSet audioCues = new HashSet();
// for (int i = 0; i < audioStrings.length; i++) {
// audioCues.add(audioStrings[i]);
// }
// // get the name of the Action
// String actionName = (String)audioAction.getValue(Action.NAME);
// // if the actionName is in the audioCues HashSet, play it.
// if (audioCues.contains(actionName)) {
// audioAction.actionPerformed(new
// ActionEvent(this, ActionEvent.ACTION_PERFORMED,
// actionName));
// }
// }
// }
// }
//
//
// /**
// * Sets the parent of the passed in ActionMap to be the audio action
// * map.
// */
// static void installAudioActionMap(ActionMap map) {
// LookAndFeel laf = UIManager.getLookAndFeel();
// if (laf instanceof BasicLookAndFeel) {
// map.setParent(((BasicLookAndFeel)laf).getAudioActionMap());
// }
// }
//
//
// /**
// * Helper method to play a named sound.
// *
// * @param c JComponent to play the sound for.
// * @param actionKey Key for the sound.
// */
// static void playSound(JComponent c, Object actionKey) {
// LookAndFeel laf = UIManager.getLookAndFeel();
// if (laf instanceof BasicLookAndFeel) {
// ActionMap map = c.getActionMap();
// if (map != null) {
// Action audioAction = map.get(actionKey);
// if (audioAction != null) {
// // pass off firing the Action to a utility method
// ((BasicLookAndFeel)laf).playSound(audioAction);
// }
// }
// }
// }
//
// /**
// * This class contains listener that watches for all the mouse
// * events that can possibly invoke popup on the component
// */
// class AWTEventHelper implements AWTEventListener,PrivilegedAction {
// AWTEventHelper() {
// super();
// AccessController.doPrivileged(this);
// }
//
// public Object run() {
// Toolkit tk = Toolkit.getDefaultToolkit();
// if(invocator == null) {
// tk.addAWTEventListener(this, AWTEvent.MOUSE_EVENT_MASK);
// } else {
// tk.removeAWTEventListener(invocator);
// }
// // Return value not used.
// return null;
// }
//
// public void eventDispatched(AWTEvent ev) {
// int eventID = ev.getID();
// if((eventID & AWTEvent.MOUSE_EVENT_MASK) != 0) {
// MouseEvent me = (MouseEvent) ev;
// if(me.isPopupTrigger()) {
// MenuElement[] elems = MenuSelectionManager
// .defaultManager()
// .getSelectedPath();
// if(elems != null && elems.length != 0) {
// return;
// // We shall not interfere with already opened menu
// }
// Object c = me.getSource();
// JComponent src = null;
// if(c instanceof JComponent) {
// src = (JComponent) c;
// } else if(c instanceof BasicSplitPaneDivider) {
// // Special case - if user clicks on divider we must
// // invoke popup from the SplitPane
// src = (JComponent)
// ((BasicSplitPaneDivider)c).getParent();
// }
// if(src != null) {
// if(src.getComponentPopupMenu() != null) {
// Point pt = src.getPopupLocation(me);
// if(pt == null) {
// pt = me.getPoint();
// pt = SwingUtilities.convertPoint((Component)c,
// pt, src);
// }
// src.getComponentPopupMenu().show(src, pt.x, pt.y);
// me.consume();
// }
// }
// }
// }
// /* Activate a JInternalFrame if necessary. */
// if (eventID == MouseEvent.MOUSE_PRESSED) {
// Object object = ev.getSource();
// if (!(object instanceof Component)) {
// return;
// }
// Component component = (Component)object;
// if (component != null) {
// Component parent = component;
// while (parent != null && !(parent instanceof Window)) {
// if (parent instanceof JInternalFrame) {
// // Activate the frame.
// try { ((JInternalFrame)parent).setSelected(true); }
// catch (PropertyVetoException e1) { }
// }
// parent = parent.getParent();
// }
// }
// }
// }
// }
//
@Override
public String getName() {
return "SwingJS";
}
@Override
public String getID() {
return "SwingJS";
}
@Override
public String getDescription() {
return "SwingJS L&F";
}
@Override
public boolean isNativeLookAndFeel() {
return true;
}
@Override
public boolean isSupportedLookAndFeel() {
return true;
}
}