/* * Copyright (c) 2009 Kathryn Huxtable and Kenneth Orr. * * This file is part of the SeaGlass Pluggable Look and Feel. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * $Id$ */ package com.seaglasslookandfeel.painter; import java.awt.Color; import java.awt.Paint; import java.awt.Shape; /** * DOCUMENT ME! * * @author $author$ * @version $Revision$, $Date$ */ public abstract class AbstractCommonColorsPainter extends AbstractRegionPainter { /** * Common control color states. */ public enum CommonControlState { ENABLED, PRESSED, DEFAULT, DEFAULT_PRESSED, DISABLED, DISABLED_SELECTED, SELECTED, PRESSED_SELECTED, } private Color arrowEnabled = decodeColor("buttonArrow"); private Color arrowDisabled = desaturate(arrowEnabled); private Color borderBaseEnabled = decodeColor("buttonBorderBaseEnabled"); private Color borderBasePressed = decodeColor("buttonBorderBasePressed"); private Color interiorBaseEnabled = decodeColor("buttonInteriorBaseEnabled"); private Color interiorBasePressed = decodeColor("buttonInteriorBasePressed"); private Color interiorBaseSelected = decodeColor("buttonInteriorBaseSelected"); private Color interiorBasePressedSelected = decodeColor("buttonInteriorBasePressedSelected"); private Color borderTopEnabled = deriveColor(borderBaseEnabled, 0.002841f, -0.068681f, 0.062745f, 0); private Color borderBottomEnabled = deriveColor(borderBaseEnabled, -0.000801f, 0.082964f, -0.066667f, 0); private Color borderTopPressed = deriveColor(borderBasePressed, 0.003151f, -0.036649f, 0f, 0); private Color borderBottomPressed = deriveColor(borderBasePressed, -0.002987f, 0.047120f, 0f, 0); private TwoColors borderEnabled = new TwoColors(borderTopEnabled, borderBottomEnabled); private TwoColors borderPressed = new TwoColors(borderTopPressed, borderBottomPressed); private TwoColors borderSelected = borderPressed; private TwoColors borderPressedSelected = borderPressed; private TwoColors borderDefault = borderSelected; private TwoColors borderDefaultPressed = borderPressedSelected; private TwoColors borderDisabled = disable(borderEnabled); private TwoColors borderDisabledSelected = borderDisabled; private Color interiorTopEnabled = deriveColor(interiorBaseEnabled, -0.017974f, -0.125841f, 0.027451f, 0); private Color interiorUpperMidEnabled = deriveColor(interiorBaseEnabled, -0.002101f, 0.00291f, 0.007843f, 0); private Color interiorLowerMidEnabled = deriveColor(interiorBaseEnabled, -0.003354f, 0.015574f, 0.003922f, 0); private Color interiorBottomEnabled = deriveColor(interiorBaseEnabled, -0.011029f, -0.106031f, 0.023529f, 0); private Color interiorTopPressed = deriveColor(interiorBasePressed, -0.005111f, -0.240902f, 0.086275f, 0); private Color interiorUpperMidPressed = deriveColor(interiorBasePressed, -0.008629f, 0.005016f, -0.027451f, 0); private Color interiorLowerMidPressed = deriveColor(interiorBasePressed, -0.008658f, 0f, 0f, 0); private Color interiorBottomPressed = deriveColor(interiorBasePressed, -0.027969f, -0.133277f, 0.164706f, 0); private Color interiorTopSelected = deriveColor(interiorBaseSelected, -0.008478f, -0.233526f, 0.05098f, 0); private Color interiorUpperMidSelected = deriveColor(interiorBaseSelected, -0.008234f, -0.009988f, -0.019608f, 0); private Color interiorLowerMidSelected = deriveColor(interiorBaseSelected, -0.014034f, 0.002047f, 0.015686f, 0); private Color interiorBottomSelected = deriveColor(interiorBaseSelected, -0.022764f, -0.105923f, 0.141176f, 0); private Color interiorTopPressedSelected = deriveColor(interiorBasePressedSelected, -0.003339f, -0.246722f, 0.047059f, 0); private Color interiorUpperMidPressedSelected = deriveColor(interiorBasePressedSelected, 0.001453f, 0.001164f, -0.031373f, 0); private Color interiorLowerMidPressedSelected = deriveColor(interiorBasePressedSelected, 0f, 0f, 0f, 0); private Color interiorBottomPressedSelected = deriveColor(interiorBasePressedSelected, -0.023428f, -0.154274f, 0.12549f, 0); private FourColors interiorEnabled = new FourColors(interiorTopEnabled, interiorUpperMidEnabled, interiorLowerMidEnabled, interiorBottomEnabled); private FourColors interiorPressed = new FourColors(interiorTopPressed, interiorUpperMidPressed, interiorLowerMidPressed, interiorBottomPressed); private FourColors interiorSelected = new FourColors(interiorTopSelected, interiorUpperMidSelected, interiorLowerMidSelected, interiorBottomSelected); private FourColors interiorPressedSelected = new FourColors(interiorTopPressedSelected, interiorUpperMidPressedSelected, interiorLowerMidPressedSelected, interiorBottomPressedSelected); private FourColors interiorDefault = interiorSelected; private FourColors interiorDefaultPressed = interiorPressedSelected; private FourColors interiorDisabled = desaturate(interiorEnabled); private FourColors interiorDisabledSelected = desaturate(interiorSelected); private Color textBorderEnabled = decodeColor("seaGlassTextEnabledBorder"); private Color textBorderEnabledToolbar = decodeColor("seaGlassTextEnabledToolbarBorder"); private Color textBorderDisabled = decodeColor("seaGlassTextDisabledBorder"); /** * Creates a new AbstractCommonColorsPainter object. */ public AbstractCommonColorsPainter() { super(); } /** * DOCUMENT ME! * * @param s DOCUMENT ME! * @param type DOCUMENT ME! * * @return DOCUMENT ME! */ public Paint getCommonArrowPaint(Shape s, CommonControlState type) { return getCommonArrowColors(type); } /** * DOCUMENT ME! * * @param s DOCUMENT ME! * @param type DOCUMENT ME! * * @return DOCUMENT ME! */ public Paint getCommonBorderPaint(Shape s, CommonControlState type) { TwoColors colors = getCommonBorderColors(type); return createVerticalGradient(s, colors); } /** * DOCUMENT ME! * * @param s DOCUMENT ME! * @param type DOCUMENT ME! * * @return DOCUMENT ME! */ public Paint getCommonInteriorPaint(Shape s, CommonControlState type) { FourColors colors = getCommonInteriorColors(type); return createVerticalGradient(s, colors); } /** * DOCUMENT ME! * * @param type DOCUMENT ME! * * @return DOCUMENT ME! */ public Color getCommonArrowColors(CommonControlState type) { switch (type) { case DISABLED: return arrowDisabled; case ENABLED: case PRESSED: return arrowEnabled; } return null; } /** * DOCUMENT ME! * * @param type DOCUMENT ME! * * @return DOCUMENT ME! */ public TwoColors getCommonBorderColors(CommonControlState type) { switch (type) { case DISABLED: return borderDisabled; case DISABLED_SELECTED: return borderDisabledSelected; case ENABLED: return borderEnabled; case PRESSED: return borderPressed; case DEFAULT: return borderDefault; case DEFAULT_PRESSED: return borderDefaultPressed; case SELECTED: return borderSelected; case PRESSED_SELECTED: return borderPressedSelected; } return null; } /** * DOCUMENT ME! * * @param type DOCUMENT ME! * * @return DOCUMENT ME! */ public FourColors getCommonInteriorColors(CommonControlState type) { switch (type) { case DISABLED: return interiorDisabled; case DISABLED_SELECTED: return interiorDisabledSelected; case ENABLED: return interiorEnabled; case PRESSED: return interiorPressed; case DEFAULT: return interiorDefault; case DEFAULT_PRESSED: return interiorDefaultPressed; case SELECTED: return interiorSelected; case PRESSED_SELECTED: return interiorPressedSelected; } return null; } /** * DOCUMENT ME! * * @param type DOCUMENT ME! * @param inToolbar DOCUMENT ME! * * @return DOCUMENT ME! */ public Paint getTextBorderPaint(CommonControlState type, boolean inToolbar) { if (type == CommonControlState.DISABLED) { return textBorderDisabled; } else if (inToolbar) { return textBorderEnabledToolbar; } else { return textBorderEnabled; } } }