home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Darbas / kidoz_v1.air / kidoz.swf / scripts / mx / containers / Panel.as < prev    next >
Encoding:
Text File  |  2009-05-06  |  33.6 KB  |  977 lines

  1. package mx.containers
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.display.Graphics;
  5.    import flash.events.Event;
  6.    import flash.events.MouseEvent;
  7.    import flash.geom.Rectangle;
  8.    import flash.text.TextLineMetrics;
  9.    import flash.utils.getQualifiedClassName;
  10.    import mx.automation.IAutomationObject;
  11.    import mx.containers.utilityClasses.BoxLayout;
  12.    import mx.containers.utilityClasses.CanvasLayout;
  13.    import mx.containers.utilityClasses.ConstraintColumn;
  14.    import mx.containers.utilityClasses.ConstraintRow;
  15.    import mx.containers.utilityClasses.IConstraintLayout;
  16.    import mx.containers.utilityClasses.Layout;
  17.    import mx.controls.Button;
  18.    import mx.core.Container;
  19.    import mx.core.ContainerLayout;
  20.    import mx.core.EdgeMetrics;
  21.    import mx.core.EventPriority;
  22.    import mx.core.FlexVersion;
  23.    import mx.core.IFlexDisplayObject;
  24.    import mx.core.IFlexModuleFactory;
  25.    import mx.core.IFontContextComponent;
  26.    import mx.core.IUIComponent;
  27.    import mx.core.IUITextField;
  28.    import mx.core.UIComponent;
  29.    import mx.core.UIComponentCachePolicy;
  30.    import mx.core.UITextField;
  31.    import mx.core.UITextFormat;
  32.    import mx.core.mx_internal;
  33.    import mx.effects.EffectManager;
  34.    import mx.events.CloseEvent;
  35.    import mx.events.SandboxMouseEvent;
  36.    import mx.styles.ISimpleStyleClient;
  37.    import mx.styles.IStyleClient;
  38.    import mx.styles.StyleProxy;
  39.    
  40.    use namespace mx_internal;
  41.    
  42.    public class Panel extends Container implements IConstraintLayout, IFontContextComponent
  43.    {
  44.       mx_internal static var createAccessibilityImplementation:Function;
  45.       
  46.       mx_internal static const VERSION:String = "3.2.0.3958";
  47.       
  48.       private static const HEADER_PADDING:Number = 14;
  49.       
  50.       private static var _closeButtonStyleFilters:Object = {
  51.          "closeButtonUpSkin":"closeButtonUpSkin",
  52.          "closeButtonOverSkin":"closeButtonOverSkin",
  53.          "closeButtonDownSkin":"closeButtonDownSkin",
  54.          "closeButtonDisabledSkin":"closeButtonDisabledSkin",
  55.          "closeButtonSkin":"closeButtonSkin",
  56.          "repeatDelay":"repeatDelay",
  57.          "repeatInterval":"repeatInterval"
  58.       };
  59.       
  60.       private var layoutObject:Layout;
  61.       
  62.       private var _status:String = "";
  63.       
  64.       private var _titleChanged:Boolean = false;
  65.       
  66.       mx_internal var titleBarBackground:IFlexDisplayObject;
  67.       
  68.       private var regX:Number;
  69.       
  70.       private var regY:Number;
  71.       
  72.       private var _layout:String = "vertical";
  73.       
  74.       mx_internal var closeButton:Button;
  75.       
  76.       private var initializing:Boolean = true;
  77.       
  78.       private var _title:String = "";
  79.       
  80.       protected var titleTextField:IUITextField;
  81.       
  82.       private var _statusChanged:Boolean = false;
  83.       
  84.       private var autoSetRoundedCorners:Boolean;
  85.       
  86.       private var _titleIcon:Class;
  87.       
  88.       private var _constraintRows:Array = [];
  89.       
  90.       protected var controlBar:IUIComponent;
  91.       
  92.       mx_internal var titleIconObject:Object = null;
  93.       
  94.       protected var titleBar:UIComponent;
  95.       
  96.       private var panelViewMetrics:EdgeMetrics;
  97.       
  98.       private var _constraintColumns:Array = [];
  99.       
  100.       mx_internal var _showCloseButton:Boolean = false;
  101.       
  102.       private var checkedForAutoSetRoundedCorners:Boolean;
  103.       
  104.       private var _titleIconChanged:Boolean = false;
  105.       
  106.       protected var statusTextField:IUITextField;
  107.       
  108.       public function Panel()
  109.       {
  110.          super();
  111.          addEventListener("resizeStart",EffectManager.mx_internal::eventHandler,false,EventPriority.EFFECT);
  112.          addEventListener("resizeEnd",EffectManager.mx_internal::eventHandler,false,EventPriority.EFFECT);
  113.          layoutObject = new BoxLayout();
  114.          layoutObject.target = this;
  115.          showInAutomationHierarchy = true;
  116.       }
  117.       
  118.       private function systemManager_mouseUpHandler(param1:MouseEvent) : void
  119.       {
  120.          if(!isNaN(regX))
  121.          {
  122.             stopDragging();
  123.          }
  124.       }
  125.       
  126.       mx_internal function getHeaderHeightProxy() : Number
  127.       {
  128.          return getHeaderHeight();
  129.       }
  130.       
  131.       override public function getChildIndex(param1:DisplayObject) : int
  132.       {
  133.          if(Boolean(controlBar) && param1 == controlBar)
  134.          {
  135.             return numChildren;
  136.          }
  137.          return super.getChildIndex(param1);
  138.       }
  139.       
  140.       mx_internal function get _controlBar() : IUIComponent
  141.       {
  142.          return controlBar;
  143.       }
  144.       
  145.       mx_internal function getTitleBar() : UIComponent
  146.       {
  147.          return titleBar;
  148.       }
  149.       
  150.       [Bindable("layoutChanged")]
  151.       public function get layout() : String
  152.       {
  153.          return _layout;
  154.       }
  155.       
  156.       override protected function createChildren() : void
  157.       {
  158.          var _loc1_:Class = null;
  159.          var _loc2_:IStyleClient = null;
  160.          var _loc3_:ISimpleStyleClient = null;
  161.          super.createChildren();
  162.          if(!titleBar)
  163.          {
  164.             titleBar = new UIComponent();
  165.             titleBar.visible = false;
  166.             titleBar.addEventListener(MouseEvent.MOUSE_DOWN,titleBar_mouseDownHandler);
  167.             rawChildren.addChild(titleBar);
  168.          }
  169.          if(!mx_internal::titleBarBackground)
  170.          {
  171.             _loc1_ = getStyle("titleBackgroundSkin");
  172.             if(_loc1_)
  173.             {
  174.                mx_internal::titleBarBackground = new _loc1_();
  175.                _loc2_ = mx_internal::titleBarBackground as IStyleClient;
  176.                if(_loc2_)
  177.                {
  178.                   _loc2_.setStyle("backgroundImage",undefined);
  179.                }
  180.                _loc3_ = mx_internal::titleBarBackground as ISimpleStyleClient;
  181.                if(_loc3_)
  182.                {
  183.                   _loc3_.styleName = this;
  184.                }
  185.                titleBar.addChild(DisplayObject(mx_internal::titleBarBackground));
  186.             }
  187.          }
  188.          mx_internal::createTitleTextField(-1);
  189.          mx_internal::createStatusTextField(-1);
  190.          if(!mx_internal::closeButton)
  191.          {
  192.             mx_internal::closeButton = new Button();
  193.             mx_internal::closeButton.styleName = new StyleProxy(this,closeButtonStyleFilters);
  194.             mx_internal::closeButton.mx_internal::upSkinName = "closeButtonUpSkin";
  195.             mx_internal::closeButton.mx_internal::overSkinName = "closeButtonOverSkin";
  196.             mx_internal::closeButton.mx_internal::downSkinName = "closeButtonDownSkin";
  197.             mx_internal::closeButton.mx_internal::disabledSkinName = "closeButtonDisabledSkin";
  198.             mx_internal::closeButton.mx_internal::skinName = "closeButtonSkin";
  199.             mx_internal::closeButton.explicitWidth = mx_internal::closeButton.explicitHeight = 16;
  200.             mx_internal::closeButton.focusEnabled = false;
  201.             mx_internal::closeButton.visible = false;
  202.             mx_internal::closeButton.enabled = enabled;
  203.             mx_internal::closeButton.addEventListener(MouseEvent.CLICK,closeButton_clickHandler);
  204.             titleBar.addChild(mx_internal::closeButton);
  205.             mx_internal::closeButton.owner = this;
  206.          }
  207.       }
  208.       
  209.       public function get constraintColumns() : Array
  210.       {
  211.          return _constraintColumns;
  212.       }
  213.       
  214.       override public function set cacheAsBitmap(param1:Boolean) : void
  215.       {
  216.          super.cacheAsBitmap = param1;
  217.          if(cacheAsBitmap && !mx_internal::contentPane && cachePolicy != UIComponentCachePolicy.OFF && getStyle("backgroundColor"))
  218.          {
  219.             mx_internal::createContentPane();
  220.             invalidateDisplayList();
  221.          }
  222.       }
  223.       
  224.       override public function createComponentsFromDescriptors(param1:Boolean = true) : void
  225.       {
  226.          var _loc3_:Object = null;
  227.          super.createComponentsFromDescriptors();
  228.          if(numChildren == 0)
  229.          {
  230.             setControlBar(null);
  231.             return;
  232.          }
  233.          var _loc2_:IUIComponent = IUIComponent(getChildAt(numChildren - 1));
  234.          if(_loc2_ is ControlBar)
  235.          {
  236.             _loc3_ = _loc2_.document;
  237.             if(mx_internal::contentPane)
  238.             {
  239.                mx_internal::contentPane.removeChild(DisplayObject(_loc2_));
  240.             }
  241.             else
  242.             {
  243.                removeChild(DisplayObject(_loc2_));
  244.             }
  245.             _loc2_.document = _loc3_;
  246.             rawChildren.addChild(DisplayObject(_loc2_));
  247.             setControlBar(_loc2_);
  248.          }
  249.          else
  250.          {
  251.             setControlBar(null);
  252.          }
  253.       }
  254.       
  255.       override protected function layoutChrome(param1:Number, param2:Number) : void
  256.       {
  257.          var _loc9_:Number = NaN;
  258.          var _loc10_:Graphics = null;
  259.          var _loc11_:Number = NaN;
  260.          var _loc12_:Number = NaN;
  261.          var _loc13_:Number = NaN;
  262.          var _loc14_:Number = NaN;
  263.          var _loc15_:Number = NaN;
  264.          var _loc16_:Number = NaN;
  265.          var _loc17_:Number = NaN;
  266.          var _loc18_:Number = NaN;
  267.          var _loc19_:Number = NaN;
  268.          var _loc20_:Number = NaN;
  269.          var _loc21_:Number = NaN;
  270.          super.layoutChrome(param1,param2);
  271.          var _loc3_:EdgeMetrics = EdgeMetrics.EMPTY;
  272.          var _loc4_:Number = getStyle("borderThickness");
  273.          if(getQualifiedClassName(mx_internal::border) == "mx.skins.halo::PanelSkin" && getStyle("borderStyle") != "default" && Boolean(_loc4_))
  274.          {
  275.             _loc3_ = new EdgeMetrics(_loc4_,_loc4_,_loc4_,_loc4_);
  276.          }
  277.          var _loc5_:EdgeMetrics = FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0 ? borderMetrics : _loc3_;
  278.          var _loc6_:Number = _loc5_.left;
  279.          var _loc7_:Number = _loc5_.top;
  280.          var _loc8_:Number = getHeaderHeight();
  281.          if(_loc8_ > 0 && height >= _loc8_)
  282.          {
  283.             _loc9_ = param1 - _loc5_.left - _loc5_.right;
  284.             showTitleBar(true);
  285.             titleBar.mouseChildren = true;
  286.             titleBar.mouseEnabled = true;
  287.             _loc10_ = titleBar.graphics;
  288.             _loc10_.clear();
  289.             _loc10_.beginFill(16777215,0);
  290.             _loc10_.drawRect(0,0,_loc9_,_loc8_);
  291.             _loc10_.endFill();
  292.             titleBar.move(_loc6_,_loc7_);
  293.             titleBar.setActualSize(_loc9_,_loc8_);
  294.             mx_internal::titleBarBackground.move(0,0);
  295.             IFlexDisplayObject(mx_internal::titleBarBackground).setActualSize(_loc9_,_loc8_);
  296.             mx_internal::closeButton.visible = mx_internal::_showCloseButton;
  297.             if(mx_internal::_showCloseButton)
  298.             {
  299.                mx_internal::closeButton.setActualSize(mx_internal::closeButton.getExplicitOrMeasuredWidth(),mx_internal::closeButton.getExplicitOrMeasuredHeight());
  300.                mx_internal::closeButton.move(param1 - _loc6_ - _loc5_.right - 10 - mx_internal::closeButton.getExplicitOrMeasuredWidth(),(_loc8_ - mx_internal::closeButton.getExplicitOrMeasuredHeight()) / 2);
  301.             }
  302.             _loc11_ = 10;
  303.             _loc12_ = 10;
  304.             if(mx_internal::titleIconObject)
  305.             {
  306.                _loc13_ = Number(mx_internal::titleIconObject.height);
  307.                _loc14_ = (_loc8_ - _loc13_) / 2;
  308.                mx_internal::titleIconObject.move(_loc11_,_loc14_);
  309.                _loc11_ += mx_internal::titleIconObject.width + 4;
  310.             }
  311.             if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  312.             {
  313.                _loc13_ = titleTextField.nonZeroTextHeight;
  314.             }
  315.             else
  316.             {
  317.                _loc13_ = titleTextField.getUITextFormat().measureText(titleTextField.text).height;
  318.             }
  319.             _loc14_ = (_loc8_ - _loc13_) / 2;
  320.             _loc15_ = _loc5_.left + _loc5_.right;
  321.             titleTextField.move(_loc11_,_loc14_ - 1);
  322.             titleTextField.setActualSize(Math.max(0,param1 - _loc11_ - _loc12_ - _loc15_),_loc13_ + UITextField.mx_internal::TEXT_HEIGHT_PADDING);
  323.             if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  324.             {
  325.                _loc13_ = statusTextField.textHeight;
  326.             }
  327.             else
  328.             {
  329.                _loc13_ = statusTextField.text != "" ? statusTextField.getUITextFormat().measureText(statusTextField.text).height : 0;
  330.             }
  331.             _loc14_ = (_loc8_ - _loc13_) / 2;
  332.             _loc16_ = param1 - _loc12_ - 4 - _loc15_ - statusTextField.textWidth;
  333.             if(mx_internal::_showCloseButton)
  334.             {
  335.                _loc16_ -= mx_internal::closeButton.getExplicitOrMeasuredWidth() + 4;
  336.             }
  337.             statusTextField.move(_loc16_,_loc14_ - 1);
  338.             statusTextField.setActualSize(statusTextField.textWidth + 8,statusTextField.textHeight + UITextField.mx_internal::TEXT_HEIGHT_PADDING);
  339.             _loc17_ = titleTextField.x + titleTextField.textWidth + 8;
  340.             if(statusTextField.x < _loc17_)
  341.             {
  342.                statusTextField.width = Math.max(statusTextField.width - (_loc17_ - statusTextField.x),0);
  343.                statusTextField.x = _loc17_;
  344.             }
  345.          }
  346.          else if(titleBar)
  347.          {
  348.             showTitleBar(false);
  349.             titleBar.mouseChildren = false;
  350.             titleBar.mouseEnabled = false;
  351.          }
  352.          if(controlBar)
  353.          {
  354.             _loc18_ = Number(controlBar.x);
  355.             _loc19_ = Number(controlBar.y);
  356.             _loc20_ = Number(controlBar.width);
  357.             _loc21_ = Number(controlBar.height);
  358.             controlBar.setActualSize(param1 - (_loc5_.left + _loc5_.right),controlBar.getExplicitOrMeasuredHeight());
  359.             controlBar.move(_loc5_.left,param2 - _loc5_.bottom - controlBar.getExplicitOrMeasuredHeight());
  360.             if(controlBar.includeInLayout)
  361.             {
  362.                controlBar.visible = controlBar.y >= _loc5_.top;
  363.             }
  364.             if(_loc18_ != controlBar.x || _loc19_ != controlBar.y || _loc20_ != controlBar.width || _loc21_ != controlBar.height)
  365.             {
  366.                invalidateDisplayList();
  367.             }
  368.          }
  369.       }
  370.       
  371.       public function set layout(param1:String) : void
  372.       {
  373.          if(_layout != param1)
  374.          {
  375.             _layout = param1;
  376.             if(layoutObject)
  377.             {
  378.                layoutObject.target = null;
  379.             }
  380.             if(_layout == ContainerLayout.ABSOLUTE)
  381.             {
  382.                layoutObject = new CanvasLayout();
  383.             }
  384.             else
  385.             {
  386.                layoutObject = new BoxLayout();
  387.                if(_layout == ContainerLayout.VERTICAL)
  388.                {
  389.                   BoxLayout(layoutObject).direction = BoxDirection.VERTICAL;
  390.                }
  391.                else
  392.                {
  393.                   BoxLayout(layoutObject).direction = BoxDirection.HORIZONTAL;
  394.                }
  395.             }
  396.             if(layoutObject)
  397.             {
  398.                layoutObject.target = this;
  399.             }
  400.             invalidateSize();
  401.             invalidateDisplayList();
  402.             dispatchEvent(new Event("layoutChanged"));
  403.          }
  404.       }
  405.       
  406.       public function get constraintRows() : Array
  407.       {
  408.          return _constraintRows;
  409.       }
  410.       
  411.       [Bindable("titleChanged")]
  412.       public function get title() : String
  413.       {
  414.          return _title;
  415.       }
  416.       
  417.       mx_internal function getTitleTextField() : IUITextField
  418.       {
  419.          return titleTextField;
  420.       }
  421.       
  422.       mx_internal function createStatusTextField(param1:int) : void
  423.       {
  424.          var _loc2_:String = null;
  425.          if(Boolean(titleBar) && !statusTextField)
  426.          {
  427.             statusTextField = IUITextField(createInFontContext(UITextField));
  428.             statusTextField.selectable = false;
  429.             if(param1 == -1)
  430.             {
  431.                titleBar.addChild(DisplayObject(statusTextField));
  432.             }
  433.             else
  434.             {
  435.                titleBar.addChildAt(DisplayObject(statusTextField),param1);
  436.             }
  437.             _loc2_ = getStyle("statusStyleName");
  438.             statusTextField.styleName = _loc2_;
  439.             statusTextField.text = status;
  440.             statusTextField.enabled = enabled;
  441.          }
  442.       }
  443.       
  444.       public function get fontContext() : IFlexModuleFactory
  445.       {
  446.          return moduleFactory;
  447.       }
  448.       
  449.       override protected function measure() : void
  450.       {
  451.          var _loc6_:Number = NaN;
  452.          super.measure();
  453.          layoutObject.measure();
  454.          var _loc1_:Rectangle = measureHeaderText();
  455.          var _loc2_:Number = _loc1_.width;
  456.          var _loc3_:Number = _loc1_.height;
  457.          var _loc4_:EdgeMetrics = FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0 ? borderMetrics : EdgeMetrics.EMPTY;
  458.          _loc2_ += _loc4_.left + _loc4_.right;
  459.          var _loc5_:Number = 5;
  460.          _loc2_ += _loc5_ * 2;
  461.          if(mx_internal::titleIconObject)
  462.          {
  463.             _loc2_ += mx_internal::titleIconObject.width;
  464.          }
  465.          if(mx_internal::closeButton)
  466.          {
  467.             _loc2_ += mx_internal::closeButton.getExplicitOrMeasuredWidth() + 6;
  468.          }
  469.          measuredMinWidth = Math.max(_loc2_,measuredMinWidth);
  470.          measuredWidth = Math.max(_loc2_,measuredWidth);
  471.          if(Boolean(controlBar) && Boolean(controlBar.includeInLayout))
  472.          {
  473.             _loc6_ = controlBar.getExplicitOrMeasuredWidth() + _loc4_.left + _loc4_.right;
  474.             measuredWidth = Math.max(measuredWidth,_loc6_);
  475.          }
  476.       }
  477.       
  478.       mx_internal function getControlBar() : IUIComponent
  479.       {
  480.          return controlBar;
  481.       }
  482.       
  483.       override public function get viewMetrics() : EdgeMetrics
  484.       {
  485.          var _loc2_:EdgeMetrics = null;
  486.          var _loc3_:Number = NaN;
  487.          var _loc4_:Number = NaN;
  488.          var _loc5_:Number = NaN;
  489.          var _loc6_:Number = NaN;
  490.          var _loc7_:Number = NaN;
  491.          var _loc8_:Number = NaN;
  492.          var _loc1_:EdgeMetrics = super.viewMetrics;
  493.          if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  494.          {
  495.             if(!panelViewMetrics)
  496.             {
  497.                panelViewMetrics = new EdgeMetrics(0,0,0,0);
  498.             }
  499.             _loc1_ = panelViewMetrics;
  500.             _loc2_ = super.viewMetrics;
  501.             _loc3_ = getStyle("borderThickness");
  502.             _loc4_ = getStyle("borderThicknessLeft");
  503.             _loc5_ = getStyle("borderThicknessTop");
  504.             _loc6_ = getStyle("borderThicknessRight");
  505.             _loc7_ = getStyle("borderThicknessBottom");
  506.             _loc1_.left = _loc2_.left + (isNaN(_loc4_) ? _loc3_ : _loc4_);
  507.             _loc1_.top = _loc2_.top + (isNaN(_loc5_) ? _loc3_ : _loc5_);
  508.             _loc1_.right = _loc2_.right + (isNaN(_loc6_) ? _loc3_ : _loc6_);
  509.             _loc1_.bottom = _loc2_.bottom + (isNaN(_loc7_) ? (Boolean(controlBar) && !isNaN(_loc5_) ? _loc5_ : (isNaN(_loc4_) ? _loc3_ : _loc4_)) : _loc7_);
  510.             _loc8_ = getHeaderHeight();
  511.             if(!isNaN(_loc8_))
  512.             {
  513.                _loc1_.top += _loc8_;
  514.             }
  515.             if(Boolean(controlBar) && Boolean(controlBar.includeInLayout))
  516.             {
  517.                _loc1_.bottom += controlBar.getExplicitOrMeasuredHeight();
  518.             }
  519.          }
  520.          return _loc1_;
  521.       }
  522.       
  523.       private function measureHeaderText() : Rectangle
  524.       {
  525.          var _loc3_:UITextFormat = null;
  526.          var _loc4_:TextLineMetrics = null;
  527.          var _loc1_:Number = 20;
  528.          var _loc2_:Number = 14;
  529.          if(Boolean(titleTextField) && Boolean(titleTextField.text))
  530.          {
  531.             titleTextField.validateNow();
  532.             _loc3_ = titleTextField.getUITextFormat();
  533.             _loc4_ = _loc3_.measureText(titleTextField.text,false);
  534.             _loc1_ = _loc4_.width;
  535.             _loc2_ = _loc4_.height;
  536.          }
  537.          if(Boolean(statusTextField) && Boolean(statusTextField.text))
  538.          {
  539.             statusTextField.validateNow();
  540.             _loc3_ = statusTextField.getUITextFormat();
  541.             _loc4_ = _loc3_.measureText(statusTextField.text,false);
  542.             _loc1_ = Math.max(_loc1_,_loc4_.width);
  543.             _loc2_ = Math.max(_loc2_,_loc4_.height);
  544.          }
  545.          return new Rectangle(0,0,Math.round(_loc1_),Math.round(_loc2_));
  546.       }
  547.       
  548.       mx_internal function createTitleTextField(param1:int) : void
  549.       {
  550.          var _loc2_:String = null;
  551.          if(!titleTextField)
  552.          {
  553.             titleTextField = IUITextField(createInFontContext(UITextField));
  554.             titleTextField.selectable = false;
  555.             if(param1 == -1)
  556.             {
  557.                titleBar.addChild(DisplayObject(titleTextField));
  558.             }
  559.             else
  560.             {
  561.                titleBar.addChildAt(DisplayObject(titleTextField),param1);
  562.             }
  563.             _loc2_ = getStyle("titleStyleName");
  564.             titleTextField.styleName = _loc2_;
  565.             titleTextField.text = title;
  566.             titleTextField.enabled = enabled;
  567.          }
  568.       }
  569.       
  570.       private function closeButton_clickHandler(param1:MouseEvent) : void
  571.       {
  572.          dispatchEvent(new CloseEvent(CloseEvent.CLOSE));
  573.       }
  574.       
  575.       private function setControlBar(param1:IUIComponent) : void
  576.       {
  577.          if(param1 == controlBar)
  578.          {
  579.             return;
  580.          }
  581.          controlBar = param1;
  582.          if(!checkedForAutoSetRoundedCorners)
  583.          {
  584.             checkedForAutoSetRoundedCorners = true;
  585.             autoSetRoundedCorners = !!styleDeclaration ? styleDeclaration.getStyle("roundedBottomCorners") === undefined : true;
  586.          }
  587.          if(autoSetRoundedCorners)
  588.          {
  589.             setStyle("roundedBottomCorners",controlBar != null);
  590.          }
  591.          var _loc2_:String = getStyle("controlBarStyleName");
  592.          if(Boolean(_loc2_) && controlBar is ISimpleStyleClient)
  593.          {
  594.             ISimpleStyleClient(controlBar).styleName = _loc2_;
  595.          }
  596.          if(controlBar)
  597.          {
  598.             controlBar.enabled = enabled;
  599.          }
  600.          if(controlBar is IAutomationObject)
  601.          {
  602.             IAutomationObject(controlBar).showInAutomationHierarchy = false;
  603.          }
  604.          mx_internal::invalidateViewMetricsAndPadding();
  605.          invalidateSize();
  606.          invalidateDisplayList();
  607.       }
  608.       
  609.       protected function get closeButtonStyleFilters() : Object
  610.       {
  611.          return _closeButtonStyleFilters;
  612.       }
  613.       
  614.       public function set constraintColumns(param1:Array) : void
  615.       {
  616.          var _loc2_:int = 0;
  617.          var _loc3_:int = 0;
  618.          if(param1 != _constraintColumns)
  619.          {
  620.             _loc2_ = int(param1.length);
  621.             _loc3_ = 0;
  622.             while(_loc3_ < _loc2_)
  623.             {
  624.                ConstraintColumn(param1[_loc3_]).container = this;
  625.                _loc3_++;
  626.             }
  627.             _constraintColumns = param1;
  628.             invalidateSize();
  629.             invalidateDisplayList();
  630.          }
  631.       }
  632.       
  633.       override public function set enabled(param1:Boolean) : void
  634.       {
  635.          super.enabled = param1;
  636.          if(titleTextField)
  637.          {
  638.             titleTextField.enabled = param1;
  639.          }
  640.          if(statusTextField)
  641.          {
  642.             statusTextField.enabled = param1;
  643.          }
  644.          if(controlBar)
  645.          {
  646.             controlBar.enabled = param1;
  647.          }
  648.          if(mx_internal::closeButton)
  649.          {
  650.             mx_internal::closeButton.enabled = param1;
  651.          }
  652.       }
  653.       
  654.       override public function get baselinePosition() : Number
  655.       {
  656.          if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  657.          {
  658.             return super.baselinePosition;
  659.          }
  660.          if(!mx_internal::validateBaselinePosition())
  661.          {
  662.             return NaN;
  663.          }
  664.          return titleBar.y + titleTextField.y + titleTextField.baselinePosition;
  665.       }
  666.       
  667.       protected function stopDragging() : void
  668.       {
  669.          var _loc1_:DisplayObject = systemManager.getSandboxRoot();
  670.          _loc1_.removeEventListener(MouseEvent.MOUSE_MOVE,systemManager_mouseMoveHandler,true);
  671.          _loc1_.removeEventListener(MouseEvent.MOUSE_UP,systemManager_mouseUpHandler,true);
  672.          _loc1_.removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE,stage_mouseLeaveHandler);
  673.          regX = NaN;
  674.          regY = NaN;
  675.          systemManager.deployMouseShields(false);
  676.       }
  677.       
  678.       private function titleBar_mouseDownHandler(param1:MouseEvent) : void
  679.       {
  680.          if(param1.target == mx_internal::closeButton)
  681.          {
  682.             return;
  683.          }
  684.          if(enabled && isPopUp && isNaN(regX))
  685.          {
  686.             startDragging(param1);
  687.          }
  688.       }
  689.       
  690.       override mx_internal function get usePadding() : Boolean
  691.       {
  692.          return layout != ContainerLayout.ABSOLUTE;
  693.       }
  694.       
  695.       override protected function initializeAccessibility() : void
  696.       {
  697.          if(Panel.mx_internal::createAccessibilityImplementation != null)
  698.          {
  699.             Panel.mx_internal::createAccessibilityImplementation(this);
  700.          }
  701.       }
  702.       
  703.       protected function getHeaderHeight() : Number
  704.       {
  705.          var _loc1_:Number = getStyle("headerHeight");
  706.          if(isNaN(_loc1_))
  707.          {
  708.             _loc1_ = measureHeaderText().height + HEADER_PADDING;
  709.          }
  710.          return _loc1_;
  711.       }
  712.       
  713.       public function set constraintRows(param1:Array) : void
  714.       {
  715.          var _loc2_:int = 0;
  716.          var _loc3_:int = 0;
  717.          if(param1 != _constraintRows)
  718.          {
  719.             _loc2_ = int(param1.length);
  720.             _loc3_ = 0;
  721.             while(_loc3_ < _loc2_)
  722.             {
  723.                ConstraintRow(param1[_loc3_]).container = this;
  724.                _loc3_++;
  725.             }
  726.             _constraintRows = param1;
  727.             invalidateSize();
  728.             invalidateDisplayList();
  729.          }
  730.       }
  731.       
  732.       public function set title(param1:String) : void
  733.       {
  734.          _title = param1;
  735.          _titleChanged = true;
  736.          invalidateProperties();
  737.          invalidateSize();
  738.          mx_internal::invalidateViewMetricsAndPadding();
  739.          dispatchEvent(new Event("titleChanged"));
  740.       }
  741.       
  742.       private function showTitleBar(param1:Boolean) : void
  743.       {
  744.          var _loc4_:DisplayObject = null;
  745.          titleBar.visible = param1;
  746.          var _loc2_:int = titleBar.numChildren;
  747.          var _loc3_:int = 0;
  748.          while(_loc3_ < _loc2_)
  749.          {
  750.             _loc4_ = titleBar.getChildAt(_loc3_);
  751.             _loc4_.visible = param1;
  752.             _loc3_++;
  753.          }
  754.       }
  755.       
  756.       override public function styleChanged(param1:String) : void
  757.       {
  758.          var _loc3_:String = null;
  759.          var _loc4_:String = null;
  760.          var _loc5_:String = null;
  761.          var _loc6_:Class = null;
  762.          var _loc7_:IStyleClient = null;
  763.          var _loc8_:ISimpleStyleClient = null;
  764.          var _loc2_:Boolean = !param1 || param1 == "styleName";
  765.          super.styleChanged(param1);
  766.          if(_loc2_ || param1 == "titleStyleName")
  767.          {
  768.             if(titleTextField)
  769.             {
  770.                _loc3_ = getStyle("titleStyleName");
  771.                titleTextField.styleName = _loc3_;
  772.             }
  773.          }
  774.          if(_loc2_ || param1 == "statusStyleName")
  775.          {
  776.             if(statusTextField)
  777.             {
  778.                _loc4_ = getStyle("statusStyleName");
  779.                statusTextField.styleName = _loc4_;
  780.             }
  781.          }
  782.          if(_loc2_ || param1 == "controlBarStyleName")
  783.          {
  784.             if(Boolean(controlBar) && controlBar is ISimpleStyleClient)
  785.             {
  786.                _loc5_ = getStyle("controlBarStyleName");
  787.                ISimpleStyleClient(controlBar).styleName = _loc5_;
  788.             }
  789.          }
  790.          if(_loc2_ || param1 == "titleBackgroundSkin")
  791.          {
  792.             if(titleBar)
  793.             {
  794.                _loc6_ = getStyle("titleBackgroundSkin");
  795.                if(_loc6_)
  796.                {
  797.                   if(mx_internal::titleBarBackground)
  798.                   {
  799.                      titleBar.removeChild(DisplayObject(mx_internal::titleBarBackground));
  800.                      mx_internal::titleBarBackground = null;
  801.                   }
  802.                   mx_internal::titleBarBackground = new _loc6_();
  803.                   _loc7_ = mx_internal::titleBarBackground as IStyleClient;
  804.                   if(_loc7_)
  805.                   {
  806.                      _loc7_.setStyle("backgroundImage",undefined);
  807.                   }
  808.                   _loc8_ = mx_internal::titleBarBackground as ISimpleStyleClient;
  809.                   if(_loc8_)
  810.                   {
  811.                      _loc8_.styleName = this;
  812.                   }
  813.                   titleBar.addChildAt(DisplayObject(mx_internal::titleBarBackground),0);
  814.                }
  815.             }
  816.          }
  817.       }
  818.       
  819.       mx_internal function getStatusTextField() : IUITextField
  820.       {
  821.          return statusTextField;
  822.       }
  823.       
  824.       public function set fontContext(param1:IFlexModuleFactory) : void
  825.       {
  826.          this.moduleFactory = param1;
  827.       }
  828.       
  829.       override protected function commitProperties() : void
  830.       {
  831.          var _loc1_:int = 0;
  832.          super.commitProperties();
  833.          if(hasFontContextChanged())
  834.          {
  835.             if(titleTextField)
  836.             {
  837.                _loc1_ = titleBar.getChildIndex(DisplayObject(titleTextField));
  838.                mx_internal::removeTitleTextField();
  839.                mx_internal::createTitleTextField(_loc1_);
  840.                _titleChanged = true;
  841.             }
  842.             if(statusTextField)
  843.             {
  844.                _loc1_ = titleBar.getChildIndex(DisplayObject(statusTextField));
  845.                mx_internal::removeStatusTextField();
  846.                mx_internal::createStatusTextField(_loc1_);
  847.                _statusChanged = true;
  848.             }
  849.          }
  850.          if(_titleChanged)
  851.          {
  852.             _titleChanged = false;
  853.             titleTextField.text = _title;
  854.             if(initialized)
  855.             {
  856.                layoutChrome(unscaledWidth,unscaledHeight);
  857.             }
  858.          }
  859.          if(_titleIconChanged)
  860.          {
  861.             _titleIconChanged = false;
  862.             if(mx_internal::titleIconObject)
  863.             {
  864.                titleBar.removeChild(DisplayObject(mx_internal::titleIconObject));
  865.                mx_internal::titleIconObject = null;
  866.             }
  867.             if(_titleIcon)
  868.             {
  869.                mx_internal::titleIconObject = new _titleIcon();
  870.                titleBar.addChild(DisplayObject(mx_internal::titleIconObject));
  871.             }
  872.             if(initialized)
  873.             {
  874.                layoutChrome(unscaledWidth,unscaledHeight);
  875.             }
  876.          }
  877.          if(_statusChanged)
  878.          {
  879.             _statusChanged = false;
  880.             statusTextField.text = _status;
  881.             if(initialized)
  882.             {
  883.                layoutChrome(unscaledWidth,unscaledHeight);
  884.             }
  885.          }
  886.       }
  887.       
  888.       protected function startDragging(param1:MouseEvent) : void
  889.       {
  890.          regX = param1.stageX - x;
  891.          regY = param1.stageY - y;
  892.          var _loc2_:DisplayObject = systemManager.getSandboxRoot();
  893.          _loc2_.addEventListener(MouseEvent.MOUSE_MOVE,systemManager_mouseMoveHandler,true);
  894.          _loc2_.addEventListener(MouseEvent.MOUSE_UP,systemManager_mouseUpHandler,true);
  895.          _loc2_.addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE,stage_mouseLeaveHandler);
  896.          systemManager.deployMouseShields(true);
  897.       }
  898.       
  899.       mx_internal function removeStatusTextField() : void
  900.       {
  901.          if(Boolean(titleBar) && Boolean(statusTextField))
  902.          {
  903.             titleBar.removeChild(DisplayObject(statusTextField));
  904.             statusTextField = null;
  905.          }
  906.       }
  907.       
  908.       private function stage_mouseLeaveHandler(param1:Event) : void
  909.       {
  910.          if(!isNaN(regX))
  911.          {
  912.             stopDragging();
  913.          }
  914.       }
  915.       
  916.       public function set status(param1:String) : void
  917.       {
  918.          _status = param1;
  919.          _statusChanged = true;
  920.          invalidateProperties();
  921.          dispatchEvent(new Event("statusChanged"));
  922.       }
  923.       
  924.       [Bindable("titleIconChanged")]
  925.       public function get titleIcon() : Class
  926.       {
  927.          return _titleIcon;
  928.       }
  929.       
  930.       [Bindable("statusChanged")]
  931.       public function get status() : String
  932.       {
  933.          return _status;
  934.       }
  935.       
  936.       private function systemManager_mouseMoveHandler(param1:MouseEvent) : void
  937.       {
  938.          param1.stopImmediatePropagation();
  939.          if(isNaN(regX) || isNaN(regY))
  940.          {
  941.             return;
  942.          }
  943.          move(param1.stageX - regX,param1.stageY - regY);
  944.       }
  945.       
  946.       override protected function updateDisplayList(param1:Number, param2:Number) : void
  947.       {
  948.          super.updateDisplayList(param1,param2);
  949.          layoutObject.updateDisplayList(param1,param2);
  950.          if(mx_internal::border)
  951.          {
  952.             mx_internal::border.visible = true;
  953.          }
  954.          titleBar.visible = true;
  955.       }
  956.       
  957.       mx_internal function removeTitleTextField() : void
  958.       {
  959.          if(Boolean(titleBar) && Boolean(titleTextField))
  960.          {
  961.             titleBar.removeChild(DisplayObject(titleTextField));
  962.             titleTextField = null;
  963.          }
  964.       }
  965.       
  966.       public function set titleIcon(param1:Class) : void
  967.       {
  968.          _titleIcon = param1;
  969.          _titleIconChanged = true;
  970.          invalidateProperties();
  971.          invalidateSize();
  972.          dispatchEvent(new Event("titleIconChanged"));
  973.       }
  974.    }
  975. }
  976.  
  977.