home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Puzzle / filler.swf / scripts / mx / containers / utilityClasses / BoxLayout.as < prev    next >
Encoding:
Text File  |  2008-09-02  |  10.5 KB  |  305 lines

  1. package mx.containers.utilityClasses
  2. {
  3.    import mx.containers.BoxDirection;
  4.    import mx.controls.scrollClasses.ScrollBar;
  5.    import mx.core.Container;
  6.    import mx.core.EdgeMetrics;
  7.    import mx.core.IUIComponent;
  8.    import mx.core.ScrollPolicy;
  9.    import mx.core.mx_internal;
  10.    
  11.    use namespace mx_internal;
  12.    
  13.    public class BoxLayout extends Layout
  14.    {
  15.       
  16.       mx_internal static const VERSION:String = "2.0.1.0";
  17.        
  18.       
  19.       public var direction:String = "vertical";
  20.       
  21.       public function BoxLayout()
  22.       {
  23.          direction = BoxDirection.VERTICAL;
  24.          super();
  25.       }
  26.       
  27.       private function isVertical() : Boolean
  28.       {
  29.          return direction != BoxDirection.HORIZONTAL;
  30.       }
  31.       
  32.       override public function measure() : void
  33.       {
  34.          var _loc1_:Container = null;
  35.          var _loc2_:Boolean = false;
  36.          var _loc3_:Number = NaN;
  37.          var _loc4_:Number = NaN;
  38.          var _loc5_:Number = NaN;
  39.          var _loc6_:Number = NaN;
  40.          var _loc7_:int = 0;
  41.          var _loc8_:int = 0;
  42.          var _loc9_:int = 0;
  43.          var _loc10_:Number = NaN;
  44.          var _loc11_:Number = NaN;
  45.          var _loc12_:IUIComponent = null;
  46.          var _loc13_:Number = NaN;
  47.          var _loc14_:Number = NaN;
  48.          _loc1_ = super.target;
  49.          _loc2_ = isVertical();
  50.          _loc3_ = 0;
  51.          _loc4_ = 0;
  52.          _loc5_ = 0;
  53.          _loc6_ = 0;
  54.          _loc8_ = _loc7_ = _loc1_.numChildren;
  55.          _loc9_ = 0;
  56.          while(_loc9_ < _loc7_)
  57.          {
  58.             if(!(_loc12_ = IUIComponent(_loc1_.getChildAt(_loc9_))).includeInLayout)
  59.             {
  60.                _loc8_--;
  61.             }
  62.             else
  63.             {
  64.                _loc13_ = _loc12_.getExplicitOrMeasuredWidth();
  65.                _loc14_ = _loc12_.getExplicitOrMeasuredHeight();
  66.                if(_loc2_)
  67.                {
  68.                   _loc3_ = Math.max(!isNaN(_loc12_.percentWidth) ? _loc12_.minWidth : _loc13_,_loc3_);
  69.                   _loc5_ = Math.max(_loc13_,_loc5_);
  70.                   _loc4_ += !isNaN(_loc12_.percentHeight) ? _loc12_.minHeight : _loc14_;
  71.                   _loc6_ += _loc14_;
  72.                }
  73.                else
  74.                {
  75.                   _loc3_ += !isNaN(_loc12_.percentWidth) ? _loc12_.minWidth : _loc13_;
  76.                   _loc5_ += _loc13_;
  77.                   _loc4_ = Math.max(!isNaN(_loc12_.percentHeight) ? _loc12_.minHeight : _loc14_,_loc4_);
  78.                   _loc6_ = Math.max(_loc14_,_loc6_);
  79.                }
  80.             }
  81.             _loc9_++;
  82.          }
  83.          _loc10_ = mx_internal::widthPadding(_loc8_);
  84.          _loc11_ = mx_internal::heightPadding(_loc8_);
  85.          _loc1_.measuredMinWidth = _loc3_ + _loc10_;
  86.          _loc1_.measuredMinHeight = _loc4_ + _loc11_;
  87.          _loc1_.measuredWidth = _loc5_ + _loc10_;
  88.          _loc1_.measuredHeight = _loc6_ + _loc11_;
  89.       }
  90.       
  91.       mx_internal function getHorizontalAlignValue() : Number
  92.       {
  93.          var _loc1_:String = null;
  94.          _loc1_ = target.getStyle("horizontalAlign");
  95.          if(_loc1_ == "center")
  96.          {
  97.             return 0.5;
  98.          }
  99.          if(_loc1_ == "right")
  100.          {
  101.             return 1;
  102.          }
  103.          return 0;
  104.       }
  105.       
  106.       mx_internal function heightPadding(param1:Number) : Number
  107.       {
  108.          var _loc2_:EdgeMetrics = null;
  109.          var _loc3_:Number = NaN;
  110.          _loc2_ = target.viewMetricsAndPadding;
  111.          _loc3_ = _loc2_.top + _loc2_.bottom;
  112.          if(param1 > 1 && isVertical())
  113.          {
  114.             _loc3_ += target.getStyle("verticalGap") * (param1 - 1);
  115.          }
  116.          return _loc3_;
  117.       }
  118.       
  119.       mx_internal function widthPadding(param1:Number) : Number
  120.       {
  121.          var _loc2_:EdgeMetrics = null;
  122.          var _loc3_:Number = NaN;
  123.          _loc2_ = target.viewMetricsAndPadding;
  124.          _loc3_ = _loc2_.left + _loc2_.right;
  125.          if(param1 > 1 && isVertical() == false)
  126.          {
  127.             _loc3_ += target.getStyle("horizontalGap") * (param1 - 1);
  128.          }
  129.          return _loc3_;
  130.       }
  131.       
  132.       override public function updateDisplayList(param1:Number, param2:Number) : void
  133.       {
  134.          var _loc3_:Container = null;
  135.          var _loc4_:int = 0;
  136.          var _loc5_:EdgeMetrics = null;
  137.          var _loc6_:Number = NaN;
  138.          var _loc7_:Number = NaN;
  139.          var _loc8_:Number = NaN;
  140.          var _loc9_:Number = NaN;
  141.          var _loc10_:Number = NaN;
  142.          var _loc11_:Number = NaN;
  143.          var _loc12_:Number = NaN;
  144.          var _loc13_:Number = NaN;
  145.          var _loc14_:ScrollBar = null;
  146.          var _loc15_:ScrollBar = null;
  147.          var _loc16_:Number = NaN;
  148.          var _loc17_:int = 0;
  149.          var _loc18_:Number = NaN;
  150.          var _loc19_:Number = NaN;
  151.          var _loc20_:Number = NaN;
  152.          var _loc21_:int = 0;
  153.          var _loc22_:IUIComponent = null;
  154.          var _loc23_:IUIComponent = null;
  155.          var _loc24_:Number = NaN;
  156.          var _loc25_:Number = NaN;
  157.          var _loc26_:Number = NaN;
  158.          var _loc27_:Number = NaN;
  159.          _loc3_ = super.target;
  160.          if((_loc4_ = _loc3_.numChildren) == 0)
  161.          {
  162.             return;
  163.          }
  164.          _loc5_ = _loc3_.viewMetricsAndPadding;
  165.          _loc6_ = _loc3_.getStyle("paddingLeft");
  166.          _loc7_ = _loc3_.getStyle("paddingTop");
  167.          _loc8_ = mx_internal::getHorizontalAlignValue();
  168.          _loc9_ = mx_internal::getVerticalAlignValue();
  169.          _loc10_ = _loc3_.scaleX > 0 && _loc3_.scaleX != 1 ? _loc3_.minWidth / Math.abs(_loc3_.scaleX) : _loc3_.minWidth;
  170.          _loc11_ = _loc3_.scaleY > 0 && _loc3_.scaleY != 1 ? _loc3_.minHeight / Math.abs(_loc3_.scaleY) : _loc3_.minHeight;
  171.          _loc12_ = Math.max(param1,_loc10_) - _loc5_.right - _loc5_.left;
  172.          _loc13_ = Math.max(param2,_loc11_) - _loc5_.bottom - _loc5_.top;
  173.          _loc14_ = _loc3_.horizontalScrollBar;
  174.          _loc15_ = _loc3_.verticalScrollBar;
  175.          if(_loc4_ == 1)
  176.          {
  177.             _loc24_ = (_loc23_ = IUIComponent(_loc3_.getChildAt(0))).percentWidth;
  178.             _loc25_ = _loc23_.percentHeight;
  179.             if(_loc24_)
  180.             {
  181.                _loc26_ = Math.max(_loc23_.minWidth,Math.min(_loc23_.maxWidth,_loc24_ >= 100 ? _loc12_ : _loc12_ * _loc24_ / 100));
  182.             }
  183.             else
  184.             {
  185.                _loc26_ = _loc23_.getExplicitOrMeasuredWidth();
  186.             }
  187.             if(_loc25_)
  188.             {
  189.                _loc27_ = Math.max(_loc23_.minHeight,Math.min(_loc23_.maxHeight,_loc25_ >= 100 ? _loc13_ : _loc13_ * _loc25_ / 100));
  190.             }
  191.             else
  192.             {
  193.                _loc27_ = _loc23_.getExplicitOrMeasuredHeight();
  194.             }
  195.             if(_loc23_.scaleX == 1 && _loc23_.scaleY == 1)
  196.             {
  197.                _loc23_.setActualSize(Math.floor(_loc26_),Math.floor(_loc27_));
  198.             }
  199.             else
  200.             {
  201.                _loc23_.setActualSize(_loc26_,_loc27_);
  202.             }
  203.             if(_loc15_ != null && _loc3_.verticalScrollPolicy == ScrollPolicy.AUTO)
  204.             {
  205.                _loc12_ += _loc15_.minWidth;
  206.             }
  207.             if(_loc14_ != null && _loc3_.horizontalScrollPolicy == ScrollPolicy.AUTO)
  208.             {
  209.                _loc13_ += _loc14_.minHeight;
  210.             }
  211.             _loc20_ = (_loc12_ - _loc23_.width) * _loc8_ + _loc6_;
  212.             _loc19_ = (_loc13_ - _loc23_.height) * _loc9_ + _loc7_;
  213.             _loc23_.move(Math.floor(_loc20_),Math.floor(_loc19_));
  214.          }
  215.          else if(isVertical())
  216.          {
  217.             _loc16_ = _loc3_.getStyle("verticalGap");
  218.             _loc17_ = _loc4_;
  219.             _loc21_ = 0;
  220.             while(_loc21_ < _loc4_)
  221.             {
  222.                if(!IUIComponent(_loc3_.getChildAt(_loc21_)).includeInLayout)
  223.                {
  224.                   _loc17_--;
  225.                }
  226.                _loc21_++;
  227.             }
  228.             _loc18_ = Flex.flexChildHeightsProportionally(_loc3_,_loc13_ - (_loc17_ - 1) * _loc16_,_loc12_);
  229.             if(_loc14_ != null && _loc3_.horizontalScrollPolicy == ScrollPolicy.AUTO)
  230.             {
  231.                _loc18_ += _loc14_.minHeight;
  232.             }
  233.             if(_loc15_ != null && _loc3_.verticalScrollPolicy == ScrollPolicy.AUTO)
  234.             {
  235.                _loc12_ += _loc15_.minWidth;
  236.             }
  237.             _loc19_ = _loc7_ + _loc18_ * _loc9_;
  238.             _loc21_ = 0;
  239.             while(_loc21_ < _loc4_)
  240.             {
  241.                _loc22_ = IUIComponent(_loc3_.getChildAt(_loc21_));
  242.                _loc20_ = (_loc12_ - _loc22_.width) * _loc8_ + _loc6_;
  243.                _loc22_.move(Math.floor(_loc20_),Math.floor(_loc19_));
  244.                if(_loc22_.includeInLayout)
  245.                {
  246.                   _loc19_ += _loc22_.height + _loc16_;
  247.                }
  248.                _loc21_++;
  249.             }
  250.          }
  251.          else
  252.          {
  253.             _loc16_ = _loc3_.getStyle("horizontalGap");
  254.             _loc17_ = _loc4_;
  255.             _loc21_ = 0;
  256.             while(_loc21_ < _loc4_)
  257.             {
  258.                if(!IUIComponent(_loc3_.getChildAt(_loc21_)).includeInLayout)
  259.                {
  260.                   _loc17_--;
  261.                }
  262.                _loc21_++;
  263.             }
  264.             _loc18_ = Flex.flexChildWidthsProportionally(_loc3_,_loc12_ - (_loc17_ - 1) * _loc16_,_loc13_);
  265.             if(_loc14_ != null && _loc3_.horizontalScrollPolicy == ScrollPolicy.AUTO)
  266.             {
  267.                _loc13_ += _loc14_.minHeight;
  268.             }
  269.             if(_loc15_ != null && _loc3_.verticalScrollPolicy == ScrollPolicy.AUTO)
  270.             {
  271.                _loc18_ += _loc15_.minWidth;
  272.             }
  273.             _loc20_ = _loc6_ + _loc18_ * _loc8_;
  274.             _loc21_ = 0;
  275.             while(_loc21_ < _loc4_)
  276.             {
  277.                _loc22_ = IUIComponent(_loc3_.getChildAt(_loc21_));
  278.                _loc19_ = (_loc13_ - _loc22_.height) * _loc9_ + _loc7_;
  279.                _loc22_.move(Math.floor(_loc20_),Math.floor(_loc19_));
  280.                if(_loc22_.includeInLayout)
  281.                {
  282.                   _loc20_ += _loc22_.width + _loc16_;
  283.                }
  284.                _loc21_++;
  285.             }
  286.          }
  287.       }
  288.       
  289.       mx_internal function getVerticalAlignValue() : Number
  290.       {
  291.          var _loc1_:String = null;
  292.          _loc1_ = target.getStyle("verticalAlign");
  293.          if(_loc1_ == "middle")
  294.          {
  295.             return 0.5;
  296.          }
  297.          if(_loc1_ == "bottom")
  298.          {
  299.             return 1;
  300.          }
  301.          return 0;
  302.       }
  303.    }
  304. }
  305.