001: /*
002: * Copyright (C) 2004 NNL Technology AB
003: * Visit www.infonode.net for information about InfoNode(R)
004: * products and how to contact NNL Technology AB.
005: *
006: * This program is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU General Public License
008: * as published by the Free Software Foundation; either version 2
009: * of the License, or (at your option) any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
019: * MA 02111-1307, USA.
020: */
021:
022: // $Id: SoftBlueIceDockingTheme.java,v 1.18 2007/01/28 21:25:10 jesper Exp $
023: package net.infonode.docking.theme;
024:
025: import net.infonode.docking.properties.RootWindowProperties;
026: import net.infonode.gui.colorprovider.ColorBlender;
027: import net.infonode.gui.colorprovider.ColorProvider;
028: import net.infonode.gui.componentpainter.SolidColorComponentPainter;
029: import net.infonode.gui.shaped.border.FixedInsetsShapedBorder;
030: import net.infonode.gui.shaped.border.ShapedBorder;
031: import net.infonode.tabbedpanel.TabAreaProperties;
032: import net.infonode.tabbedpanel.theme.SoftBlueIceTheme;
033:
034: import java.awt.*;
035:
036: /**
037: * A light blue theme with gradients and rounded corners.
038: *
039: * @author $Author: jesper $
040: * @version $Revision: 1.18 $
041: */
042: public class SoftBlueIceDockingTheme extends DockingWindowsTheme {
043: private RootWindowProperties rootWindowProperties = new RootWindowProperties();
044: private boolean slim;
045:
046: /**
047: * Create a theme with default settings.
048: */
049: public SoftBlueIceDockingTheme() {
050: this (false);
051: }
052:
053: /**
054: * Constructor.
055: *
056: * @param slim if true there is less spacing in the tab area
057: */
058: public SoftBlueIceDockingTheme(boolean slim) {
059: this (SoftBlueIceTheme.DEFAULT_DARK_COLOR,
060: SoftBlueIceTheme.DEFAULT_LIGHT_COLOR, 4, slim);
061: }
062:
063: /**
064: * Constructor.
065: *
066: * @param darkColor the dark color used in the gradients
067: * @param lightColor the light color used in the gradients
068: * @param cornerType how much rounding to apply to corners
069: * @param slim if true there is less spacing in the tab area
070: */
071: public SoftBlueIceDockingTheme(ColorProvider darkColor,
072: ColorProvider lightColor, int cornerType, boolean slim) {
073: SoftBlueIceTheme theme = new SoftBlueIceTheme(darkColor,
074: lightColor, cornerType);
075: this .slim = slim;
076:
077: if (slim) {
078: theme.getTabbedPanelProperties().getTabAreaProperties()
079: .getComponentProperties().setBorder(
080: new FixedInsetsShapedBorder(new Insets(0,
081: 0, 0, 0), (ShapedBorder) theme
082: .getTabbedPanelProperties()
083: .getTabAreaProperties()
084: .getComponentProperties()
085: .getBorder()));
086:
087: theme.getTabbedPanelProperties().getTabAreaProperties()
088: .getComponentProperties().setInsets(
089: new Insets(0, 0, 0, 0));
090: theme.getTabbedPanelProperties().setTabSpacing(-1);
091: theme.getTabbedPanelProperties()
092: .getTabAreaComponentsProperties()
093: .getComponentProperties().setInsets(
094: new Insets(2, 2, 2, 2));
095: }
096:
097: rootWindowProperties.getWindowAreaProperties().setBorder(null)
098: .setInsets(new Insets(2, 2, 2, 2));
099: rootWindowProperties.getWindowAreaShapedPanelProperties()
100: .setComponentPainter(
101: new SolidColorComponentPainter(
102: new ColorBlender(darkColor, lightColor,
103: 0.5f)));
104:
105: rootWindowProperties.getTabWindowProperties()
106: .getTabbedPanelProperties().addSuperObject(
107: theme.getTabbedPanelProperties());
108: rootWindowProperties.getTabWindowProperties()
109: .getTabProperties().getTitledTabProperties()
110: .addSuperObject(theme.getTitledTabProperties());
111:
112: rootWindowProperties.getShapedPanelProperties()
113: .setComponentPainter(
114: theme.getTabbedPanelProperties()
115: .getTabAreaProperties()
116: .getShapedPanelProperties()
117: .getComponentPainter());
118:
119: rootWindowProperties.getTabWindowProperties()
120: .getTabbedPanelProperties().getContentPanelProperties()
121: .getShapedPanelProperties().setClipChildren(true);
122: rootWindowProperties.getViewProperties()
123: .getViewTitleBarProperties().getNormalProperties()
124: .getComponentProperties().setForegroundColor(
125: Color.BLACK).setInsets(new Insets(0, 2, 0, 2));
126: rootWindowProperties.getViewProperties()
127: .getViewTitleBarProperties().getNormalProperties()
128: .getShapedPanelProperties().setComponentPainter(null)
129: .setOpaque(false);
130: rootWindowProperties.getViewProperties()
131: .getViewTitleBarProperties().getFocusedProperties()
132: .getShapedPanelProperties().setComponentPainter(null);//.setOpaque(false);
133: rootWindowProperties.getViewProperties()
134: .getViewTitleBarProperties().getFocusedProperties()
135: .getComponentProperties().setForegroundColor(
136: Color.BLACK);
137:
138: TabAreaProperties p = rootWindowProperties
139: .getWindowBarProperties().getTabWindowProperties()
140: .getTabbedPanelProperties().getTabAreaProperties();
141:
142: p.getShapedPanelProperties().setComponentPainter(null);
143: p.getComponentProperties().setBorder(null);
144:
145: rootWindowProperties.getWindowBarProperties()
146: .getTabWindowProperties().getTabbedPanelProperties()
147: .getTabAreaComponentsProperties()
148: .getComponentProperties().setBorder(null);
149:
150: rootWindowProperties.getWindowBarProperties()
151: .getTabWindowProperties().getTabbedPanelProperties()
152: .getContentPanelProperties().getShapedPanelProperties()
153: .setOpaque(false);
154: }
155:
156: public String getName() {
157: return "Soft Blue Ice Theme" + (slim ? " - Slim" : "");
158: }
159:
160: public RootWindowProperties getRootWindowProperties() {
161: return rootWindowProperties;
162: }
163: }
|