You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2017/04/03 19:56:33 UTC
git commit: [flex-asjs] [refs/heads/feature/chart-work] - Updates to
some layouts.
Repository: flex-asjs
Updated Branches:
refs/heads/feature/chart-work 01c55f2e0 -> 087b870e9
Updates to some layouts.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/087b870e
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/087b870e
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/087b870e
Branch: refs/heads/feature/chart-work
Commit: 087b870e97f411fd10269c5ec139d458d38be5be
Parents: 01c55f2
Author: Peter Ent <pe...@apache.org>
Authored: Mon Apr 3 15:56:31 2017 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Mon Apr 3 15:56:31 2017 -0400
----------------------------------------------------------------------
.../flex/html/beads/layouts/HorizontalLayout.as | 24 ++++++----
.../layouts/OneFlexibleChildHorizontalLayout.as | 39 +++++++++++-----
.../layouts/OneFlexibleChildVerticalLayout.as | 49 +++++++++++++-------
.../flex/html/beads/layouts/VerticalLayout.as | 24 ++++++----
4 files changed, 89 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/087b870e/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as
index b58497a..148866b 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalLayout.as
@@ -107,9 +107,10 @@ package org.apache.flex.html.beads.layouts
var maxWidth:Number = 0;
var maxHeight:Number = 0;
- var hostSizedToContent:Boolean = host.isHeightSizedToContent();
- var hostWidth:Number = contentView.width;
- var hostHeight:Number = hostSizedToContent ? 0 : contentView.height;
+ var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent();
+ var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent();
+ var hostWidth:Number = hostWidthSizedToContent ? 0 : contentView.width;
+ var hostHeight:Number = hostHeightSizedToContent ? 0 : contentView.height;
var ilc:ILayoutChild;
var data:Object;
@@ -117,6 +118,11 @@ package org.apache.flex.html.beads.layouts
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;
var xpos:Number = borderMetrics.left + paddingMetrics.left;
var ypos:Number = borderMetrics.top + paddingMetrics.left;
@@ -135,11 +141,11 @@ package org.apache.flex.html.beads.layouts
var childYpos:Number = ypos + margins.top; // default y position
- if (!hostSizedToContent) {
+ if (!hostHeightSizedToContent) {
var childHeight:Number = child.height;
if (ilc != null && !isNaN(ilc.percentHeight)) {
- childHeight = (hostHeight-borderMetrics.top-borderMetrics.bottom-paddingMetrics.top-paddingMetrics.bottom) * ilc.percentHeight/100.0;
- ilc.setHeight(childHeight - margins.top - margins.bottom);
+ childHeight = hostHeight * ilc.percentHeight/100.0;
+ ilc.setHeight(childHeight);
}
// the following code middle-aligns the child, but since HTML does not
// do this normally, this code is commented. (Use HorizontalFlexLayout for
@@ -151,9 +157,9 @@ package org.apache.flex.html.beads.layouts
ilc.setX(xpos);
ilc.setY(childYpos);
- if (!isNaN(ilc.percentWidth)) {
- var newWidth:Number = (contentView.width-borderMetrics.left-borderMetrics.right-paddingMetrics.left-paddingMetrics.right) * ilc.percentWidth / 100;
- ilc.setWidth(newWidth - margins.right - margins.left);
+ if (!hostWidthSizedToContent && !isNaN(ilc.percentWidth)) {
+ var newWidth:Number = hostWidth * ilc.percentWidth / 100;
+ ilc.setWidth(newWidth);
}
} else {
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/087b870e/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
index 5707428..c90f223 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as
@@ -47,7 +47,7 @@ package org.apache.flex.html.beads.layouts
* @playerversion AIR 2.6
* @productversion FlexJS 0.0
*/
- public class OneFlexibleChildHorizontalLayout extends LayoutBase implements IOneFlexibleChildLayout, IDocument
+ public class OneFlexibleChildHorizontalLayout extends HorizontalLayout implements IOneFlexibleChildLayout, IDocument
{
/**
* Constructor.
@@ -175,6 +175,12 @@ package org.apache.flex.html.beads.layouts
var n:Number = contentView.numElements;
if (n == 0) return false;
+
+ // if the layoutView's width cannot be determined then this layout
+ // will not work, so default to HorizontalLayout
+ if (host.isWidthSizedToContent()) {
+ return super.layout();
+ }
var maxWidth:Number = 0;
var maxHeight:Number = 0;
@@ -189,15 +195,20 @@ package org.apache.flex.html.beads.layouts
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;
- var xpos:Number = borderMetrics.left - paddingMetrics.left;
+ var xpos:Number = borderMetrics.left + paddingMetrics.left;
var ypos:Number = borderMetrics.top + paddingMetrics.left;
var child:IUIBase;
var childHeight:Number;
var i:int;
var childYpos:Number;
var adjustLeft:Number = 0;
- var adjustRight:Number = hostWidth - borderMetrics.right - paddingMetrics.right;
+ var adjustRight:Number = hostWidth + borderMetrics.left + paddingMetrics.left;
// first work from left to right
for(i=0; i < n; i++)
@@ -216,11 +227,11 @@ package org.apache.flex.html.beads.layouts
if (!hostSizedToContent) {
childHeight = child.height;
if (ilc != null && !isNaN(ilc.percentHeight)) {
- childHeight = (hostHeight-borderMetrics.top-borderMetrics.bottom-paddingMetrics.top-paddingMetrics.bottom) * ilc.percentHeight/100.0;
+ childHeight = host.height * ilc.percentHeight/100.0;
ilc.setHeight(childHeight);
}
// the following code middle-aligns the child
- childYpos = hostHeight/2 - (childHeight + margins.top + margins.bottom)/2;
+ childYpos = hostHeight/2 - childHeight/2 + ypos;
}
if (ilc) {
@@ -228,7 +239,7 @@ package org.apache.flex.html.beads.layouts
ilc.setY(childYpos);
if (!isNaN(ilc.percentWidth)) {
- ilc.setWidth((contentView.width-borderMetrics.left-borderMetrics.right-paddingMetrics.left-paddingMetrics.right) * ilc.percentWidth / 100);
+ ilc.setWidth(hostWidth * ilc.percentWidth / 100);
}
} else {
@@ -241,7 +252,7 @@ package org.apache.flex.html.beads.layouts
}
// then work from right to left
- xpos = hostWidth - borderMetrics.right - paddingMetrics.right;
+ xpos = hostWidth + borderMetrics.left + paddingMetrics.left;
for(i=(n-1); actualChild != null && i >= 0; i--)
{
@@ -257,16 +268,16 @@ package org.apache.flex.html.beads.layouts
if (!hostSizedToContent) {
childHeight = child.height;
if (ilc != null && !isNaN(ilc.percentHeight)) {
- childHeight = (hostHeight-borderMetrics.top-borderMetrics.bottom-paddingMetrics.top-paddingMetrics.bottom) * ilc.percentHeight/100.0;
+ childHeight = hostHeight * ilc.percentHeight/100.0;
ilc.setHeight(childHeight);
}
// the following code middle-aligns the child
- childYpos = hostHeight/2 - (childHeight + margins.top + margins.bottom)/2;
+ childYpos = hostHeight/2 - childHeight/2 + ypos;
}
if (ilc) {
if (!isNaN(ilc.percentWidth)) {
- ilc.setWidth((contentView.width-borderMetrics.left-borderMetrics.right-paddingMetrics.left-paddingMetrics.right) * ilc.percentWidth / 100);
+ ilc.setWidth(hostWidth * ilc.percentWidth / 100);
}
}
@@ -291,12 +302,16 @@ package org.apache.flex.html.beads.layouts
if (!hostSizedToContent) {
childHeight = actualChild.height;
if (ilc != null && !isNaN(ilc.percentHeight)) {
- childHeight = (hostHeight-borderMetrics.top-borderMetrics.bottom-paddingMetrics.top-paddingMetrics.bottom) * ilc.percentHeight/100.0;
+ childHeight = hostHeight * ilc.percentHeight/100.0;
ilc.setHeight(childHeight);
}
}
- actualChild.y = hostHeight/2 - (childHeight + margins.top + margins.bottom)/2;
+ childYpos = ypos + margins.top;
+ if (!hostSizedToContent) {
+ childYpos = hostHeight/2 - childHeight/2 + ypos;
+ }
actualChild.x = adjustLeft + margins.left;
+ actualChild.y = childYpos;
if (ilc) {
ilc.setWidth((adjustRight-margins.right) - (adjustLeft+margins.left));
} else {
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/087b870e/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
index fe4e920..9242d91 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
@@ -48,7 +48,7 @@ package org.apache.flex.html.beads.layouts
* @playerversion AIR 2.6
* @productversion FlexJS 0.0
*/
- public class OneFlexibleChildVerticalLayout extends LayoutBase implements IOneFlexibleChildLayout, IDocument
+ public class OneFlexibleChildVerticalLayout extends VerticalLayout implements IOneFlexibleChildLayout, IDocument
{
/**
* Constructor.
@@ -176,12 +176,18 @@ package org.apache.flex.html.beads.layouts
var n:Number = contentView.numElements;
if (n == 0) return false;
+
+ // if the layoutView has no determined height, this layout cannot run
+ // so fall back to VerticalLayout
+ if (host.isHeightSizedToContent()) {
+ return super.layout();
+ }
var maxWidth:Number = 0;
var maxHeight:Number = 0;
- var hostSizedToContent:Boolean = host.isHeightSizedToContent();
- var hostWidth:Number = contentView.width;
- var hostHeight:Number = hostSizedToContent ? 0 : contentView.height;
+ var hostSizedToContent:Boolean = host.isWidthSizedToContent();
+ var hostWidth:Number = hostSizedToContent ? 0 : contentView.width;
+ var hostHeight:Number = contentView.height;
var ilc:ILayoutChild;
var data:Object;
@@ -190,15 +196,20 @@ package org.apache.flex.html.beads.layouts
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;
- var xpos:Number = borderMetrics.left - paddingMetrics.left;
+ var xpos:Number = borderMetrics.left + paddingMetrics.left;
var ypos:Number = borderMetrics.top + paddingMetrics.left;
var child:IUIBase;
var childWidth:Number;
var i:int;
var childXpos:Number;
var adjustTop:Number = 0;
- var adjustBottom:Number = hostHeight - borderMetrics.top - paddingMetrics.bottom;
+ var adjustBottom:Number = hostHeight + borderMetrics.top + paddingMetrics.top;
// first work from top to bottom
for(i=0; i < n; i++)
@@ -212,16 +223,16 @@ package org.apache.flex.html.beads.layouts
ypos += margins.top;
- childXpos = xpos + margins.left; // default y position
+ childXpos = xpos + margins.left; // default x position
if (!hostSizedToContent) {
childWidth = child.width;
if (ilc != null && !isNaN(ilc.percentWidth)) {
- childWidth = (hostWidth-borderMetrics.left-borderMetrics.right-paddingMetrics.left-paddingMetrics.right) * ilc.percentWidth/100.0;
+ childWidth = hostWidth * ilc.percentWidth/100.0;
ilc.setWidth(childWidth);
}
// the following code middle-aligns the child
- childXpos = hostWidth/2 - (childWidth + margins.left + margins.right)/2;
+ childXpos = hostWidth/2 - childWidth/2 + xpos;
}
if (ilc) {
@@ -229,7 +240,7 @@ package org.apache.flex.html.beads.layouts
ilc.setY(ypos);
if (!isNaN(ilc.percentHeight)) {
- ilc.setHeight((contentView.height-borderMetrics.top-borderMetrics.bottom-paddingMetrics.top-paddingMetrics.bottom) * ilc.percentHeight / 100);
+ ilc.setHeight(hostHeight * ilc.percentHeight / 100);
}
} else {
@@ -242,7 +253,7 @@ package org.apache.flex.html.beads.layouts
}
// then work from bottom to top
- ypos = hostHeight - borderMetrics.bottom - paddingMetrics.bottom;
+ ypos = hostHeight + borderMetrics.top + paddingMetrics.top;
for(i=(n-1); actualChild != null && i >= 0; i--)
{
@@ -253,21 +264,21 @@ package org.apache.flex.html.beads.layouts
margins = childMargins(child, hostWidth, hostHeight);
ilc = child as ILayoutChild;
- childXpos = xpos + margins.left; // default y position
+ childXpos = xpos + margins.left; // default x position
if (!hostSizedToContent) {
childWidth = child.width;
if (ilc != null && !isNaN(ilc.percentWidth)) {
- childWidth = (hostWidth-borderMetrics.left-borderMetrics.right-paddingMetrics.left-paddingMetrics.right) * ilc.percentWidth/100.0;
+ childWidth = hostWidth * ilc.percentWidth/100.0;
ilc.setWidth(childWidth);
}
// the following code middle-aligns the child
- childXpos = hostWidth/2 - (childWidth + margins.left + margins.right)/2;
+ childXpos = hostWidth/2 - childWidth/2 + xpos;
}
if (ilc) {
if (!isNaN(ilc.percentHeight)) {
- ilc.setHeight((contentView.height-borderMetrics.top-borderMetrics.bottom-paddingMetrics.top-paddingMetrics.bottom) * ilc.percentHeight / 100);
+ ilc.setHeight(hostHeight * ilc.percentHeight / 100);
}
}
@@ -292,11 +303,15 @@ package org.apache.flex.html.beads.layouts
if (!hostSizedToContent) {
childWidth = actualChild.width;
if (ilc != null && !isNaN(ilc.percentWidth)) {
- childWidth = (hostWidth-borderMetrics.left-borderMetrics.right-paddingMetrics.left-paddingMetrics.right) * ilc.percentWidth/100.0;
+ childWidth = hostWidth * ilc.percentWidth/100.0;
ilc.setWidth(childWidth);
}
}
- actualChild.x = hostWidth/2 - (childWidth + margins.left + margins.right)/2;
+ childXpos = xpos + margins.left;
+ if (!hostSizedToContent) {
+ childXpos = hostWidth/2 - childWidth/2 + xpos;
+ }
+ actualChild.x = childXpos
actualChild.y = adjustTop + margins.top;
if (ilc) {
ilc.setHeight((adjustBottom-margins.bottom) - (adjustTop+margins.top));
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/087b870e/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as
index c4279a4..a8b9774 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/VerticalLayout.as
@@ -86,9 +86,10 @@ package org.apache.flex.html.beads.layouts
var maxWidth:Number = 0;
var maxHeight:Number = 0;
- var hostSizedToContent:Boolean = host.isWidthSizedToContent();
- var hostWidth:Number = hostSizedToContent ? 0 : contentView.width;
- var hostHeight:Number = contentView.height;
+ var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent();
+ var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent();
+ var hostWidth:Number = hostWidthSizedToContent ? 0 : contentView.width;
+ var hostHeight:Number = hostHeightSizedToContent ? 0 : contentView.height;
var ilc:ILayoutChild;
var data:Object;
@@ -96,6 +97,11 @@ package org.apache.flex.html.beads.layouts
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;
var xpos:Number = borderMetrics.left + paddingMetrics.left;
var ypos:Number = borderMetrics.top + paddingMetrics.left;
@@ -114,11 +120,11 @@ package org.apache.flex.html.beads.layouts
var childXpos:Number = xpos + margins.left; // default x position
- if (!hostSizedToContent) {
+ if (!hostWidthSizedToContent) {
var childWidth:Number = child.width;
if (ilc != null && !isNaN(ilc.percentWidth)) {
- childWidth = (hostWidth-borderMetrics.left-borderMetrics.right-paddingMetrics.left-paddingMetrics.right) * ilc.percentWidth/100.0;
- ilc.setWidth(childWidth - margins.right - margins.left);
+ childWidth = hostWidth * ilc.percentWidth/100.0;
+ ilc.setWidth(childWidth);
}
// the following code center-aligns the child, but since HTML does not
// do this normally, this code is commented. (Use VerticalFlexLayout for
@@ -130,9 +136,9 @@ package org.apache.flex.html.beads.layouts
ilc.setX(childXpos);
ilc.setY(ypos);
- if (!isNaN(ilc.percentHeight)) {
- var newHeight:Number = (contentView.height-borderMetrics.top-borderMetrics.bottom-paddingMetrics.top-paddingMetrics.bottom) * ilc.percentHeight / 100;
- ilc.setHeight(newHeight - margins.top - margins.bottom);
+ if (!hostHeightSizedToContent && !isNaN(ilc.percentHeight)) {
+ var newHeight:Number = hostHeight * ilc.percentHeight / 100;
+ ilc.setHeight(newHeight);
}
} else {