blob: 5e0bbc372d577e105cabd5cf90c2fb02bb3b895c [file] [log] [blame]
package org.apache.view.skins
{
import org.apache.model.utils.ColorUtils;
import org.apache.view.utils.SkinUtils;
import flash.display.GradientType;
import flash.display.Graphics;
import mx.skins.Border;
import mx.styles.StyleManager;
import mx.utils.ColorUtil;
/**
* The skin for all the states of the icon in a CheckBox.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public class CheckBoxSkin extends Border
{
// private static var cache:Object = {};
//--------------------------------------------------------------------------
//
// Class methods
//
//--------------------------------------------------------------------------
/**
* @private
* Several colors used for drawing are calculated from the base colors
* of the component (themeColor, borderColor and fillColors).
* Since these calculations can be a bit expensive,
* we calculate once per color set and cache the results.
*/
/*
private static function calcDerivedStyles(themeColor:uint,
borderColor:uint,
fillColor0:uint,
fillColor1:uint):Object
{
var key:String = HaloColors.getCacheKey(themeColor, borderColor,
fillColor0, fillColor1);
if (!cache[key])
{
var o:Object = cache[key] = {};
// Cross-component styles.
HaloColors.addHaloColors(o, themeColor, fillColor0, fillColor1);
// CheckBox-specific styles.
o.borderColorDrk1 = ColorUtil.adjustBrightness2(borderColor, -50);
}
return cache[key];
}
*/
//--------------------------------------------------------------------------
//
// Constructor
//
//--------------------------------------------------------------------------
/**
* Constructor.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function CheckBoxSkin()
{
super();
var baseColor:uint = SkinUtils.backgroundColor;
if(SkinUtils.darkTheme){
_iconColor = 0xbababa;
_borderColor1 = ColorUtils.darken(baseColor, 30);
_borderColor1 = ColorUtils.darken(baseColor, 35);
_fillColor1 = ColorUtils.lighten(baseColor, 25);
_fillColor2 = ColorUtils.lighten(baseColor, 10);
_innerShadowColor = ColorUtils.lighten(baseColor, 52);
_dropShadowColor = 0xFFFFFF;
} else {
_iconColor = 0x353535;
_borderColor1 = 0x878787;//ColorUtils.darken(baseColor, 90);
_borderColor1 = 0x7d7d7d;//ColorUtils.darken(baseColor, 80);
_fillColor1 = ColorUtils.lighten(baseColor, 40);
_fillColor2 = ColorUtils.lighten(baseColor, 20);
_innerShadowColor = ColorUtils.lighten(baseColor, 40);
_dropShadowColor = 0;
}
}
private var _borderColor1:uint;
private var _borderColor2:uint;
private var _fillColor1:uint;
private var _fillColor2:uint;
private var _iconColor:uint;
private var _innerShadowColor:uint;
private var _dropShadowColor:uint;
override public function get measuredWidth():Number
{
return 15;
}
//----------------------------------
// measuredHeight
//----------------------------------
/**
* @private
*/
override public function get measuredHeight():Number
{
return 15;
}
//--------------------------------------------------------------------------
//
// Overridden methods
//
//--------------------------------------------------------------------------
/**
* @private
*/
override protected function updateDisplayList(w:Number, h:Number):void
{
super.updateDisplayList(w, h);
// User-defined styles
//var borderColor:uint = getStyle("borderColor");
//var checkColor:uint = getStyle("iconColor");
//var fillAlphas:Array = getStyle("fillAlphas");
//var fillColors:Array = getStyle("fillColors");
//styleManager.getColorNames(fillColors);
var highlightAlphas:Array = [1,1];//getStyle("highlightAlphas");
var themeColor:uint = getStyle("themeColor");
// Derived styles
//var derStyles:Object = calcDerivedStyles(themeColor, borderColor,
// fillColors[0], fillColors[1]);
var borderColorDrk1:Number =
ColorUtil.adjustBrightness2(_borderColor1, -50);
var themeColorDrk1:Number =
ColorUtil.adjustBrightness2(themeColor, -25);
var bDrawCheck:Boolean = false;
var upFillColors:Array;
var upFillAlphas:Array;
var overFillColors:Array;
var overFillAlphas:Array;
var disFillColors:Array;
var disFillAlphas:Array;
var g:Graphics = graphics;
g.clear();
switch (name){
case "selectedUpIcon":
case "selectedOverIcon":
case "selectedDisabledIcon":
bDrawCheck = true;
break;
}
switch (name){
case "upIcon":
case "selectedUpIcon":
case "overIcon":
case "selectedOverIcon":
case "disabledIcon":
case "selectedDisabledIcon":
upFillColors = [ _fillColor1, _fillColor2 ];
upFillAlphas = [1,1];
// box fill
drawRoundRect(
0, 0, w - 1, h - 1, 2,
upFillColors, upFillAlphas,
verticalGradientMatrix(0, 0, w - 1, h - 1));
// border
drawRoundRect(
0, 0, w-1, h-1, 2,
[ _borderColor1, _borderColor1 ], 1,
verticalGradientMatrix(0, 0, w-1, h-1 ),
GradientType.LINEAR, null,
{ x: 1, y: 1, w: w - 3, h: h - 3, r: 2 });
// top highlight
drawRoundRect(
1, 1, w - 2, 2 / 2, 2,
[ _innerShadowColor, _innerShadowColor ], highlightAlphas,
verticalGradientMatrix(1, 1, w - 3, 1));
break;
case "downIcon":
case "selectedDownIcon":
overFillColors = [
ColorUtils.darken(_fillColor1,40),
ColorUtils.darken(_fillColor2,40)
];
overFillAlphas = [1,1];
// box fill
drawRoundRect(
0, 0, w - 1, h - 1, 2,
overFillColors, overFillAlphas,
verticalGradientMatrix(0, 0, w - 1, h - 1));
// border
drawRoundRect(
0, 0, w-1, h-1, 2,
[ themeColor, themeColorDrk1 ], 1,
verticalGradientMatrix(0, 0, w-1, h-1 ),
GradientType.LINEAR, null,
{ x: 1, y: 1, w: w - 3, h: h - 3, r: 2 });
// top highlight
drawRoundRect(
1, 1, w - 2, 2 / 2, 2,
[ _innerShadowColor, _innerShadowColor ], highlightAlphas,
verticalGradientMatrix(1, 1, w - 3, 1));
// border
/* drawRoundRect(
0, 0, w, h, 0,
[ themeColor, themeColorDrk1 ], 1,
verticalGradientMatrix(0, 0, w-1, h-1),
GradientType.LINEAR, null,
{ x: 1, y: 1, w: w - 2, h: h - 2, r: 0 });
*/
// box fill
/* drawRoundRect(
1, 1, w - 2, h - 2, 0,
overFillColors, overFillAlphas,
verticalGradientMatrix(1, 1, w - 2, h - 2));
// top highlight
drawRoundRect(
1, 1, w - 2, (h - 2) / 2, 0,
[ 0xFFFFFF, 0xFFFFFF ], highlightAlphas,
verticalGradientMatrix(1, 1, w - 2, (h - 2) / 2));
*/
break;
}
// Draw the checkmark symbol.
if (bDrawCheck)
{
g.beginFill(_iconColor);
g.moveTo(3, 5);
g.lineTo(7, 10);
g.lineTo(15, 0);
g.lineTo(13, 0);
g.lineTo(7, 8);
g.lineTo(5, 5);
g.lineTo(3, 5);
g.endFill();
}
}
}
}