package com.hybrid.ui { import fl.transitions.*; import fl.transitions.easing.*; import flash.display.*; import flash.events.*; import flash.filters.*; import flash.geom.*; import flash.text.*; import flash.utils.*; public class ToolTip extends flash.display.Sprite { public function ToolTip() { this._contentContainer = new flash.display.Sprite(); this._bgColors = [3355443, 0]; super(); this.mouseEnabled = false; this.buttonMode = false; this.mouseChildren = false; this._timer = new flash.utils.Timer(this._delay, 1); this._timer.addEventListener("timer", this.timerHandler); return; } public function setContent(arg1:String, arg2:String=null):void { this.graphics.clear(); this.addCopy(arg1, arg2); this.setOffset(); this.drawBG(); return; } public function show(arg1:flash.display.DisplayObject, arg2:String, arg3:String=null):void { this._stage = arg1.stage; this._parentObject = arg1; var loc1:*; if (!(loc1 = this.addedToStage(this._contentContainer))) { this.addChild(this._contentContainer); } this.addCopy(arg2, arg3); this.setOffset(); this.drawBG(); this.bgGlow(); var loc2:*; loc2 = new flash.geom.Point(this._parentObject.mouseX, this._parentObject.mouseY); var loc3:*; loc3 = arg1.localToGlobal(loc2); this.x = loc3.x + this._offSet; this.y = loc3.y - this.height - 10; this.alpha = 0; this._stage.addChild(this); this._parentObject.addEventListener(flash.events.MouseEvent.MOUSE_OUT, this.onMouseOut); this.follow(true); this._timer.start(); return; } public function hide():void { this.animate(false); return; } private function timerHandler(arg1:flash.events.TimerEvent):void { this.animate(true); return; } private function onMouseOut(arg1:flash.events.MouseEvent):void { arg1.currentTarget.removeEventListener(arg1.type, arguments.callee); this.hide(); return; } private function follow(arg1:Boolean):void { if (arg1) { addEventListener(flash.events.Event.ENTER_FRAME, this.eof); } else { removeEventListener(flash.events.Event.ENTER_FRAME, this.eof); } return; } private function eof(arg1:flash.events.Event):void { this.position(); return; } private function position():void { var loc1:*; loc1 = 3; var loc2:*; loc2 = new flash.geom.Point(this._parentObject.mouseX, this._parentObject.mouseY); var loc3:*; loc3 = this._parentObject.localToGlobal(loc2); var loc4:*; loc4 = loc3.x + this._offSet; var loc5:*; loc5 = loc3.y - this.height - 10; var loc6:*; if ((loc6 = this._defaultWidth + loc4) > stage.stageWidth) { loc4 = stage.stageWidth - this._defaultWidth; } if (loc4 < 0) { loc4 = 0; } if (loc5 < 0) { loc5 = 0; } this.x = this.x + (loc4 - this.x) / loc1; this.y = this.y + (loc5 - this.y) / loc1; return; } private function addCopy(arg1:String, arg2:String=null):void { var loc1:*; loc1 = null; var loc2:*; loc2 = NaN; if (this._tf == null) { this._tf = this.createField(this._titleEmbed); } if (this._styleOverride) { this._tf.styleSheet = this._stylesheet; } this._tf.htmlText = arg1; if (!this._styleOverride) { if (!this._titleOverride) { this.initTitleFormat(); } this._tf.setTextFormat(this._titleFormat); } var loc3:*; this._tf.y = loc3 = this._buffer; this._tf.x = loc3; this.textGlow(this._tf); this._contentContainer.addChild(this._tf); if (arg2 != null) { if (this._cf == null) { this._cf = this.createField(this._contentEmbed); } if (this._styleOverride) { this._cf.styleSheet = this._stylesheet; } this._cf.htmlText = arg2; if (!this._styleOverride) { if (!this._contentOverride) { this.initContentFormat(); } this._cf.setTextFormat(this._contentFormat); } loc1 = this.getBounds(this); this._cf.x = this._buffer; this._cf.y = this._tf.y + this._tf.textHeight; this.textGlow(this._cf); if (this._autoSize) { loc2 = this._cf.textWidth + 4 + this._buffer * 2; this._defaultWidth = loc2 > this._defaultWidthMax ? this._defaultWidthMax : loc2; } else { this._cf.width = this._defaultWidth - this._buffer * 2; } this._contentContainer.addChild(this._cf); } return; } private function createField(arg1:Boolean):flash.text.TextField { var loc1:*; loc1 = new flash.text.TextField(); loc1.embedFonts = arg1; loc1.gridFitType = "pixel"; loc1.antiAliasType = "advanced"; loc1.autoSize = flash.text.TextFieldAutoSize.LEFT; loc1.selectable = false; if (this._autoSize) { loc1.multiline = true; loc1.wordWrap = true; } return loc1; } private function drawBG():void { var loc9:*; loc9 = NaN; var loc10:*; loc10 = NaN; var loc11:*; loc11 = NaN; this.graphics.clear(); var loc1:*; loc1 = this.getBounds(this); var loc2:*; loc2 = isNaN(this._defaultHeight) ? loc1.height + this._buffer * 2 : this._defaultHeight; var loc3:*; loc3 = flash.display.GradientType.LINEAR; var loc4:*; loc4 = [this._bgAlpha, this._bgAlpha]; var loc5:*; loc5 = [0, 255]; var loc6:*; loc6 = new flash.geom.Matrix(); var loc7:*; loc7 = 90 * Math.PI / 180; loc6.createGradientBox(this._defaultWidth, loc2, loc7, 0, 0); var loc8:*; loc8 = flash.display.SpreadMethod.PAD; if (!isNaN(this._border)) { this.graphics.lineStyle(this._borderSize, this._border, 0.8, true); } this.graphics.beginGradientFill(loc3, this._bgColors, loc4, loc5, loc6, loc8); if (this._hookEnabled) { loc9 = 0; loc10 = 0; loc11 = this._defaultWidth; this.graphics.moveTo(loc9 + this._cornerRadius, loc10); this.graphics.lineTo(loc9 + loc11 - this._cornerRadius, loc10); this.graphics.curveTo(loc9 + loc11, loc10, loc9 + loc11, loc10 + this._cornerRadius); this.graphics.lineTo(loc9 + loc11, loc10 + loc2 - this._cornerRadius); this.graphics.curveTo(loc9 + loc11, loc10 + loc2, loc9 + loc11 - this._cornerRadius, loc10 + loc2); this.graphics.lineTo(loc9 + this._hookOffSet + this._hookSize, loc10 + loc2); this.graphics.lineTo(loc9 + this._hookOffSet, loc10 + loc2 + this._hookSize); this.graphics.lineTo(loc9 + this._hookOffSet - this._hookSize, loc10 + loc2); this.graphics.lineTo(loc9 + this._cornerRadius, loc10 + loc2); this.graphics.curveTo(loc9, loc10 + loc2, loc9, loc10 + loc2 - this._cornerRadius); this.graphics.lineTo(loc9, loc10 + this._cornerRadius); this.graphics.curveTo(loc9, loc10, loc9 + this._cornerRadius, loc10); this.graphics.endFill(); } else { this.graphics.drawRoundRect(0, 0, this._defaultWidth, loc2, this._cornerRadius); } return; } private function animate(arg1:Boolean):void { var loc1:*; loc1 = arg1 != true ? 0 : 1; if (!(this._tween == null) && this._tween.isPlaying) { this._tween.stop(); } this._tween = new fl.transitions.Tween(this, "alpha", fl.transitions.easing.Strong.easeOut, this.alpha, loc1, 0.5, true); if (!arg1) { this._tween.addEventListener(fl.transitions.TweenEvent.MOTION_FINISH, this.onComplete); this._timer.reset(); } return; } private function onComplete(arg1:fl.transitions.TweenEvent):void { arg1.currentTarget.removeEventListener(arg1.type, arguments.callee); this.cleanUp(); return; } public function set buffer(arg1:Number):void { this._buffer = arg1; return; } public function get buffer():Number { return this._buffer; } public function set bgAlpha(arg1:Number):void { this._bgAlpha = arg1; return; } public function get bgAlpha():Number { return this._bgAlpha; } public function set tipWidth(arg1:Number):void { this._defaultWidth = arg1; return; } public function set titleFormat(arg1:flash.text.TextFormat):void { this._titleFormat = arg1; if (this._titleFormat.font == null) { this._titleFormat.font = "_sans"; } this._titleOverride = true; return; } public function set contentFormat(arg1:flash.text.TextFormat):void { this._contentFormat = arg1; if (this._contentFormat.font == null) { this._contentFormat.font = "_sans"; } this._contentOverride = true; return; } public function set stylesheet(arg1:flash.text.StyleSheet):void { this._stylesheet = arg1; this._styleOverride = true; return; } public function set align(arg1:String):void { var loc1:*; loc1 = arg1.toLowerCase(); var loc2:*; loc2 = "right left center"; if (loc2.indexOf(arg1) == -1) { throw new Error(this + " : Invalid Align Property, options are: \'right\', \'left\' & \'center\'"); } this._align = loc1; return; } public function set delay(arg1:Number):void { this._delay = arg1; this._timer.delay = arg1; return; } public function set hook(arg1:Boolean):void { this._hookEnabled = arg1; return; } public function set hookSize(arg1:Number):void { this._hookSize = arg1; return; } public function set cornerRadius(arg1:Number):void { this._cornerRadius = arg1; return; } public function set colors(arg1:Array):void { this._bgColors = arg1; return; } public function set autoSize(arg1:Boolean):void { this._autoSize = arg1; return; } public function set border(arg1:Number):void { this._border = arg1; return; } public function set borderSize(arg1:Number):void { this._borderSize = arg1; return; } public function set tipHeight(arg1:Number):void { this._defaultHeight = arg1; return; } public function set titleEmbed(arg1:Boolean):void { this._titleEmbed = arg1; return; } public function set contentEmbed(arg1:Boolean):void { this._contentEmbed = arg1; return; } private function textGlow(arg1:flash.text.TextField):void { var loc1:*; loc1 = 0; var loc2:*; loc2 = 0.35; var loc3:*; loc3 = 2; var loc4:*; loc4 = 2; var loc5:*; loc5 = 1; var loc6:*; loc6 = false; var loc7:*; loc7 = false; var loc8:*; loc8 = flash.filters.BitmapFilterQuality.HIGH; var loc9:*; loc9 = new flash.filters.GlowFilter(loc1, loc2, loc3, loc4, loc5, loc8, loc6, loc7); var loc10:*; (loc10 = new Array()).push(loc9); arg1.filters = loc10; return; } private function bgGlow():void { var loc1:*; loc1 = 0; var loc2:*; loc2 = 0.2; var loc3:*; loc3 = 5; var loc4:*; loc4 = 5; var loc5:*; loc5 = 1; var loc6:*; loc6 = false; var loc7:*; loc7 = false; var loc8:*; loc8 = flash.filters.BitmapFilterQuality.HIGH; var loc9:*; loc9 = new flash.filters.GlowFilter(loc1, loc2, loc3, loc4, loc5, loc8, loc6, loc7); var loc10:*; (loc10 = new Array()).push(loc9); filters = loc10; return; } private function initTitleFormat():void { this._titleFormat = new flash.text.TextFormat(); this._titleFormat.font = "_sans"; this._titleFormat.bold = true; this._titleFormat.size = 18; this._titleFormat.color = 16777215; return; } private function initContentFormat():void { this._contentFormat = new flash.text.TextFormat(); this._contentFormat.font = "_sans"; this._contentFormat.bold = false; this._contentFormat.size = 12; this._contentFormat.color = 15658734; return; } private function addedToStage(arg1:flash.display.DisplayObject):Boolean { var loc1:*; loc1 = arg1.stage; return loc1 != null ? true : false; } private function setOffset():void { var loc1:*; loc1 = this._align; switch (loc1) { case "left": { this._offSet = -this._defaultWidth + this._buffer * 3 + this._hookSize; this._hookOffSet = this._defaultWidth - this._buffer * 3 - this._hookSize; break; } case "right": { this._offSet = 0 - this._buffer * 3 - this._hookSize; this._hookOffSet = this._buffer * 3 + this._hookSize; break; } case "center": { this._offSet = -this._defaultWidth / 2; this._hookOffSet = this._defaultWidth / 2; break; } default: { this._offSet = -this._defaultWidth / 2; this._hookOffSet = this._defaultWidth / 2; break; } } return; } private function cleanUp():void { this._parentObject.removeEventListener(flash.events.MouseEvent.MOUSE_OUT, this.onMouseOut); this.follow(false); this._tf.filters = []; this.filters = []; this._contentContainer.removeChild(this._tf); this._tf = null; if (this._cf != null) { this._cf.filters = []; this._contentContainer.removeChild(this._cf); } this.graphics.clear(); removeChild(this._contentContainer); parent.removeChild(this); return; } private var _stage:flash.display.Stage; private var _parentObject:flash.display.DisplayObject; private var _tf:flash.text.TextField; private var _cf:flash.text.TextField; private var _contentContainer:flash.display.Sprite; private var _tween:fl.transitions.Tween; private var _titleFormat:flash.text.TextFormat; private var _contentFormat:flash.text.TextFormat; private var _stylesheet:flash.text.StyleSheet; private var _styleOverride:Boolean=false; private var _titleOverride:Boolean=false; private var _contentOverride:Boolean=false; private var _titleEmbed:Boolean=false; private var _contentEmbed:Boolean=false; private var _defaultWidth:Number=320; private var _defaultWidthMax:Number=320; private var _defaultWidthTEMP:Number=320; private var _defaultHeight:Number; private var _buffer:Number=6; private var _align:String="center"; private var _cornerRadius:Number=12; private var _bgColors:Array; private var _autoSize:Boolean=true; private var _hookEnabled:Boolean=false; private var _delay:Number=0; private var _hookSize:Number=10; private var _border:Number; private var _borderSize:Number=1; private var _bgAlpha:Number=0.8; private var _offSet:Number; private var _hookOffSet:Number; private var _timer:flash.utils.Timer; } }