package
{
    import flash.display.Sprite;
    import com.bit101.components.PushButton;
    import flash.events.MouseEvent;
    import flash.display.StageScaleMode;
    import flash.display.StageAlign;
    import com.hybrid.ui.ToolTip;
    import com.novelastudios.ui.strategies.ToolTipTweenStrategy;
    import com.hybrid.ui.strategies.ToolTipTweenStrategy;
    import flash.text.TextField;
    import flash.display.InteractiveObject;
    import com.bit101.components.RadioButton;
    import com.adobe.viewsource.ViewSource;
    
    /**
     * This example is using the NovelasStudios ToolTipTweenStrategy which uses com.greensock.TweenLite for tweening
     * 
     * @author JohnBailey, NovelaStudios ©2010
     */
    public class ToolTipExample extends Sprite
    {    
        /**
         * @private
         */ 
        private var _toolTip:ToolTip;
        
        /**
         * @private
         */ 
        private var _label:TextField;
        
        public function ToolTipExample()            
        {
            ViewSource.addMenuItem(this, "srcview/index.html");
            
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align        = StageAlign.TOP_LEFT;
            
            // LABEL
            _label      = new TextField;
            _label.x = 10;
            _label.y = 10;
            _label.autoSize    = "left";
            _label.text = "TweenLibrary: Greensock TweenLite";
            addChild(_label);
            
            // CREATE TOOLTIP
            _toolTip = new ToolTip(new com.novelastudios.ui.strategies.ToolTipTweenStrategy);
            
            // CREATE RADIO BUTTONS
            var radioCollection:Array = [
                     {name:"TweenLite",title:"Greensock TweenLite",x:80,y:30,selected:true}
                    ,{name:"Tween",title:"fl.transitions.Tween",x:194,y:30,selected:false}
                    ,{name:"None",title:"None",x:304,y:30,selected:false}
                ];
            createRadioButtons(radioCollection)
            
            // CREATE BUTTONS
            var buttonCollection:Array = [
                     {name:"tl",title:"Hover over me to see tooltip",x:100,y:145,width:160}
                ];
            createButtons(buttonCollection);
        }
        ///////////////////////////////////////////////////////////////////////////////
        //                                PRIVATE METHODS
        ///////////////////////////////////////////////////////////////////////////////
        private function createRadioButtons(collection:Array):void
        {
            var button:RadioButton;
            for each ( var item:Object in collection )
            {
                button = new RadioButton(this, item.x, item.y, item.title, item.selected, handleRadioClick);
                button.name     = item.name;
            }
        }
        private function createButtons(collection:Array):void
        {
            var button:PushButton;
            for each ( var item:Object in collection )
            {
                button = new PushButton(this, item.x, item.y, item.title);
                button.width     = item.width;
                button.name     = item.name;
                
                button.addEventListener(MouseEvent.MOUSE_OVER,handleMouseOver,false,0,true);
            }
        }
        
        ///////////////////////////////////////////////////////////////////////////////
        //                                HANDLERS
        ///////////////////////////////////////////////////////////////////////////////
        private function handleMouseOver(event:MouseEvent):void
        {
            var target:InteractiveObject = event.currentTarget as InteractiveObject;
            switch(target.name)
            {
                case "tl":
                    _toolTip = new ToolTip(new com.novelastudios.ui.strategies.ToolTipTweenStrategy);
                    _toolTip.align              = "center";
                    _toolTip.cornerRadius      = 0;
                    _toolTip.hook             = false;
                    _toolTip.autoSize          = false;
                    _toolTip.placement         = "bottom";
                    _toolTip.show( target, "Simple Tip", "Align Center, Hook Enabled, <i>Width Defaults To 200px</i>, Square / Corner Radius 0" );
                break;
            }
        }
        private function handleRadioClick(event:MouseEvent):void
        {
            var target:InteractiveObject = event.currentTarget as InteractiveObject;
            switch(target.name)
            {
                case "TweenLite":
                    _label.text = "TweenLibrary: "+"Greensock TweenLite";
                    _toolTip.tweenStrategy = new com.novelastudios.ui.strategies.ToolTipTweenStrategy;
                break;
                
                case "None":
                    _label.text = "TweenLibrary: "+"none";
                    _toolTip.tweenStrategy = null;
                break;
                
                case "Tween":
                    _label.text = "TweenLibrary: "+"fl.transitions.Tween";
                    _toolTip.tweenStrategy = new com.hybrid.ui.strategies.ToolTipTweenStrategy;
                break;
            }    
        }
    }
}