home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Puzzle / filler.swf / scripts / mx / controls / ToolTip.as < prev    next >
Text File  |  2008-09-02  |  5KB  |  168 lines

  1. package mx.controls
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.text.TextFieldAutoSize;
  5.    import flash.text.TextFormat;
  6.    import mx.core.EdgeMetrics;
  7.    import mx.core.IFlexDisplayObject;
  8.    import mx.core.IToolTip;
  9.    import mx.core.UIComponent;
  10.    import mx.core.UITextField;
  11.    import mx.core.mx_internal;
  12.    import mx.skins.RectangularBorder;
  13.    import mx.styles.ISimpleStyleClient;
  14.    
  15.    use namespace mx_internal;
  16.    
  17.    public class ToolTip extends UIComponent implements IToolTip
  18.    {
  19.       
  20.       mx_internal static const VERSION:String = "2.0.1.0";
  21.       
  22.       public static var maxWidth:Number = 300;
  23.        
  24.       
  25.       mx_internal var border:IFlexDisplayObject;
  26.       
  27.       private var textChanged:Boolean;
  28.       
  29.       private var _text:String;
  30.       
  31.       protected var textField:UITextField;
  32.       
  33.       public function ToolTip()
  34.       {
  35.          super();
  36.          mouseEnabled = false;
  37.       }
  38.       
  39.       mx_internal function getTextField() : UITextField
  40.       {
  41.          return textField;
  42.       }
  43.       
  44.       public function get text() : String
  45.       {
  46.          return _text;
  47.       }
  48.       
  49.       override protected function measure() : void
  50.       {
  51.          var _loc1_:EdgeMetrics = null;
  52.          var _loc2_:Number = NaN;
  53.          var _loc3_:Number = NaN;
  54.          var _loc4_:Number = NaN;
  55.          var _loc5_:Number = NaN;
  56.          var _loc6_:Number = NaN;
  57.          var _loc7_:Number = NaN;
  58.          super.measure();
  59.          _loc1_ = borderMetrics;
  60.          _loc2_ = _loc1_.left + getStyle("paddingLeft");
  61.          _loc3_ = _loc1_.top + getStyle("paddingTop");
  62.          _loc4_ = _loc1_.right + getStyle("paddingRight");
  63.          _loc5_ = _loc1_.bottom + getStyle("paddingBottom");
  64.          _loc6_ = _loc2_ + _loc4_;
  65.          _loc7_ = _loc3_ + _loc5_;
  66.          textField.wordWrap = false;
  67.          if(textField.textWidth + _loc6_ > ToolTip.maxWidth)
  68.          {
  69.             textField.width = ToolTip.maxWidth - _loc6_;
  70.             textField.wordWrap = true;
  71.          }
  72.          measuredWidth = textField.width + _loc6_;
  73.          measuredHeight = textField.height + _loc7_;
  74.       }
  75.       
  76.       override protected function commitProperties() : void
  77.       {
  78.          var _loc1_:TextFormat = null;
  79.          super.commitProperties();
  80.          if(textChanged)
  81.          {
  82.             _loc1_ = textField.getTextFormat();
  83.             _loc1_.leftMargin = 0;
  84.             _loc1_.rightMargin = 0;
  85.             textField.defaultTextFormat = _loc1_;
  86.             textField.text = _text;
  87.             textChanged = false;
  88.          }
  89.       }
  90.       
  91.       public function set text(param1:String) : void
  92.       {
  93.          _text = param1;
  94.          textChanged = true;
  95.          invalidateProperties();
  96.          invalidateSize();
  97.          invalidateDisplayList();
  98.       }
  99.       
  100.       override protected function createChildren() : void
  101.       {
  102.          var _loc1_:Class = null;
  103.          super.createChildren();
  104.          if(!mx_internal::border)
  105.          {
  106.             _loc1_ = getStyle("borderSkin");
  107.             border = new _loc1_();
  108.             if(mx_internal::border is ISimpleStyleClient)
  109.             {
  110.                ISimpleStyleClient(mx_internal::border).styleName = this;
  111.             }
  112.             addChild(DisplayObject(mx_internal::border));
  113.          }
  114.          if(!textField)
  115.          {
  116.             textField = new UITextField();
  117.             textField.autoSize = TextFieldAutoSize.LEFT;
  118.             textField.mouseEnabled = false;
  119.             textField.multiline = true;
  120.             textField.selectable = false;
  121.             textField.wordWrap = false;
  122.             textField.styleName = this;
  123.             addChild(textField);
  124.          }
  125.       }
  126.       
  127.       private function get borderMetrics() : EdgeMetrics
  128.       {
  129.          if(mx_internal::border is RectangularBorder)
  130.          {
  131.             return RectangularBorder(mx_internal::border).borderMetrics;
  132.          }
  133.          return EdgeMetrics.EMPTY;
  134.       }
  135.       
  136.       override public function styleChanged(param1:String) : void
  137.       {
  138.          super.styleChanged(param1);
  139.          if(param1 == "borderStyle" || param1 == "styleName" || param1 == null)
  140.          {
  141.             invalidateDisplayList();
  142.          }
  143.       }
  144.       
  145.       override protected function updateDisplayList(param1:Number, param2:Number) : void
  146.       {
  147.          var _loc3_:EdgeMetrics = null;
  148.          var _loc4_:Number = NaN;
  149.          var _loc5_:Number = NaN;
  150.          var _loc6_:Number = NaN;
  151.          var _loc7_:Number = NaN;
  152.          var _loc8_:Number = NaN;
  153.          var _loc9_:Number = NaN;
  154.          super.updateDisplayList(param1,param2);
  155.          _loc3_ = borderMetrics;
  156.          _loc4_ = _loc3_.left + getStyle("paddingLeft");
  157.          _loc5_ = _loc3_.top + getStyle("paddingTop");
  158.          _loc6_ = _loc3_.right + getStyle("paddingRight");
  159.          _loc7_ = _loc3_.bottom + getStyle("paddingBottom");
  160.          _loc8_ = _loc4_ + _loc6_;
  161.          _loc9_ = _loc5_ + _loc7_;
  162.          mx_internal::border.setActualSize(param1,param2);
  163.          textField.move(_loc4_,_loc5_);
  164.          textField.setActualSize(param1 - _loc8_,param2 - _loc9_);
  165.       }
  166.    }
  167. }
  168.