|  | 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(); | 
|  | } | 
|  | } | 
|  | } | 
|  | } |