home *** CD-ROM | disk | FTP | other *** search
- package mx.containers.utilityClasses
- {
- import flash.display.DisplayObject;
- import flash.geom.Rectangle;
- import mx.core.Container;
- import mx.core.EdgeMetrics;
- import mx.core.IUIComponent;
- import mx.core.mx_internal;
- import mx.events.ChildExistenceChangedEvent;
- import mx.events.MoveEvent;
- import mx.styles.IStyleClient;
-
- use namespace mx_internal;
-
- public class CanvasLayout extends Layout
- {
-
- mx_internal static const VERSION:String = "2.0.1.0";
-
- private static var r:Rectangle = new Rectangle();
-
-
- private var _contentArea:Rectangle;
-
- public function CanvasLayout()
- {
- super();
- }
-
- private function applyAnchorStylesDuringUpdateDisplayList(param1:Number, param2:Number, param3:IUIComponent) : void
- {
- var _loc4_:IStyleClient = null;
- var _loc5_:Number = NaN;
- var _loc6_:Number = NaN;
- var _loc7_:Number = NaN;
- var _loc8_:Number = NaN;
- var _loc9_:Number = NaN;
- var _loc10_:Number = NaN;
- var _loc11_:Number = NaN;
- var _loc12_:Number = NaN;
- var _loc13_:Number = NaN;
- var _loc14_:Number = NaN;
- var _loc15_:Boolean = false;
- var _loc16_:Boolean = false;
- if(!(_loc4_ = param3 as IStyleClient))
- {
- return;
- }
- _loc5_ = _loc4_.getStyle("left");
- _loc6_ = _loc4_.getStyle("right");
- _loc7_ = _loc4_.getStyle("horizontalCenter");
- _loc8_ = _loc4_.getStyle("top");
- _loc9_ = _loc4_.getStyle("bottom");
- _loc10_ = _loc4_.getStyle("verticalCenter");
- _loc15_ = false;
- _loc16_ = false;
- if(!isNaN(_loc5_) && !isNaN(_loc6_))
- {
- if((_loc11_ = param1 - _loc5_ - _loc6_) < param3.minWidth)
- {
- _loc11_ = param3.minWidth;
- }
- }
- else if(!isNaN(param3.percentWidth))
- {
- _loc11_ = param3.percentWidth / 100 * param1;
- _loc11_ = bound(_loc11_,param3.minWidth,param3.maxWidth);
- _loc15_ = true;
- }
- else
- {
- _loc11_ = param3.getExplicitOrMeasuredWidth();
- }
- if(!isNaN(_loc8_) && !isNaN(_loc9_))
- {
- if((_loc12_ = param2 - _loc8_ - _loc9_) < param3.minHeight)
- {
- _loc12_ = param3.minHeight;
- }
- }
- else if(!isNaN(param3.percentHeight))
- {
- _loc12_ = param3.percentHeight / 100 * param2;
- _loc12_ = bound(_loc12_,param3.minHeight,param3.maxHeight);
- _loc16_ = true;
- }
- else
- {
- _loc12_ = param3.getExplicitOrMeasuredHeight();
- }
- if(!isNaN(_loc7_))
- {
- _loc13_ = Math.round((param1 - _loc11_) / 2 + _loc7_);
- }
- else if(!isNaN(_loc5_))
- {
- _loc13_ = _loc5_;
- }
- else if(!isNaN(_loc6_))
- {
- _loc13_ = param1 - _loc6_ - _loc11_;
- }
- if(!isNaN(_loc10_))
- {
- _loc14_ = Math.round((param2 - _loc12_) / 2 + _loc10_);
- }
- else if(!isNaN(_loc8_))
- {
- _loc14_ = _loc8_;
- }
- else if(!isNaN(_loc9_))
- {
- _loc14_ = param2 - _loc9_ - _loc12_;
- }
- _loc13_ = isNaN(_loc13_) ? Number(param3.x) : _loc13_;
- _loc14_ = isNaN(_loc14_) ? Number(param3.y) : _loc14_;
- param3.move(_loc13_,_loc14_);
- if(_loc15_)
- {
- if(_loc13_ + _loc11_ > param1)
- {
- _loc11_ = Math.max(param1 - _loc13_,param3.minWidth);
- }
- }
- if(_loc16_)
- {
- if(_loc14_ + _loc12_ > param2)
- {
- _loc12_ = Math.max(param2 - _loc14_,param3.minHeight);
- }
- }
- if(!isNaN(_loc11_) && !isNaN(_loc12_))
- {
- param3.setActualSize(_loc11_,_loc12_);
- }
- }
-
- override public function set target(param1:Container) : void
- {
- var _loc2_:Container = null;
- var _loc3_:int = 0;
- var _loc4_:int = 0;
- _loc2_ = super.target;
- if(param1 != _loc2_)
- {
- if(_loc2_)
- {
- _loc2_.removeEventListener(ChildExistenceChangedEvent.CHILD_ADD,target_childAddHandler);
- _loc2_.removeEventListener(ChildExistenceChangedEvent.CHILD_REMOVE,target_childRemoveHandler);
- _loc4_ = _loc2_.numChildren;
- _loc3_ = 0;
- while(_loc3_ < _loc4_)
- {
- DisplayObject(_loc2_.getChildAt(_loc3_)).removeEventListener(MoveEvent.MOVE,child_moveHandler);
- _loc3_++;
- }
- }
- if(param1)
- {
- param1.addEventListener(ChildExistenceChangedEvent.CHILD_ADD,target_childAddHandler);
- param1.addEventListener(ChildExistenceChangedEvent.CHILD_REMOVE,target_childRemoveHandler);
- _loc4_ = param1.numChildren;
- _loc3_ = 0;
- while(_loc3_ < _loc4_)
- {
- DisplayObject(param1.getChildAt(_loc3_)).addEventListener(MoveEvent.MOVE,child_moveHandler);
- _loc3_++;
- }
- }
- super.target = param1;
- }
- }
-
- override public function measure() : void
- {
- var _loc1_:Container = null;
- var _loc2_:Number = NaN;
- var _loc3_:Number = NaN;
- var _loc4_:EdgeMetrics = null;
- var _loc5_:Rectangle = null;
- _loc1_ = super.target;
- _loc2_ = 0;
- _loc3_ = 0;
- _loc4_ = _loc1_.viewMetrics;
- _contentArea = null;
- _loc5_ = measureContentArea();
- _loc1_.measuredWidth = _loc5_.width + _loc4_.left + _loc4_.right;
- _loc1_.measuredHeight = _loc5_.height + _loc4_.top + _loc4_.bottom;
- }
-
- private function target_childAddHandler(param1:ChildExistenceChangedEvent) : void
- {
- DisplayObject(param1.relatedObject).addEventListener(MoveEvent.MOVE,child_moveHandler);
- }
-
- private function measureContentArea() : Rectangle
- {
- var _loc1_:int = 0;
- var _loc2_:int = 0;
- var _loc3_:IUIComponent = null;
- var _loc4_:IStyleClient = null;
- var _loc5_:Number = NaN;
- var _loc6_:Number = NaN;
- var _loc7_:Number = NaN;
- var _loc8_:Number = NaN;
- var _loc9_:Number = NaN;
- var _loc10_:Number = NaN;
- if(_contentArea)
- {
- return _contentArea;
- }
- _contentArea = new Rectangle();
- _loc1_ = target.numChildren;
- _loc2_ = 0;
- while(_loc2_ < _loc1_)
- {
- _loc3_ = target.getChildAt(_loc2_) as IUIComponent;
- _loc4_ = _loc3_ as IStyleClient;
- if(_loc3_.includeInLayout)
- {
- _loc5_ = Number(_loc3_.x);
- _loc6_ = Number(_loc3_.y);
- _loc7_ = _loc3_.getExplicitOrMeasuredWidth();
- _loc8_ = _loc3_.getExplicitOrMeasuredHeight();
- if(!isNaN(_loc3_.percentWidth) || _loc4_ && !isNaN(_loc4_.getStyle("left")) && !isNaN(_loc4_.getStyle("right")))
- {
- _loc7_ = _loc3_.minWidth;
- }
- if(!isNaN(_loc3_.percentHeight) || _loc4_ && !isNaN(_loc4_.getStyle("top")) && !isNaN(_loc4_.getStyle("bottom")))
- {
- _loc8_ = _loc3_.minHeight;
- }
- r.x = _loc5_;
- r.y = _loc6_;
- r.width = _loc7_;
- r.height = _loc8_;
- applyAnchorStylesDuringMeasure(_loc3_,r);
- _loc5_ = r.x;
- _loc6_ = r.y;
- _loc7_ = r.width;
- _loc8_ = r.height;
- if(isNaN(_loc5_))
- {
- _loc5_ = Number(_loc3_.x);
- }
- if(isNaN(_loc6_))
- {
- _loc6_ = Number(_loc3_.y);
- }
- _loc9_ = _loc5_;
- _loc10_ = _loc6_;
- if(isNaN(_loc7_))
- {
- _loc7_ = Number(_loc3_.width);
- }
- if(isNaN(_loc8_))
- {
- _loc8_ = Number(_loc3_.height);
- }
- _loc9_ += _loc7_;
- _loc10_ += _loc8_;
- _contentArea.right = Math.max(_contentArea.right,_loc9_);
- _contentArea.bottom = Math.max(_contentArea.bottom,_loc10_);
- }
- _loc2_++;
- }
- return _contentArea;
- }
-
- private function child_moveHandler(param1:MoveEvent) : void
- {
- var _loc2_:Container = null;
- if(param1.target is IUIComponent)
- {
- if(!IUIComponent(param1.target).includeInLayout)
- {
- return;
- }
- }
- _loc2_ = super.target;
- if(_loc2_)
- {
- _loc2_.invalidateSize();
- _loc2_.invalidateDisplayList();
- _contentArea = null;
- }
- }
-
- override public function updateDisplayList(param1:Number, param2:Number) : void
- {
- var _loc3_:Container = null;
- var _loc4_:EdgeMetrics = null;
- var _loc5_:Number = NaN;
- var _loc6_:Number = NaN;
- var _loc7_:int = 0;
- var _loc8_:int = 0;
- var _loc9_:IUIComponent = null;
- _loc3_ = super.target;
- _loc3_.mx_internal::doingLayout = false;
- _loc4_ = _loc3_.viewMetrics;
- _loc3_.mx_internal::doingLayout = true;
- _loc5_ = param1 - _loc4_.left - _loc4_.right;
- _loc6_ = param2 - _loc4_.top - _loc4_.bottom;
- _loc7_ = _loc3_.numChildren;
- _loc8_ = 0;
- while(_loc8_ < _loc7_)
- {
- _loc9_ = _loc3_.getChildAt(_loc8_) as IUIComponent;
- applyAnchorStylesDuringUpdateDisplayList(_loc5_,_loc6_,_loc9_);
- _loc8_++;
- }
- }
-
- private function applyAnchorStylesDuringMeasure(param1:IUIComponent, param2:Rectangle) : void
- {
- var _loc3_:IStyleClient = null;
- var _loc4_:Number = NaN;
- var _loc5_:Number = NaN;
- var _loc6_:Number = NaN;
- var _loc7_:Number = NaN;
- var _loc8_:Number = NaN;
- var _loc9_:Number = NaN;
- _loc3_ = param1 as IStyleClient;
- if(!_loc3_)
- {
- return;
- }
- _loc4_ = _loc3_.getStyle("left");
- _loc5_ = _loc3_.getStyle("right");
- _loc6_ = _loc3_.getStyle("horizontalCenter");
- if(!isNaN(_loc6_))
- {
- param2.x = Math.round((target.width - param1.width) / 2 + _loc6_);
- }
- else if(!isNaN(_loc4_) && !isNaN(_loc5_))
- {
- param2.x = _loc4_;
- param2.width += _loc5_;
- }
- else if(!isNaN(_loc4_))
- {
- param2.x = _loc4_;
- }
- else if(!isNaN(_loc5_))
- {
- param2.x = 0;
- param2.width += _loc5_;
- }
- _loc7_ = _loc3_.getStyle("top");
- _loc8_ = _loc3_.getStyle("bottom");
- _loc9_ = _loc3_.getStyle("verticalCenter");
- if(!isNaN(_loc9_))
- {
- param2.y = Math.round((target.height - param1.height) / 2 + _loc9_);
- }
- else if(!isNaN(_loc7_) && !isNaN(_loc8_))
- {
- param2.y = _loc7_;
- param2.height += _loc8_;
- }
- else if(!isNaN(_loc7_))
- {
- param2.y = _loc7_;
- }
- else if(!isNaN(_loc8_))
- {
- param2.y = 0;
- param2.height += _loc8_;
- }
- }
-
- private function bound(param1:Number, param2:Number, param3:Number) : Number
- {
- if(param1 < param2)
- {
- param1 = param2;
- }
- else if(param1 > param3)
- {
- param1 = param3;
- }
- else
- {
- param1 = Math.floor(param1);
- }
- return param1;
- }
-
- private function target_childRemoveHandler(param1:ChildExistenceChangedEvent) : void
- {
- DisplayObject(param1.relatedObject).removeEventListener(MoveEvent.MOVE,child_moveHandler);
- }
- }
- }
-