package com.oxylusflash.book { import caurina.transitions.Tweener; import flash.display.Sprite; import flash.events.MouseEvent; public class FullViewRadio extends FullViewButton { private var selBg:Sprite = new LibTbarSelectedBg; protected static const DISABLED_ALPHA:Number = 1; private static var groups:Object = { }; private var _group:String; /** * Zoom view radio like button. */ public function FullViewRadio() { this.addChildAt(selBg, 0); selBg.alpha = 0; this.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true); } /** * Click handler. * @param e */ private function clickHandler(e:MouseEvent):void { if (this.buttonMode) { this.buttonMode = false; this.rollOverHandler(null); updateSelBg(); if (group) { if (groups[group]) { var crtSel:FullViewRadio = groups[group] as FullViewRadio; crtSel.buttonMode = true; crtSel.rollOutHandler(null); crtSel.updateSelBg(); } groups[group] = this; } } } /** * Set radio button group. */ public function get group():String { return _group; } public function set group(value:String):void { _group = value; } /** * Update selected background. */ public function updateSelBg():void { Tweener.addTween(selBg, { alpha: this.buttonMode ? 0 : 1, base: Global.baseTween } ); } /** * Simulate click. */ public function simulateClick():void { if (groups[group] == null) { this.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } } /** * Overrides. */ override protected function updateEnabledAlpha():void { } override protected function rollOutHandler(e:MouseEvent):void { if (this.buttonMode && (!e || !e.buttonDown)) { Tweener.addTween(overState, { alpha: 0, base: Global.baseTween } ); } } } }