001: /*
002: * Copyright (c) 2001-2007 JGoodies Karsten Lentzsch. All Rights Reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * o Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * o Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * o Neither the name of JGoodies Karsten Lentzsch nor the names of
015: * its contributors may be used to endorse or promote products derived
016: * from this software without specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
020: * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
021: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
022: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
025: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
026: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
027: * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
028: * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: */
030:
031: package com.jgoodies.looks.plastic;
032:
033: import java.awt.Insets;
034:
035: import javax.swing.UIDefaults;
036: import javax.swing.border.Border;
037: import javax.swing.border.EmptyBorder;
038: import javax.swing.plaf.ColorUIResource;
039:
040: import com.jgoodies.looks.LookUtils;
041: import com.jgoodies.looks.MicroLayout;
042:
043: /**
044: * Intializes class and component defaults for the
045: * JGoodies PlasticXP look&feel.
046: *
047: * @author Karsten Lentzsch
048: * @version $Revision: 1.12 $
049: */
050: public class PlasticXPLookAndFeel extends Plastic3DLookAndFeel {
051:
052: /**
053: * Constructs the JGoodies PlasticXP look&feel.
054: */
055: public PlasticXPLookAndFeel() {
056: // Provide an empty constructor for subclassing.
057: }
058:
059: public String getID() {
060: return "JGoodies Plastic XP";
061: }
062:
063: public String getName() {
064: return "JGoodies Plastic XP";
065: }
066:
067: public String getDescription() {
068: return "The JGoodies Plastic XP Look and Feel"
069: + " - \u00a9 2001-2007 JGoodies Karsten Lentzsch";
070: }
071:
072: /**
073: * Initializes the PlasticXP class defaults.
074: * Overrides the UIS for check box, radio button, and spinner.
075: *
076: * @param table the UIDefaults table to work with
077: */
078: protected void initClassDefaults(UIDefaults table) {
079: super .initClassDefaults(table);
080:
081: final String uiClassnamePrefix = "com.jgoodies.looks.plastic.PlasticXP";
082: Object[] uiDefaults = {
083: // Uses a smooth icon
084: "CheckBoxUI", uiClassnamePrefix + "CheckBoxUI",
085:
086: // Uses a smooth icon
087: "RadioButtonUI", uiClassnamePrefix + "RadioButtonUI",
088:
089: // Changed buttons
090: "SpinnerUI", uiClassnamePrefix + "SpinnerUI",
091:
092: // Uses rounded rollover borders
093: "ToolBarUI", uiClassnamePrefix + "ToolBarUI" };
094: table.putDefaults(uiDefaults);
095: }
096:
097: /**
098: * Initializes the PlasticXP component defaults.
099: *
100: * @param table the UIDefaults table to work with
101: */
102: protected void initComponentDefaults(UIDefaults table) {
103: super .initComponentDefaults(table);
104:
105: MicroLayout microLayout = getMicroLayoutPolicy()
106: .getMicroLayout(getName(), table);
107: Insets buttonBorderInsets = microLayout.getButtonBorderInsets();
108:
109: Object buttonBorder = PlasticXPBorders
110: .getButtonBorder(buttonBorderInsets);
111: Object toggleButtonBorder = PlasticXPBorders
112: .getToggleButtonBorder(buttonBorderInsets);
113: Object checkBoxIcon = PlasticXPIconFactory.getCheckBoxIcon();
114: Object comboBoxButtonBorder = PlasticXPBorders
115: .getComboBoxArrowButtonBorder();
116: Border comboBoxEditorBorder = PlasticXPBorders
117: .getComboBoxEditorBorder();
118: Object radioButtonIcon = PlasticXPIconFactory
119: .getRadioButtonIcon();
120: Object scrollPaneBorder = PlasticXPBorders
121: .getScrollPaneBorder();
122: Object textFieldBorder = PlasticXPBorders.getTextFieldBorder();
123: Object spinnerBorder = PlasticXPBorders.getSpinnerBorder();
124:
125: String radioCheckIconName = LookUtils.IS_LOW_RESOLUTION ? "icons/RadioLight5x5.png"
126: : "icons/RadioLight7x7.png";
127:
128: Insets comboEditorInsets = microLayout
129: .getComboBoxEditorInsets();
130:
131: Insets comboEditorBorderInsets = comboBoxEditorBorder
132: .getBorderInsets(null);
133: int comboBorderSize = comboEditorBorderInsets.left;
134: int comboPopupBorderSize = microLayout
135: .getComboPopupBorderSize();
136: int comboRendererGap = comboEditorInsets.left + comboBorderSize
137: - comboPopupBorderSize;
138: Object comboRendererBorder = new EmptyBorder(1,
139: comboRendererGap, 1, comboRendererGap);
140: Object comboTableEditorInsets = new Insets(0, 0, 0, 0);
141:
142: Object[] defaults = {
143: "Button.border",
144: buttonBorder,
145: "Button.borderPaintsFocus",
146: Boolean.TRUE,
147:
148: "CheckBox.icon",
149: checkBoxIcon,
150: "CheckBox.check",
151: getToggleButtonCheckColor(),
152:
153: "ComboBox.arrowButtonBorder",
154: comboBoxButtonBorder,
155: "ComboBox.editorBorder",
156: comboBoxEditorBorder,
157: "ComboBox.borderPaintsFocus",
158: Boolean.TRUE,
159: "ComboBox.editorBorderInsets",
160: comboEditorBorderInsets, // Added by JGoodies
161: "ComboBox.tableEditorInsets",
162: comboTableEditorInsets,
163: "ComboBox.rendererBorder",
164: comboRendererBorder, // Added by JGoodies
165:
166: "FormattedTextField.border", textFieldBorder,
167: "PasswordField.border", textFieldBorder,
168: "Spinner.border", spinnerBorder,
169:
170: "ScrollPane.border", scrollPaneBorder,
171: "Table.scrollPaneBorder", scrollPaneBorder,
172:
173: "RadioButton.icon", radioButtonIcon,
174: "RadioButton.check", getToggleButtonCheckColor(),
175: "RadioButton.interiorBackground",
176: getControlHighlight(), "RadioButton.checkIcon",
177: makeIcon(getClass(), radioCheckIconName),
178:
179: "TextField.border", textFieldBorder,
180:
181: "ToggleButton.border", toggleButtonBorder,
182: "ToggleButton.borderPaintsFocus", Boolean.TRUE,
183:
184: "Tree.expandedIcon",
185: makeIcon(getClass(), "icons/TreeExpanded.png"),
186: "Tree.collapsedIcon",
187: makeIcon(getClass(), "icons/TreeCollapsed.png") };
188: table.putDefaults(defaults);
189: }
190:
191: protected static void installDefaultThemes() {
192: }
193:
194: private ColorUIResource getToggleButtonCheckColor() {
195: return getPlasticTheme().getToggleButtonCheckColor();
196: }
197:
198: }
|