You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pi...@apache.org on 2017/08/13 22:04:11 UTC
[18/42] git commit: [flex-asjs] [refs/heads/feature/amf] - Split
COMPILE::SWF and COMPILE::JS into separate functions. Use
setDisplayStyleForLayout() for compatibility with the visible property.
Split COMPILE::SWF and COMPILE::JS into separate functions.
Use setDisplayStyleForLayout() for compatibility with the visible property.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/0bc728cf
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/0bc728cf
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/0bc728cf
Branch: refs/heads/feature/amf
Commit: 0bc728cf5f37793f01c2645fdeaa143e37d82ca2
Parents: ff5cf8e
Author: Harbs <ha...@in-tools.com>
Authored: Thu Aug 3 18:56:45 2017 +0300
Committer: Harbs <ha...@in-tools.com>
Committed: Thu Aug 3 18:56:45 2017 +0300
----------------------------------------------------------------------
.../html/beads/layouts/HorizontalFlexLayout.as | 298 ++++++++++---------
.../layouts/OneFlexibleChildHorizontalLayout.as | 3 +-
.../layouts/OneFlexibleChildVerticalLayout.as | 3 +-
.../html/beads/layouts/VerticalFlexLayout.as | 288 +++++++++---------
4 files changed, 308 insertions(+), 284 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0bc728cf/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as
index d6d2449..52550ed 100644
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as
@@ -95,178 +95,190 @@ package org.apache.flex.html.beads.layouts
/**
* @copy org.apache.flex.core.IBeadLayout#layout
- * @flexjsignorecoercion org.apache.flex.core.ILayoutHost
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion FlexJS 0.8
*/
+ COMPILE::SWF
override public function layout():Boolean
{
- COMPILE::SWF {
- var contentView:ILayoutView = layoutView;
-
- var n:Number = contentView.numElements;
- if (n == 0) return false;
-
- var spacing:String = "none";
-
- var maxWidth:Number = 0;
- var maxHeight:Number = 0;
- var growCount:Number = 0;
- var childData:Array = [];
- var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent();
- var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent();
- var hostWidth:Number = host.width;
- var hostHeight:Number = host.height;
-
- var ilc:ILayoutChild;
- var data:Object;
- var canAdjust:Boolean = false;
-
- var paddingMetrics:Rectangle = CSSContainerUtils.getPaddingMetrics(host);
- var borderMetrics:Rectangle = CSSContainerUtils.getBorderMetrics(host);
-
- // adjust the host's usable size by the metrics. If hostSizedToContent, then the
- // resulting adjusted value may be less than zero.
- hostWidth -= paddingMetrics.left + paddingMetrics.right + borderMetrics.left + borderMetrics.right;
- hostHeight -= paddingMetrics.top + paddingMetrics.bottom + borderMetrics.top + borderMetrics.bottom;
-
- if ((hostWidth <= 0 && !hostWidthSizedToContent) || (hostHeight <= 0 && !hostHeightSizedToContent)) return false;
-
- var remainingWidth:Number = hostWidth;
+
+ var contentView:ILayoutView = layoutView;
+
+ var n:Number = contentView.numElements;
+ if (n == 0) return false;
+
+ var spacing:String = "none";
+
+ var maxWidth:Number = 0;
+ var maxHeight:Number = 0;
+ var growCount:Number = 0;
+ var childData:Array = [];
+ var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent();
+ var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent();
+ var hostWidth:Number = host.width;
+ var hostHeight:Number = host.height;
+
+ var ilc:ILayoutChild;
+ var data:Object;
+ var canAdjust:Boolean = false;
+
+ var paddingMetrics:Rectangle = CSSContainerUtils.getPaddingMetrics(host);
+ var borderMetrics:Rectangle = CSSContainerUtils.getBorderMetrics(host);
+
+ // adjust the host's usable size by the metrics. If hostSizedToContent, then the
+ // resulting adjusted value may be less than zero.
+ hostWidth -= paddingMetrics.left + paddingMetrics.right + borderMetrics.left + borderMetrics.right;
+ hostHeight -= paddingMetrics.top + paddingMetrics.bottom + borderMetrics.top + borderMetrics.bottom;
+
+ if ((hostWidth <= 0 && !hostWidthSizedToContent) || (hostHeight <= 0 && !hostHeightSizedToContent)) return false;
+
+ var remainingWidth:Number = hostWidth;
+
+ //trace("HorizontalFlexLayout for "+UIBase(host).id+" with remainingWidth: "+remainingWidth);
+
+ // First pass determines the data about the child.
+ for(var i:int=0; i < n; i++)
+ {
+ var child:IUIBase = contentView.getElementAt(i) as IUIBase;
+ if (child == null || !child.visible) {
+ childData.push({width:0, height:0, mt:0, ml:0, mr:0, mb:0, canAdjust:false});
+ continue;
+ }
- //trace("HorizontalFlexLayout for "+UIBase(host).id+" with remainingWidth: "+remainingWidth);
+ ilc = child as ILayoutChild;
+
+ var margins:Object = childMargins(child, hostWidth, hostHeight);
+
+ var flexGrow:Object = ValuesManager.valuesImpl.getValue(child, "flex-grow");
+ var growValue:Number = 0;
+ if (flexGrow != null) {
+ growValue = Number(flexGrow);
+ if (!isNaN(growValue) && growValue > 0) growCount++;
+ else growValue = 0;
+ }
- // First pass determines the data about the child.
- for(var i:int=0; i < n; i++)
- {
- var child:IUIBase = contentView.getElementAt(i) as IUIBase;
- if (child == null || !child.visible) {
- childData.push({width:0, height:0, mt:0, ml:0, mr:0, mb:0, canAdjust:false});
- continue;
+ var useHeight:Number = -1;
+ if (!hostHeightSizedToContent) {
+ if (ilc) {
+ if (!isNaN(ilc.percentHeight)) useHeight = hostHeight * (ilc.percentHeight/100.0);
+ else if (!isNaN(ilc.explicitHeight)) useHeight = ilc.explicitHeight;
+ else useHeight = hostHeight;
}
+ }
- ilc = child as ILayoutChild;
-
- var margins:Object = childMargins(child, hostWidth, hostHeight);
-
- var flexGrow:Object = ValuesManager.valuesImpl.getValue(child, "flex-grow");
- var growValue:Number = 0;
- if (flexGrow != null) {
- growValue = Number(flexGrow);
- if (!isNaN(growValue) && growValue > 0) growCount++;
- else growValue = 0;
- }
+ var useWidth:Number = -1;
+ if (ilc) {
+ if (!isNaN(ilc.explicitWidth)) useWidth = ilc.explicitWidth;
+ else if (!isNaN(ilc.percentWidth)) useWidth = hostWidth * (ilc.percentWidth/100.0);
+ else if (ilc.width > 0) useWidth = ilc.width;
+ }
+ if (growValue == 0 && useWidth > 0) remainingWidth -= useWidth + margins.left + margins.right;
+ else remainingWidth -= margins.left + margins.right;
- var useHeight:Number = -1;
- if (!hostHeightSizedToContent) {
- if (ilc) {
- if (!isNaN(ilc.percentHeight)) useHeight = hostHeight * (ilc.percentHeight/100.0);
- else if (!isNaN(ilc.explicitHeight)) useHeight = ilc.explicitHeight;
- else useHeight = hostHeight;
- }
- }
+ if (maxWidth < useWidth) maxWidth = useWidth;
+ if (maxHeight < useHeight) maxHeight = useHeight;
- var useWidth:Number = -1;
- if (ilc) {
- if (!isNaN(ilc.explicitWidth)) useWidth = ilc.explicitWidth;
- else if (!isNaN(ilc.percentWidth)) useWidth = hostWidth * (ilc.percentWidth/100.0);
- else if (ilc.width > 0) useWidth = ilc.width;
- }
- if (growValue == 0 && useWidth > 0) remainingWidth -= useWidth + margins.left + margins.right;
- else remainingWidth -= margins.left + margins.right;
+ childData.push({width:useWidth, height:useHeight,
+ mt:margins.top, ml:margins.left, mr:margins.right, mb:margins.bottom,
+ grow:growValue, canAdjust:canAdjust});
+ }
- if (maxWidth < useWidth) maxWidth = useWidth;
- if (maxHeight < useHeight) maxHeight = useHeight;
+ var xpos:Number = borderMetrics.left + paddingMetrics.left;
+ var ypos:Number = borderMetrics.top + paddingMetrics.top;
- childData.push({width:useWidth, height:useHeight,
- mt:margins.top, ml:margins.left, mr:margins.right, mb:margins.bottom,
- grow:growValue, canAdjust:canAdjust});
- }
+ // Second pass sizes and positions the children based on the data gathered.
+ for(i=0; i < n; i++)
+ {
+ child = contentView.getElementAt(i) as IUIBase;
+ data = childData[i];
+ //if (data.width == 0 || data.height == 0) continue;
- var xpos:Number = borderMetrics.left + paddingMetrics.left;
- var ypos:Number = borderMetrics.top + paddingMetrics.top;
+ useHeight = (data.height < 0 ? maxHeight : data.height);
- // Second pass sizes and positions the children based on the data gathered.
- for(i=0; i < n; i++)
- {
- child = contentView.getElementAt(i) as IUIBase;
- data = childData[i];
- //if (data.width == 0 || data.height == 0) continue;
-
- useHeight = (data.height < 0 ? maxHeight : data.height);
-
- var setWidth:Boolean = true;
- if (data.width != 0) {
- if (data.grow > 0 && growCount > 0) {
- useWidth = remainingWidth / growCount;
- setWidth = false;
- } else {
- useWidth = data.width;
- }
+ var setWidth:Boolean = true;
+ if (data.width != 0) {
+ if (data.grow > 0 && growCount > 0) {
+ useWidth = remainingWidth / growCount;
+ setWidth = false;
} else {
- useWidth = child.width;
+ useWidth = data.width;
}
+ } else {
+ useWidth = child.width;
+ }
- ilc = child as ILayoutChild;
- if (ilc) {
- ilc.setX(xpos + data.ml);
- ilc.setY(ypos + data.mt);
- if (data.height > 0) {
- //ilc.height = useHeight;
- ilc.setHeight(useHeight);
- }
- if (useWidth > 0) {
- if (setWidth) ilc.setWidth(useWidth);
- else ilc.width = useWidth;
- }
- } else {
- child.x = xpos + data.ml;
- child.y = ypos + data.mt;
- child.height = useHeight;
- if (data.width > 0) {
- child.width = useWidth;
- }
+ ilc = child as ILayoutChild;
+ if (ilc) {
+ ilc.setX(xpos + data.ml);
+ ilc.setY(ypos + data.mt);
+ if (data.height > 0) {
+ //ilc.height = useHeight;
+ ilc.setHeight(useHeight);
+ }
+ if (useWidth > 0) {
+ if (setWidth) ilc.setWidth(useWidth);
+ else ilc.width = useWidth;
+ }
+ } else {
+ child.x = xpos + data.ml;
+ child.y = ypos + data.mt;
+ child.height = useHeight;
+ if (data.width > 0) {
+ child.width = useWidth;
}
-
- xpos += useWidth + data.mr + data.ml;
-
- //trace("HorizontalFlexLayout: setting child "+i+" to "+child.width+" x "+child.height+" at "+child.x+", "+child.y);
}
- //trace("HorizontalFlexLayout: complete");
+ xpos += useWidth + data.mr + data.ml;
- return true;
+ //trace("HorizontalFlexLayout: setting child "+i+" to "+child.width+" x "+child.height+" at "+child.x+", "+child.y);
}
- COMPILE::JS {
- var contentView:ILayoutView = layoutView;
-
- // set the display on the contentView
- contentView.element.style["display"] = "flex";
- contentView.element.style["flex-flow"] = "row";
-
- var n:int = contentView.numElements;
- if (n == 0) return false;
-
- for(var i:int=0; i < n; i++) {
- var child:UIBase = contentView.getElementAt(i) as UIBase;
- if (!child)
- {
- continue;
- }
-
- if (grow >= 0) child.element.style["flex-grow"] = String(grow);
- if (shrink >= 0) child.element.style["flex-shrink"] = String(shrink);
- if (!isNaN(child.percentWidth))
- child.element.style["flex-basis"] = child.percentWidth.toString() + "%";
- child.dispatchEvent(new Event("layoutNeeded"));
- }
+ //trace("HorizontalFlexLayout: complete");
+
+ return true;
+ }
+ /**
+ * @copy org.apache.flex.core.IBeadLayout#layout
+ * @flexjsignorecoercion org.apache.flex.core.ILayoutHost
+ * @flexjsignorecoercion org.apache.flex.core.UIBase
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.8
+ */
+ COMPILE::JS
+ override public function layout():Boolean
+ {
+
+ var contentView:ILayoutView = layoutView;
- return true;
+ // set the display on the contentView
+ (contentView as UIBase).setDisplayStyleForLayout("flex");
+ // contentView.element.style["display"] = "flex";
+ contentView.element.style["flex-flow"] = "row";
+
+ var n:int = contentView.numElements;
+ if (n == 0) return false;
+
+ for(var i:int=0; i < n; i++) {
+ var child:UIBase = contentView.getElementAt(i) as UIBase;
+ if (!child)
+ {
+ continue;
+ }
+
+ if (grow >= 0) child.element.style["flex-grow"] = String(grow);
+ if (shrink >= 0) child.element.style["flex-shrink"] = String(shrink);
+ if (!isNaN(child.percentWidth))
+ child.element.style["flex-basis"] = child.percentWidth.toString() + "%";
+ child.dispatchEvent(new Event("layoutNeeded"));
}
+
+ return true;
}
}
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0bc728cf/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
index f0853fa..abfe593 100644
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
@@ -153,7 +153,8 @@ package org.apache.flex.html.beads.layouts
actualChild = document[flexibleChild];
// set the display on the contentView
- contentView.element.style["display"] = "flex";
+ (contentView as UIBase).setDisplayStyleForLayout("flex");
+ // contentView.element.style["display"] = "flex";
contentView.element.style["flex-flow"] = "row";
var align:String = ValuesManager.valuesImpl.getValue(host, "alignItems");
if (align == "center")
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0bc728cf/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
index c4d70e1..e7c1d58 100644
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
@@ -154,7 +154,8 @@ package org.apache.flex.html.beads.layouts
actualChild = document[flexibleChild];
// set the display on the contentView
- contentView.element.style["display"] = "flex";
+ (contentView as UIBase).setDisplayStyleForLayout("flex");
+ // contentView.element.style["display"] = "flex";
contentView.element.style["flex-flow"] = "column";
var align:String = ValuesManager.valuesImpl.getValue(host, "alignItems");
if (align == "center")
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0bc728cf/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as
index 2126616..d0b1c23 100644
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/VerticalFlexLayout.as
@@ -102,173 +102,183 @@ package org.apache.flex.html.beads.layouts
* @playerversion AIR 2.6
* @productversion FlexJS 0.8
*/
+ COMPILE::SWF
override public function layout():Boolean
{
- COMPILE::SWF {
- var contentView:ILayoutView = layoutView;
-
- var n:Number = contentView.numElements;
- if (n == 0) return false;
-
- var maxWidth:Number = 0;
- var maxHeight:Number = 0;
- var growCount:Number = 0;
- var childData:Array = [];
- var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent();
- var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent();
- var hostWidth:Number = host.width;
- var hostHeight:Number = host.height;
-
- var ilc:ILayoutChild;
- var data:Object;
- var canAdjust:Boolean = false;
-
- var paddingMetrics:Rectangle = CSSContainerUtils.getPaddingMetrics(host);
- var borderMetrics:Rectangle = CSSContainerUtils.getBorderMetrics(host);
-
- // adjust the host's usable size by the metrics. If hostSizedToContent, then the
- // resulting adjusted value may be less than zero.
- var extra:Number = paddingMetrics.left + paddingMetrics.right + borderMetrics.left + borderMetrics.right;
- if (hostWidthSizedToContent)
- hostWidth += extra;
- else
- hostWidth -= extra;
- extra = paddingMetrics.top + paddingMetrics.bottom + borderMetrics.top + borderMetrics.bottom;
- if (hostHeightSizedToContent)
- hostHeight += extra;
- else
- hostHeight -= extra;
-
- var remainingHeight:Number = hostHeight;
+ var contentView:ILayoutView = layoutView;
+
+ var n:Number = contentView.numElements;
+ if (n == 0) return false;
+
+ var maxWidth:Number = 0;
+ var maxHeight:Number = 0;
+ var growCount:Number = 0;
+ var childData:Array = [];
+ var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent();
+ var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent();
+ var hostWidth:Number = host.width;
+ var hostHeight:Number = host.height;
+
+ var ilc:ILayoutChild;
+ var data:Object;
+ var canAdjust:Boolean = false;
+
+ var paddingMetrics:Rectangle = CSSContainerUtils.getPaddingMetrics(host);
+ var borderMetrics:Rectangle = CSSContainerUtils.getBorderMetrics(host);
+
+ // adjust the host's usable size by the metrics. If hostSizedToContent, then the
+ // resulting adjusted value may be less than zero.
+ var extra:Number = paddingMetrics.left + paddingMetrics.right + borderMetrics.left + borderMetrics.right;
+ if (hostWidthSizedToContent)
+ hostWidth += extra;
+ else
+ hostWidth -= extra;
+ extra = paddingMetrics.top + paddingMetrics.bottom + borderMetrics.top + borderMetrics.bottom;
+ if (hostHeightSizedToContent)
+ hostHeight += extra;
+ else
+ hostHeight -= extra;
+
+ var remainingHeight:Number = hostHeight;
+
+ //trace("VerticalFlexLayout for "+UIBase(host).id+" with remainingHeight: "+remainingHeight);
+
+ // First pass determines the data about the child.
+ for(var i:int=0; i < n; i++)
+ {
+ var child:IUIBase = contentView.getElementAt(i) as IUIBase;
+ if (child == null || !child.visible) {
+ childData.push({width:0, height:0, mt:0, ml:0, mr:0, mb:0, grow:0, canAdjust:false});
+ continue;
+ }
- //trace("VerticalFlexLayout for "+UIBase(host).id+" with remainingHeight: "+remainingHeight);
+ ilc = child as ILayoutChild;
+
+ var margins:Object = childMargins(child, hostWidth, hostHeight);
+
+ var flexGrow:Object = ValuesManager.valuesImpl.getValue(child, "flex-grow");
+ var growValue:Number = 0;
+ if (flexGrow != null) {
+ growValue = Number(flexGrow);
+ if (!isNaN(growValue) && growValue > 0) growCount++;
+ else growValue = 0;
+ }
- // First pass determines the data about the child.
- for(var i:int=0; i < n; i++)
- {
- var child:IUIBase = contentView.getElementAt(i) as IUIBase;
- if (child == null || !child.visible) {
- childData.push({width:0, height:0, mt:0, ml:0, mr:0, mb:0, grow:0, canAdjust:false});
- continue;
+ var useWidth:Number = -1;
+ if (ilc) {
+ if (!isNaN(ilc.percentWidth)) useWidth = hostWidth * (ilc.percentWidth/100.0);
+ else if (!isNaN(ilc.explicitWidth)) useWidth = ilc.explicitWidth;
+ else if (!hostWidthSizedToContent) {
+ useWidth = hostWidth;
}
+ }
- ilc = child as ILayoutChild;
-
- var margins:Object = childMargins(child, hostWidth, hostHeight);
-
- var flexGrow:Object = ValuesManager.valuesImpl.getValue(child, "flex-grow");
- var growValue:Number = 0;
- if (flexGrow != null) {
- growValue = Number(flexGrow);
- if (!isNaN(growValue) && growValue > 0) growCount++;
- else growValue = 0;
- }
+ var useHeight:Number = -1;
+ if (ilc) {
+ if (!isNaN(ilc.explicitHeight)) useHeight = ilc.explicitHeight;
+ else if (!isNaN(ilc.percentHeight)) useHeight = hostHeight * (ilc.percentHeight/100.0);
+ else if (ilc.height > 0) useHeight = ilc.height;
+ }
+ if (growValue == 0 && useHeight > 0) remainingHeight -= useHeight + margins.top + margins.bottom;
+ else remainingHeight -= margins.top + margins.bottom;
- var useWidth:Number = -1;
- if (ilc) {
- if (!isNaN(ilc.percentWidth)) useWidth = hostWidth * (ilc.percentWidth/100.0);
- else if (!isNaN(ilc.explicitWidth)) useWidth = ilc.explicitWidth;
- else if (!hostWidthSizedToContent) {
- useWidth = hostWidth;
- }
- }
+ if (maxWidth < useWidth) maxWidth = useWidth;
+ if (maxHeight < useHeight) maxHeight = useHeight;
- var useHeight:Number = -1;
- if (ilc) {
- if (!isNaN(ilc.explicitHeight)) useHeight = ilc.explicitHeight;
- else if (!isNaN(ilc.percentHeight)) useHeight = hostHeight * (ilc.percentHeight/100.0);
- else if (ilc.height > 0) useHeight = ilc.height;
- }
- if (growValue == 0 && useHeight > 0) remainingHeight -= useHeight + margins.top + margins.bottom;
- else remainingHeight -= margins.top + margins.bottom;
+ childData.push({width:useWidth, height:useHeight,
+ mt:margins.top, ml:margins.left, mr:margins.right, mb:margins.bottom,
+ grow:growValue, canAdjust:canAdjust});
+ }
- if (maxWidth < useWidth) maxWidth = useWidth;
- if (maxHeight < useHeight) maxHeight = useHeight;
+ var xpos:Number = borderMetrics.left + paddingMetrics.left;
+ var ypos:Number = borderMetrics.top + paddingMetrics.top;
- childData.push({width:useWidth, height:useHeight,
- mt:margins.top, ml:margins.left, mr:margins.right, mb:margins.bottom,
- grow:growValue, canAdjust:canAdjust});
- }
+ // Second pass sizes and positions the children based on the data gathered.
+ for(i=0; i < n; i++)
+ {
+ child = contentView.getElementAt(i) as IUIBase;
+ data = childData[i];
- var xpos:Number = borderMetrics.left + paddingMetrics.left;
- var ypos:Number = borderMetrics.top + paddingMetrics.top;
+ useWidth = (data.width < 0 ? hostWidth : data.width);
- // Second pass sizes and positions the children based on the data gathered.
- for(i=0; i < n; i++)
- {
- child = contentView.getElementAt(i) as IUIBase;
- data = childData[i];
-
- useWidth = (data.width < 0 ? hostWidth : data.width);
-
- var setHeight:Boolean = true;
- if (data.height != 0 && !hostHeightSizedToContent) {
- if (data.grow > 0 && growCount > 0) {
- useHeight = remainingHeight / growCount;
- setHeight = false;
- } else {
- useHeight = data.height;
- }
+ var setHeight:Boolean = true;
+ if (data.height != 0 && !hostHeightSizedToContent) {
+ if (data.grow > 0 && growCount > 0) {
+ useHeight = remainingHeight / growCount;
+ setHeight = false;
} else {
- useHeight = child.height;
+ useHeight = data.height;
}
+ } else {
+ useHeight = child.height;
+ }
- ilc = child as ILayoutChild;
- if (ilc) {
- ilc.setX(xpos + data.ml);
- ilc.setY(ypos + data.mt);
- if (data.width > 0) {
- //ilc.width = useWidth;
- ilc.setWidth(useWidth);
- }
- if (useHeight > 0) {
- if (setHeight) ilc.setHeight(useHeight);
- else ilc.height = useHeight;
- }
- } else {
- child.x = xpos + data.ml;
- child.y = ypos + data.mt;
- child.width = useWidth;
- if (useHeight > 0) {
- child.height = useHeight;
- }
+ ilc = child as ILayoutChild;
+ if (ilc) {
+ ilc.setX(xpos + data.ml);
+ ilc.setY(ypos + data.mt);
+ if (data.width > 0) {
+ //ilc.width = useWidth;
+ ilc.setWidth(useWidth);
+ }
+ if (useHeight > 0) {
+ if (setHeight) ilc.setHeight(useHeight);
+ else ilc.height = useHeight;
+ }
+ } else {
+ child.x = xpos + data.ml;
+ child.y = ypos + data.mt;
+ child.width = useWidth;
+ if (useHeight > 0) {
+ child.height = useHeight;
}
-
- ypos += useHeight + data.mt + data.mb;
-
- //trace("VerticalFlexLayout: setting child "+i+" to "+child.width+" x "+child.height+" at "+child.x+", "+child.y);
}
- //trace("VerticalFlexLayout: complete");
+ ypos += useHeight + data.mt + data.mb;
- return true;
+ //trace("VerticalFlexLayout: setting child "+i+" to "+child.width+" x "+child.height+" at "+child.x+", "+child.y);
}
- COMPILE::JS {
- var contentView:ILayoutView = layoutView;
+ //trace("VerticalFlexLayout: complete");
- contentView.element.style["display"] = "flex";
- contentView.element.style["flex-flow"] = "column";
+ return true;
+ }
+ /**
+ *
+ * @flexjsignorecoercion org.apache.flex.core.ILayoutHost
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.8
+ */
+ COMPILE::JS
+ override public function layout():Boolean
+ {
+ var contentView:ILayoutView = layoutView;
- var n:int = contentView.numElements;
- if (n == 0) return false;
+ (contentView as UIBase).setDisplayStyleForLayout("flex");
+ // contentView.element.style["display"] = "flex";
+ contentView.element.style["flex-flow"] = "column";
- for(var i:int=0; i < n; i++) {
- var child:UIBase = contentView.getElementAt(i) as UIBase;
- if (!child)
- {
- continue;
- }
+ var n:int = contentView.numElements;
+ if (n == 0) return false;
- if (grow >= 0) child.element.style["flex-grow"] = String(grow);
- if (shrink >= 0) child.element.style["flex-shrink"] = String(shrink);
- if (!isNaN(child.percentHeight))
- child.element.style["flex-basis"] = child.percentHeight.toString() + "%";
- child.dispatchEvent(new Event("layoutNeeded"));
+ for(var i:int=0; i < n; i++) {
+ var child:UIBase = contentView.getElementAt(i) as UIBase;
+ if (!child)
+ {
+ continue;
}
- return true;
+ if (grow >= 0) child.element.style["flex-grow"] = String(grow);
+ if (shrink >= 0) child.element.style["flex-shrink"] = String(shrink);
+ if (!isNaN(child.percentHeight))
+ child.element.style["flex-basis"] = child.percentHeight.toString() + "%";
+ child.dispatchEvent(new Event("layoutNeeded"));
}
+
+ return true;
}
}
}