- /*
- * @(#)SynthStyle.java 1.23 03/12/19
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
- package javax.swing.plaf.synth;
-
- import java.awt.*;
- import javax.swing.*;
- import javax.swing.border.Border;
- import javax.swing.plaf.UIResource;
- import javax.swing.text.DefaultEditorKit;
- import java.util.HashMap;
- import java.util.Map;
- import sun.swing.plaf.synth.SynthUI;
-
- /**
- * <code>SynthStyle</code> is a set of style properties.
- * Each <code>SynthUI</code> references at least one
- * <code>SynthStyle</code> that is obtained using a
- * <code>SynthStyleFactory</code>. You typically don't need to interact with
- * this class directly, rather you will load a
- * <a href="doc-files/synthFileFormat.html">Synth File Format file</a> into
- * <code>SynthLookAndFeel</code> that will create a set of SynthStyles.
- *
- * @see SynthLookAndFeel
- * @see SynthStyleFactory
- *
- * @version 1.23, 12/19/03
- * @since 1.5
- * @author Scott Violet
- */
- public abstract class SynthStyle {
- /**
- * Contains the default values for certain properties.
- */
- private static Map DEFAULT_VALUES;
-
- /**
- * Shared SynthGraphics.
- */
- private static final SynthGraphicsUtils SYNTH_GRAPHICS =
- new SynthGraphicsUtils();
-
- /**
- * Adds the default values that we know about to DEFAULT_VALUES.
- */
- private static void populateDefaultValues() {
- Object buttonMap = new UIDefaults.LazyInputMap(new Object[] {
- "SPACE", "pressed",
- "released SPACE", "released"
- });
- DEFAULT_VALUES.put("Button.focusInputMap", buttonMap);
- DEFAULT_VALUES.put("JCheckBox.focusInputMap", buttonMap);
- DEFAULT_VALUES.put("JRadioButton.focusInputMap", buttonMap);
- DEFAULT_VALUES.put("JToggleButton.focusInputMap", buttonMap);
- DEFAULT_VALUES.put("SynthArrowButton.focusInputMap", buttonMap);
-
- Object multilineInputMap = 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,
- "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,
-
- "UP", DefaultEditorKit.upAction,
- "KP_UP", DefaultEditorKit.upAction,
- "DOWN", DefaultEditorKit.downAction,
- "KP_DOWN", DefaultEditorKit.downAction,
- "PAGE_UP", DefaultEditorKit.pageUpAction,
- "PAGE_DOWN", DefaultEditorKit.pageDownAction,
- "shift PAGE_UP", "selection-page-up",
- "shift PAGE_DOWN", "selection-page-down",
- "ctrl shift PAGE_UP", "selection-page-left",
- "ctrl shift PAGE_DOWN", "selection-page-right",
- "shift UP", DefaultEditorKit.selectionUpAction,
- "shift KP_UP", DefaultEditorKit.selectionUpAction,
- "shift DOWN", DefaultEditorKit.selectionDownAction,
- "shift KP_DOWN", DefaultEditorKit.selectionDownAction,
- "ENTER", DefaultEditorKit.insertBreakAction,
- "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
- "ctrl H", DefaultEditorKit.deletePrevCharAction,
- "DELETE", DefaultEditorKit.deleteNextCharAction,
- "RIGHT", DefaultEditorKit.forwardAction,
- "LEFT", DefaultEditorKit.backwardAction,
- "KP_RIGHT", DefaultEditorKit.forwardAction,
- "KP_LEFT", DefaultEditorKit.backwardAction,
- "TAB", DefaultEditorKit.insertTabAction,
- "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
- "ctrl HOME", DefaultEditorKit.beginAction,
- "ctrl END", DefaultEditorKit.endAction,
- "ctrl shift HOME", DefaultEditorKit.selectionBeginAction,
- "ctrl shift END", DefaultEditorKit.selectionEndAction,
- "ctrl T", "next-link-action",
- "ctrl shift T", "previous-link-action",
- "ctrl SPACE", "activate-link-action",
- "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
- });
- DEFAULT_VALUES.put("EditorPane.focusInputMap", multilineInputMap);
- DEFAULT_VALUES.put("TextArea.focusInputMap", multilineInputMap);
- DEFAULT_VALUES.put("TextPane.focusInputMap", multilineInputMap);
-
- Object fieldInputMap = 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,
- "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,
- "ctrl H", DefaultEditorKit.deletePrevCharAction,
- "DELETE", DefaultEditorKit.deleteNextCharAction,
- "RIGHT", DefaultEditorKit.forwardAction,
- "LEFT", DefaultEditorKit.backwardAction,
- "KP_RIGHT", DefaultEditorKit.forwardAction,
- "KP_LEFT", DefaultEditorKit.backwardAction,
- "ENTER", JTextField.notifyAction,
- "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
- "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
- });
- DEFAULT_VALUES.put("TextField.focusInputMap", fieldInputMap);
- DEFAULT_VALUES.put("PasswordField.focusInputMap", fieldInputMap);
-
-
- DEFAULT_VALUES.put("ComboBox.ancestorInputMap",
- new UIDefaults.LazyInputMap(new Object[] {
- "ESCAPE", "hidePopup",
- "PAGE_UP", "pageUpPassThrough",
- "PAGE_DOWN", "pageDownPassThrough",
- "HOME", "homePassThrough",
- "END", "endPassThrough",
- "DOWN", "selectNext",
- "KP_DOWN", "selectNext",
- "alt DOWN", "togglePopup",
- "alt KP_DOWN", "togglePopup",
- "alt UP", "togglePopup",
- "alt KP_UP", "togglePopup",
- "SPACE", "spacePopup",
- "ENTER", "enterPressed",
- "UP", "selectPrevious",
- "KP_UP", "selectPrevious"
- }));
-
- DEFAULT_VALUES.put("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"
- }));
-
- DEFAULT_VALUES.put("FileChooser.ancestorInputMap",
- new UIDefaults.LazyInputMap(new Object[] {
- "ESCAPE", "cancelSelection",
- "F2", "editFileName",
- "F5", "refresh",
- "BACK_SPACE", "Go Up",
- "ENTER", "approveSelection"
- }));
-
- DEFAULT_VALUES.put("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,
- "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,
- "ctrl H", DefaultEditorKit.deletePrevCharAction,
- "DELETE", DefaultEditorKit.deleteNextCharAction,
- "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",
- }));
-
- DEFAULT_VALUES.put("InternalFrame.windowBindings",
- new Object[] {
- "shift ESCAPE", "showSystemMenu",
- "ctrl SPACE", "showSystemMenu",
- "ESCAPE", "hideSystemMenu"});
-
- DEFAULT_VALUES.put("List.focusInputMap",
- new UIDefaults.LazyInputMap(new Object[] {
- "ctrl C", "copy",
- "ctrl V", "paste",
- "ctrl X", "cut",
- "COPY", "copy",
- "PASTE", "paste",
- "CUT", "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"
- }));
-
- DEFAULT_VALUES.put("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",
- }));
-
- DEFAULT_VALUES.put("MenuBar.windowBindings",
- new Object[] { "F10", "takeFocus" });
-
- DEFAULT_VALUES.put("OptionPane.windowBindings",
- new Object[] { "ESCAPE", "close" });
-
- DEFAULT_VALUES.put("RootPane.defaultButtonWindowKeyBindings",
- new Object[] {
- "ENTER", "press",
- "released ENTER", "release",
- "ctrl ENTER", "press",
- "ctrl released ENTER", "release"
- });
-
- DEFAULT_VALUES.put("ScrollBar.anecstorInputMap",
- 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"
- }));
-
- DEFAULT_VALUES.put("ScrollBar.ancestorInputMap.RightToLeft",
- new UIDefaults.LazyInputMap(new Object[] {
- "RIGHT", "negativeUnitIncrement",
- "KP_RIGHT", "negativeUnitIncrement",
- "LEFT", "positiveUnitIncrement",
- "KP_LEFT", "positiveUnitIncrement",
- }));
-
- DEFAULT_VALUES.put("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"
- }));
- DEFAULT_VALUES.put("ScrollPane.ancestorInputMap.RightToLeft",
- new UIDefaults.LazyInputMap(new Object[] {
- "ctrl PAGE_UP", "scrollRight",
- "ctrl PAGE_DOWN", "scrollLeft",
- }));
-
- DEFAULT_VALUES.put("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"
- }));
-
- DEFAULT_VALUES.put("Slider.focusInputMap",
- new UIDefaults.LazyInputMap(new Object[] {
- "RIGHT", "positiveUnitIncrement",
- "KP_RIGHT", "positiveUnitIncrement",
- "DOWN", "negativeUnitIncrement",
- "KP_DOWN", "negativeUnitIncrement",
- "PAGE_DOWN", "negativeBlockIncrement",
- "ctrl PAGE_DOWN", "negativeBlockIncrement",
- "LEFT", "negativeUnitIncrement",
- "KP_LEFT", "negativeUnitIncrement",
- "UP", "positiveUnitIncrement",
- "KP_UP", "positiveUnitIncrement",
- "PAGE_UP", "positiveBlockIncrement",
- "ctrl PAGE_UP", "positiveBlockIncrement",
- "HOME", "minScroll",
- "END", "maxScroll"
- }));
-
- DEFAULT_VALUES.put("Slider.focusInputMap.RightToLeft",
- new UIDefaults.LazyInputMap(new Object[] {
- "RIGHT", "negativeUnitIncrement",
- "KP_RIGHT", "negativeUnitIncrement",
- "LEFT", "positiveUnitIncrement",
- "KP_LEFT", "positiveUnitIncrement",
- }));
-
- DEFAULT_VALUES.put("TabbedPane.ancestorInputMap",
- new UIDefaults.LazyInputMap(new Object[] {
- "ctrl PAGE_DOWN", "navigatePageDown",
- "ctrl PAGE_UP", "navigatePageUp",
- "ctrl UP", "requestFocus",
- "ctrl KP_UP", "requestFocus",
- }));
-
- DEFAULT_VALUES.put("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",
- }));
-
- DEFAULT_VALUES.put("Table.ancestorInputMap",
- new UIDefaults.LazyInputMap(new Object[] {
- "ctrl C", "copy",
- "ctrl V", "paste",
- "ctrl X", "cut",
- "COPY", "copy",
- "PASTE", "paste",
- "CUT", "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"
- }));
-
- DEFAULT_VALUES.put("Tree.ancestorInputMap",
- new UIDefaults.LazyInputMap(new Object[] {
- "ESCAPE", "cancel"
- }));
- DEFAULT_VALUES.put("Tree.focusInputMap",
- new UIDefaults.LazyInputMap(new Object[] {
- "ADD", "expand",
- "SUBTRACT", "collapse",
- "ctrl C", "copy",
- "ctrl V", "paste",
- "ctrl X", "cut",
- "COPY", "copy",
- "PASTE", "paste",
- "CUT", "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"
- }));
- DEFAULT_VALUES.put("Tree.focusInputMap.RightToLeft",
- new UIDefaults.LazyInputMap(new Object[] {
- "RIGHT", "selectParent",
- "KP_RIGHT", "selectParent",
- "LEFT", "selectChild",
- "KP_LEFT", "selectChild",
- }));
- }
-
- /**
- * Returns the default value for the specified property, or null if there
- * is no default for the specified value.
- */
- private static Object getDefaultValue(Object key) {
- synchronized(SynthStyle.class) {
- if (DEFAULT_VALUES == null) {
- DEFAULT_VALUES = new HashMap();
- populateDefaultValues();
- }
- Object value = DEFAULT_VALUES.get(key);
- if (value instanceof UIDefaults.LazyValue) {
- value = ((UIDefaults.LazyValue)value).createValue(null);
- DEFAULT_VALUES.put(key, value);
- }
- return value;
- }
- }
-
- /**
- * Constructs a SynthStyle.
- */
- public SynthStyle() {
- }
-
- /**
- * Returns the <code>SynthGraphicUtils</code> for the specified context.
- *
- * @param context SynthContext identifying requester
- * @return SynthGraphicsUtils
- */
- public SynthGraphicsUtils getGraphicsUtils(SynthContext context) {
- return SYNTH_GRAPHICS;
- }
-
- /**
- * Returns the color for the specified state. This gives precedence to
- * foreground and background of the <code>JComponent</code>. If the
- * <code>Color</code> from the <code>JComponent</code> is not appropriate,
- * or not used, this will invoke <code>getColorForState</code>. Subclasses
- * should generally not have to override this, instead override
- * {@link #getColorForState}.
- *
- * @param context SynthContext identifying requester
- * @param type Type of color being requested.
- * @return Color
- */
- public Color getColor(SynthContext context, ColorType type) {
- JComponent c = context.getComponent();
- Region id = context.getRegion();
- int cs = context.getComponentState();
- // For the enabled state, prefer the widget's colors
- if (!id.isSubregion() && cs == SynthConstants.ENABLED) {
- if (type == ColorType.BACKGROUND) {
- return c.getBackground();
- }
- else if (type == ColorType.FOREGROUND) {
- return c.getForeground();
- }
- else if (type == ColorType.TEXT_FOREGROUND) {
- // If getForeground returns a non-UIResource it means the
- // developer has explicitly set the foreground, use it over
- // that of TEXT_FOREGROUND as that is typically the expected
- // behavior.
- Color color = c.getForeground();
- if (!(color instanceof UIResource)) {
- return color;
- }
- }
- }
- // Then use what we've locally defined
- Color color = getColorForState(context, type);
- if (color == null) {
- // No color, fallback to that of the widget.
- if (type == ColorType.BACKGROUND ||
- type == ColorType.TEXT_BACKGROUND) {
- return c.getBackground();
- }
- else if (type == ColorType.FOREGROUND ||
- type == ColorType.TEXT_FOREGROUND) {
- return c.getForeground();
- }
- }
- return color;
- }
-
- /**
- * Returns the color for the specified state. This should NOT call any
- * methods on the <code>JComponent</code>.
- *
- * @param context SynthContext identifying requester
- * @param type Type of color being requested.
- * @return Color to render with
- */
- protected abstract Color getColorForState(SynthContext context,
- ColorType type);
-
- /**
- * Returns the Font for the specified state. This redirects to the
- * <code>JComponent</code> from the <code>context</code> as necessary.
- * If this does not redirect
- * to the JComponent {@link #getFontForState} is invoked.
- *
- * @param context SynthContext identifying requester
- * @return Font to render with
- */
- public Font getFont(SynthContext context) {
- JComponent c = context.getComponent();
- if (context.getComponentState() == SynthConstants.ENABLED) {
- return c.getFont();
- }
- Font cFont = c.getFont();
- if (cFont != null && !(cFont instanceof UIResource)) {
- return cFont;
- }
- return getFontForState(context);
- }
-
- /**
- * Returns the font for the specified state. This should NOT call any
- * method on the <code>JComponent</code>.
- *
- * @param context SynthContext identifying requester
- * @return Font to render with
- */
- protected abstract Font getFontForState(SynthContext context);
-
- /**
- * Returns the Insets that are used to calculate sizing information.
- *
- * @param context SynthContext identifying requester
- * @param insets Insets to place return value in.
- * @return Sizing Insets.
- */
- public Insets getInsets(SynthContext context, Insets insets) {
- if (insets == null) {
- insets = new Insets(0, 0, 0, 0);
- }
- insets.top = insets.bottom = insets.left = insets.right = 0;
- return insets;
- }
-
- /**
- * Returns the <code>SynthPainter</code> that will be used for painting.
- * This may return null.
- *
- * @param context SynthContext identifying requester
- * @return SynthPainter to use
- */
- public SynthPainter getPainter(SynthContext context) {
- return null;
- }
-
- /**
- * Returns true if the region is opaque.
- *
- * @param context SynthContext identifying requester
- * @return true if region is opaque.
- */
- public boolean isOpaque(SynthContext context) {
- return true;
- }
-
- /**
- * Getter for a region specific style property.
- *
- * @param context SynthContext identifying requester
- * @param key Property being requested.
- * @return Value of the named property
- */
- public Object get(SynthContext context, Object key) {
- return getDefaultValue(key);
- }
-
- void installDefaults(SynthContext context, SynthUI ui) {
- // Special case the Border as this will likely change when the LAF
- // can have more control over this.
- if (!context.isSubregion()) {
- JComponent c = context.getComponent();
- Border border = c.getBorder();
-
- if (border == null || border instanceof UIResource) {
- c.setBorder(new SynthBorder(ui, getInsets(context, null)));
- }
- }
- installDefaults(context);
- }
-
- /**
- * Installs the necessary state from this Style on the
- * <code>JComponent</code> from <code>context</code>.
- *
- * @param context SynthContext identifying component to install properties
- * to.
- */
- public void installDefaults(SynthContext context) {
- if (!context.isSubregion()) {
- JComponent c = context.getComponent();
- Region region = context.getRegion();
- Font font = c.getFont();
-
- if (font == null || (font instanceof UIResource)) {
- c.setFont(getFontForState(context));
- }
- Color background = c.getBackground();
- if (background == null || (background instanceof UIResource)) {
- c.setBackground(getColorForState(context,
- ColorType.BACKGROUND));
- }
- Color foreground = c.getForeground();
- if (foreground == null || (foreground instanceof UIResource)) {
- c.setForeground(getColorForState(context,
- ColorType.FOREGROUND));
- }
- LookAndFeel.installProperty(c, "opaque", Boolean.valueOf(isOpaque(context)));
- }
- }
-
- /**
- * Uninstalls any state that this style installed on
- * the <code>JComponent</code> from <code>context</code>.
- * <p>
- * Styles should NOT depend upon this being called, in certain cases
- * it may never be called.
- *
- * @param context SynthContext identifying component to install properties
- * to.
- */
- public void uninstallDefaults(SynthContext context) {
- if (!context.isSubregion()) {
- // NOTE: because getForeground, getBackground and getFont will look
- // at the parent Container, if we set them to null it may
- // mean we they return a non-null and non-UIResource value
- // preventing install from correctly settings its colors/font. For
- // this reason we do not uninstall the fg/bg/font.
-
- JComponent c = context.getComponent();
- Border border = c.getBorder();
-
- if (border instanceof UIResource) {
- c.setBorder(null);
- }
- }
- }
-
- /**
- * Convenience method to get a specific style property whose value is
- * a <code>Number</code>. If the value is a <code>Number</code>,
- * <code>intValue</code> is returned, otherwise <code>defaultValue</code>
- * is returned.
- *
- * @param context SynthContext identifying requester
- * @param key Property being requested.
- * @param defaultValue Value to return if the property has not been
- * specified, or is not a Number
- * @return Value of the named property
- */
- public int getInt(SynthContext context, Object key, int defaultValue) {
- Object value = get(context, key);
-
- if (value instanceof Number) {
- return ((Number)value).intValue();
- }
- return defaultValue;
- }
-
- /**
- * Convenience method to get a specific style property whose value is
- * an Boolean.
- *
- * @param context SynthContext identifying requester
- * @param key Property being requested.
- * @param defaultValue Value to return if the property has not been
- * specified, or is not a Boolean
- * @return Value of the named property
- */
- public boolean getBoolean(SynthContext context, Object key,
- boolean defaultValue) {
- Object value = get(context, key);
-
- if (value instanceof Boolean) {
- return ((Boolean)value).booleanValue();
- }
- return defaultValue;
- }
-
- /**
- * Convenience method to get a specific style property whose value is
- * an Icon.
- *
- * @param context SynthContext identifying requester
- * @param key Property being requested.
- * @return Value of the named property, or null if not specified
- */
- public Icon getIcon(SynthContext context, Object key) {
- Object value = get(context, key);
-
- if (value instanceof Icon) {
- return (Icon)value;
- }
- return null;
- }
-
- /**
- * Convenience method to get a specific style property whose value is
- * a String.
- *
- * @param context SynthContext identifying requester
- * @param key Property being requested.
- * @param defaultValue Value to return if the property has not been
- * specified, or is not a String
- * @return Value of the named property
- */
- public String getString(SynthContext context, Object key,
- String defaultValue) {
- Object value = get(context, key);
-
- if (value instanceof String) {
- return (String)value;
- }
- return defaultValue;
- }
- }