2
* Copyright (c) 2005-2010 Substance Kirill Grouchnikov. All Rights Reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
7
* o Redistributions of source code must retain the above copyright notice,
8
* this list of conditions and the following disclaimer.
10
* o Redistributions in binary form must reproduce the above copyright notice,
11
* this list of conditions and the following disclaimer in the documentation
12
* and/or other materials provided with the distribution.
14
* o Neither the name of Substance Kirill Grouchnikov nor the names of
15
* its contributors may be used to endorse or promote products derived
16
* from this software without specific prior written permission.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
20
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
package org.pushingpixels.substance.api.skin;
32
import java.awt.Color;
34
import org.pushingpixels.substance.api.*;
35
import org.pushingpixels.substance.api.painter.border.*;
36
import org.pushingpixels.substance.api.painter.decoration.FractionBasedDecorationPainter;
37
import org.pushingpixels.substance.api.painter.fill.FractionBasedFillPainter;
38
import org.pushingpixels.substance.api.painter.highlight.ClassicHighlightPainter;
39
import org.pushingpixels.substance.api.painter.overlay.BottomLineOverlayPainter;
40
import org.pushingpixels.substance.api.shaper.ClassicButtonShaper;
43
* <code>Office Silver 2007</code> skin. This class is part of officially
46
* @author Kirill Grouchnikov
48
public class OfficeSilver2007Skin extends SubstanceSkin {
50
* Display name for <code>this</code> skin.
52
public static final String NAME = "Office Silver 2007";
55
* Creates a new <code>Office Silver 2007</code> skin.
57
public OfficeSilver2007Skin() {
58
SubstanceSkin.ColorSchemes colorSchemes = SubstanceSkin
59
.getColorSchemes("org/pushingpixels/substance/api/skin/office2007.colorschemes");
61
SubstanceColorScheme activeScheme = colorSchemes
62
.get("Office Silver Active");
63
SubstanceColorScheme enabledScheme = colorSchemes
64
.get("Office Silver Enabled");
66
SubstanceColorSchemeBundle defaultSchemeBundle = new SubstanceColorSchemeBundle(
67
activeScheme, enabledScheme, enabledScheme);
68
defaultSchemeBundle.registerColorScheme(enabledScheme, 0.5f,
69
ComponentState.DISABLED_UNSELECTED);
70
defaultSchemeBundle.registerColorScheme(activeScheme, 0.5f,
71
ComponentState.DISABLED_SELECTED);
73
SubstanceColorScheme rolloverScheme = colorSchemes
74
.get("Office Silver Rollover");
75
SubstanceColorScheme rolloverSelectedScheme = colorSchemes
76
.get("Office Silver Rollover Selected");
77
SubstanceColorScheme selectedScheme = colorSchemes
78
.get("Office Silver Selected");
79
SubstanceColorScheme pressedScheme = colorSchemes
80
.get("Office Silver Pressed");
81
SubstanceColorScheme pressedSelectedScheme = colorSchemes
82
.get("Office Silver Pressed Selected");
84
// register state-specific color schemes on rollovers and selections
85
defaultSchemeBundle.registerColorScheme(rolloverScheme,
86
ComponentState.ROLLOVER_UNSELECTED);
87
defaultSchemeBundle.registerColorScheme(rolloverSelectedScheme,
88
ComponentState.ROLLOVER_SELECTED);
89
defaultSchemeBundle.registerColorScheme(selectedScheme,
90
ComponentState.SELECTED);
91
defaultSchemeBundle.registerColorScheme(pressedScheme,
92
ComponentState.PRESSED_UNSELECTED);
93
defaultSchemeBundle.registerColorScheme(pressedSelectedScheme,
94
ComponentState.PRESSED_SELECTED);
96
// register state-specific highlight color schemes on rollover and
98
defaultSchemeBundle.registerHighlightColorScheme(rolloverScheme, 0.8f,
99
ComponentState.ROLLOVER_UNSELECTED);
100
defaultSchemeBundle.registerHighlightColorScheme(selectedScheme, 0.8f,
101
ComponentState.SELECTED);
102
defaultSchemeBundle.registerHighlightColorScheme(
103
rolloverSelectedScheme, 0.8f, ComponentState.ROLLOVER_SELECTED);
104
defaultSchemeBundle.registerHighlightColorScheme(selectedScheme, 0.8f,
105
ComponentState.ARMED, ComponentState.ROLLOVER_ARMED);
108
SubstanceColorScheme borderEnabledScheme = colorSchemes
109
.get("Office Silver Border Enabled");
110
SubstanceColorScheme borderActiveScheme = colorSchemes
111
.get("Office Silver Border Active");
112
SubstanceColorScheme borderRolloverScheme = colorSchemes
113
.get("Office Border Rollover");
114
SubstanceColorScheme borderRolloverSelectedScheme = colorSchemes
115
.get("Office Border Rollover Selected");
116
SubstanceColorScheme borderSelectedScheme = colorSchemes
117
.get("Office Border Selected");
118
SubstanceColorScheme borderPressedScheme = colorSchemes
119
.get("Office Border Pressed");
121
defaultSchemeBundle.registerColorScheme(borderEnabledScheme,
122
ColorSchemeAssociationKind.BORDER, ComponentState.ENABLED);
123
defaultSchemeBundle.registerColorScheme(borderEnabledScheme,
124
ColorSchemeAssociationKind.BORDER,
125
ComponentState.DISABLED_SELECTED,
126
ComponentState.DISABLED_UNSELECTED);
127
defaultSchemeBundle.registerColorScheme(borderActiveScheme,
128
ColorSchemeAssociationKind.BORDER, ComponentState.DEFAULT);
129
defaultSchemeBundle.registerColorScheme(borderRolloverScheme,
130
ColorSchemeAssociationKind.BORDER,
131
ComponentState.ROLLOVER_UNSELECTED);
132
defaultSchemeBundle.registerColorScheme(borderRolloverSelectedScheme,
133
ColorSchemeAssociationKind.BORDER,
134
ComponentState.ROLLOVER_SELECTED, ComponentState.ARMED,
135
ComponentState.ROLLOVER_ARMED);
136
defaultSchemeBundle.registerColorScheme(borderSelectedScheme,
137
ColorSchemeAssociationKind.BORDER, ComponentState.SELECTED);
138
defaultSchemeBundle.registerColorScheme(borderPressedScheme,
139
ColorSchemeAssociationKind.BORDER,
140
ComponentState.PRESSED_SELECTED,
141
ComponentState.PRESSED_UNSELECTED);
143
SubstanceColorScheme markEnabledScheme = colorSchemes
144
.get("Office Silver Mark Enabled");
145
defaultSchemeBundle.registerColorScheme(markEnabledScheme,
146
ColorSchemeAssociationKind.MARK, ComponentState.ENABLED);
147
defaultSchemeBundle.registerColorScheme(markEnabledScheme,
148
ColorSchemeAssociationKind.MARK,
149
ComponentState.DISABLED_SELECTED,
150
ComponentState.DISABLED_UNSELECTED);
152
registerDecorationAreaSchemeBundle(defaultSchemeBundle,
153
DecorationAreaType.NONE);
155
// tabs and tab borders
156
SubstanceColorScheme tabSelectedScheme = colorSchemes
157
.get("Office Silver Tab Selected");
158
SubstanceColorScheme tabRolloverScheme = colorSchemes
159
.get("Office Silver Tab Rollover");
160
defaultSchemeBundle.registerColorScheme(tabSelectedScheme,
161
ColorSchemeAssociationKind.TAB, ComponentState.SELECTED,
162
ComponentState.ROLLOVER_SELECTED,
163
ComponentState.PRESSED_SELECTED,
164
ComponentState.PRESSED_UNSELECTED);
165
defaultSchemeBundle.registerColorScheme(tabRolloverScheme,
166
ColorSchemeAssociationKind.TAB,
167
ComponentState.ROLLOVER_UNSELECTED);
168
defaultSchemeBundle.registerColorScheme(borderEnabledScheme,
169
ColorSchemeAssociationKind.TAB_BORDER, ComponentState.SELECTED,
170
ComponentState.ROLLOVER_UNSELECTED);
171
defaultSchemeBundle.registerColorScheme(rolloverSelectedScheme,
172
ColorSchemeAssociationKind.TAB_BORDER,
173
ComponentState.ROLLOVER_SELECTED);
176
SubstanceColorScheme separatorScheme = colorSchemes
177
.get("Office Silver Separator");
178
defaultSchemeBundle.registerColorScheme(separatorScheme,
179
ColorSchemeAssociationKind.SEPARATOR);
181
this.registerDecorationAreaSchemeBundle(defaultSchemeBundle,
182
DecorationAreaType.NONE);
184
this.watermarkScheme = colorSchemes.get("Office Silver Watermark");
186
SubstanceColorScheme generalWatermarkScheme = colorSchemes
187
.get("Office Silver Header Watermark");
189
this.registerAsDecorationArea(generalWatermarkScheme,
190
DecorationAreaType.FOOTER, DecorationAreaType.HEADER,
191
DecorationAreaType.TOOLBAR);
193
SubstanceColorScheme titleWatermarkScheme = colorSchemes
194
.get("Office Silver Title Watermark");
196
this.registerAsDecorationArea(titleWatermarkScheme,
197
DecorationAreaType.GENERAL,
198
DecorationAreaType.PRIMARY_TITLE_PANE,
199
DecorationAreaType.SECONDARY_TITLE_PANE);
201
setSelectedTabFadeStart(0.6);
202
setSelectedTabFadeEnd(0.9);
204
this.addOverlayPainter(new BottomLineOverlayPainter(
205
new ColorSchemeSingleColorQuery() {
207
public Color query(SubstanceColorScheme scheme) {
208
Color fg = scheme.getForegroundColor();
209
return new Color(fg.getRed(), fg.getGreen(), fg
212
}), DecorationAreaType.PRIMARY_TITLE_PANE,
213
DecorationAreaType.SECONDARY_TITLE_PANE);
215
this.buttonShaper = new ClassicButtonShaper();
216
this.watermark = null;
218
this.fillPainter = new FractionBasedFillPainter("Office Silver 2007",
219
new float[] { 0.0f, 0.49999f, 0.5f, 1.0f },
220
new ColorSchemeSingleColorQuery[] {
221
ColorSchemeSingleColorQuery.ULTRALIGHT,
222
ColorSchemeSingleColorQuery.LIGHT,
223
ColorSchemeSingleColorQuery.ULTRADARK,
224
ColorSchemeSingleColorQuery.EXTRALIGHT });
226
FractionBasedBorderPainter outerBorderPainter = new FractionBasedBorderPainter(
227
"Office Silver 2007 Outer", new float[] { 0.0f, 0.5f, 1.0f },
228
new ColorSchemeSingleColorQuery[] {
229
ColorSchemeSingleColorQuery.LIGHT,
230
ColorSchemeSingleColorQuery.ULTRADARK,
231
ColorSchemeSingleColorQuery.MID });
232
SubstanceBorderPainter innerBorderPainter = new DelegateFractionBasedBorderPainter(
233
"Office Silver 2007 Inner", outerBorderPainter, new int[] {
234
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF },
235
new ColorSchemeTransform() {
237
public SubstanceColorScheme transform(
238
SubstanceColorScheme scheme) {
239
return scheme.tint(0.8f);
242
this.borderPainter = new CompositeBorderPainter("Office Silver 2007",
243
outerBorderPainter, innerBorderPainter);
245
this.decorationPainter = new FractionBasedDecorationPainter(
246
"Office Silver 2007", new float[] { 0.0f, 0.2499999f, 0.25f,
247
0.3f, 0.7f, 1.0f }, new ColorSchemeSingleColorQuery[] {
248
ColorSchemeSingleColorQuery.ULTRALIGHT,
249
ColorSchemeSingleColorQuery.EXTRALIGHT,
250
ColorSchemeSingleColorQuery.DARK,
251
ColorSchemeSingleColorQuery.MID,
252
ColorSchemeSingleColorQuery.LIGHT,
253
ColorSchemeSingleColorQuery.ULTRALIGHT });
255
this.highlightPainter = new ClassicHighlightPainter();
261
* @see org.pushingpixels.substance.skin.SubstanceSkin#getDisplayName()
264
public String getDisplayName() {