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 2015/07/14 20:50:05 UTC
git commit: [flex-asjs] [refs/heads/develop] - Updates to make Panels
and Alert look better. Added margin values to UIMetrics.
Repository: flex-asjs
Updated Branches:
refs/heads/develop 13d076e5e -> 3a6ed918e
Updates to make Panels and Alert look better. Added margin values to UIMetrics.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/3a6ed918
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/3a6ed918
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/3a6ed918
Branch: refs/heads/develop
Commit: 3a6ed918e9fa5f1960b206916caf627990c255c7
Parents: 13d076e
Author: Peter Ent <pe...@apache.org>
Authored: Tue Jul 14 14:50:01 2015 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Tue Jul 14 14:50:01 2015 -0400
----------------------------------------------------------------------
.../as/src/org/apache/flex/core/UIMetrics.as | 41 ++++++++++++
.../as/src/org/apache/flex/utils/BeadMetrics.as | 67 ++++++++++++++++++++
.../js/src/org/apache/flex/core/UIMetrics.js | 28 ++++++++
.../js/src/org/apache/flex/utils/BeadMetrics.js | 11 ++++
.../src/org/apache/flex/html/beads/AlertView.as | 20 +++---
.../src/org/apache/flex/html/beads/PanelView.as | 13 +++-
.../flex/html/beads/PanelWithControlBarView.as | 20 ++++--
7 files changed, 184 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3a6ed918/frameworks/projects/Core/as/src/org/apache/flex/core/UIMetrics.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/as/src/org/apache/flex/core/UIMetrics.as b/frameworks/projects/Core/as/src/org/apache/flex/core/UIMetrics.as
index 39f798d..349e46d 100644
--- a/frameworks/projects/Core/as/src/org/apache/flex/core/UIMetrics.as
+++ b/frameworks/projects/Core/as/src/org/apache/flex/core/UIMetrics.as
@@ -82,5 +82,46 @@ package org.apache.flex.core
* @productversion FlexJS 0.0
*/
public var right:Number;
+
+ /**
+ * The extra spacing on top of the object.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public var marginTop:Number;
+
+ /**
+ * The extra spacing to the left of the object.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public var marginLeft:Number;
+
+ /**
+ * The extra spacing on bottom of the object.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public var marginBottom:Number;
+
+ /**
+ * The extra spacing to the right of the object.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public var marginRight:Number;
+
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3a6ed918/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as b/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as
index 94d6b94..2902caf 100644
--- a/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as
+++ b/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as
@@ -99,11 +99,78 @@ public class BeadMetrics
var pr:Number = Number(paddingRight);
var pb:Number = Number(paddingBottom);
+ var marginLeft:Object;
+ var marginRight:Object;
+ var marginTop:Object;
+ var marginBottom:Object;
+ var margin:Object;
+ margin = ValuesManager.valuesImpl.getValue(object, "margin");
+
+ if (margin is Array)
+ {
+ if (margin.length == 1)
+ marginLeft = marginTop = marginRight = marginBottom = margin[0];
+ else if (margin.length <= 3)
+ {
+ marginLeft = marginRight = margin[1];
+ marginTop = marginBottom = margin[0];
+ }
+ else if (margin.length == 4)
+ {
+ marginLeft = margin[3];
+ marginBottom = margin[2];
+ marginRight = margin[1];
+ marginTop = margin[0];
+ }
+ }
+ else if (margin == null)
+ {
+ marginLeft = ValuesManager.valuesImpl.getValue(object, "margin-left");
+ marginTop = ValuesManager.valuesImpl.getValue(object, "margin-top");
+ marginRight = ValuesManager.valuesImpl.getValue(object, "margin-right");
+ marginBottom = ValuesManager.valuesImpl.getValue(object, "margin-bottom");
+ }
+ else
+ {
+ marginLeft = marginTop = marginBottom = marginRight = margin;
+ }
+ var ml:Number;
+ var mr:Number;
+ var mt:Number;
+ var mb:Number;
+ var lastmr:Number;
+ if (marginLeft == "auto")
+ ml = 0;
+ else
+ {
+ ml = Number(marginLeft);
+ if (isNaN(ml))
+ ml = 0;
+ }
+ if (marginRight == "auto")
+ mr = 0;
+ else
+ {
+ mr = Number(marginRight);
+ if (isNaN(mr))
+ mr = 0;
+ }
+ mt = Number(marginTop);
+ if (isNaN(mt))
+ mt = 0;
+ mb = Number(marginBottom);
+ if (isNaN(mb))
+ mb = 0;
+
var result:UIMetrics = new UIMetrics();
result.top = borderOffset + pt;
result.left = borderOffset + pl;
result.bottom = borderOffset + pb;
result.right = borderOffset + pr;
+ result.marginTop = mt;
+ result.marginLeft = ml;
+ result.marginBottom = mb;
+ result.marginRight = mr;
return result;
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3a6ed918/frameworks/projects/Core/js/src/org/apache/flex/core/UIMetrics.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/UIMetrics.js b/frameworks/projects/Core/js/src/org/apache/flex/core/UIMetrics.js
index be46526..8e09862 100644
--- a/frameworks/projects/Core/js/src/org/apache/flex/core/UIMetrics.js
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/UIMetrics.js
@@ -49,3 +49,31 @@ org_apache_flex_core_UIMetrics.prototype.bottom = 0;
* @type {number}
*/
org_apache_flex_core_UIMetrics.prototype.right = 0;
+
+
+/**
+ * @export
+ * @type {number}
+ */
+org_apache_flex_core_UIMetrics.prototype.marginTop = 0;
+
+
+/**
+ * @export
+ * @type {number}
+ */
+org_apache_flex_core_UIMetrics.prototype.marginLeft = 0;
+
+
+/**
+ * @export
+ * @type {number}
+ */
+org_apache_flex_core_UIMetrics.prototype.marginBottom = 0;
+
+
+/**
+ * @export
+ * @type {number}
+ */
+org_apache_flex_core_UIMetrics.prototype.marginRight = 0;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3a6ed918/frameworks/projects/Core/js/src/org/apache/flex/utils/BeadMetrics.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/utils/BeadMetrics.js b/frameworks/projects/Core/js/src/org/apache/flex/utils/BeadMetrics.js
index 815ec10..bfac84f 100644
--- a/frameworks/projects/Core/js/src/org/apache/flex/utils/BeadMetrics.js
+++ b/frameworks/projects/Core/js/src/org/apache/flex/utils/BeadMetrics.js
@@ -44,5 +44,16 @@ org_apache_flex_utils_BeadMetrics.getMetrics = function(strand) {
if (style['padding_right']) box.right = Number(style.padding_right);
if (style['padding_bottom']) box.bottom = Number(style.padding_bottom);
}
+ if (style['margin']) {
+ box.marginLeft = Number(style.margin);
+ box.marginTop = Number(style.margin);
+ box.marginRight = Number(style.margin);
+ box.marginBottom = Number(style.margin);
+ } else {
+ if (style['margin_top']) box.marginTop = Number(style.margin_top);
+ if (style['margin_left']) box.marginLeft = Number(style.margin_left);
+ if (style['margin_bottom']) box.marginBottom = Number(style.margin_bottom);
+ if (style['margin_right']) box.marginRight = Number(style.margin_right);
+ }
return box;
};
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3a6ed918/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/AlertView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/AlertView.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/AlertView.as
index ccc5692..3244ac0 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/AlertView.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/AlertView.as
@@ -158,21 +158,25 @@ package org.apache.flex.html.beads
var metrics:UIMetrics = BeadMetrics.getMetrics(_strand);
- _titleBar.x = metrics.left;
- _titleBar.y = metrics.top;
+ _titleBar.x = 0;
+ _titleBar.y = 0;
_titleBar.width = maxWidth;
+ _titleBar.height = 25;
+ _titleBar.dispatchEvent(new Event("layoutNeeded"));
// content placement here
_label.x = metrics.left;
- _label.y = _titleBar.y + _titleBar.height + 2;
- _label.width = maxWidth;
+ _label.y = _titleBar.y + _titleBar.height + metrics.top;
+ _label.width = maxWidth - metrics.left - metrics.right;
- _controlBar.x = metrics.left;
- _controlBar.y = _label.y + _label.height + 2;
+ _controlBar.x = 0;
+ _controlBar.y = _titleBar.height + _label.y + _label.height + metrics.bottom;
_controlBar.width = maxWidth;
+ _controlBar.height = 25;
+ _controlBar.dispatchEvent(new Event("layoutNeeded"));
- UIBase(_strand).width = maxWidth + metrics.left + metrics.right;
- UIBase(_strand).height = _controlBar.y + _controlBar.height + metrics.bottom + 2;
+ UIBase(_strand).width = maxWidth;
+ UIBase(_strand).height = _titleBar.height + _label.height + _controlBar.height + metrics.top + metrics.bottom;
}
/**
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3a6ed918/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as
index 30179e5..67da9a4 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as
@@ -98,11 +98,16 @@ package org.apache.flex.html.beads
// any changes to values in the Panel's model that correspond values in the TitleBar will
// be picked up automatically by the TitleBar.
titleBar.model = host.model;
- host.addElement(titleBar, false);
- titleBar.addEventListener("heightChanged", titleBarHeightChanged);
super.strand = value;
-
+ }
+
+ override protected function completeSetup():void
+ {
+ super.completeSetup();
+
+ UIBase(_strand).addElement(titleBar, false);
+ titleBar.addEventListener("heightChanged", titleBarHeightChanged);
}
/**
@@ -114,6 +119,8 @@ package org.apache.flex.html.beads
var metrics:UIMetrics = BeadMetrics.getMetrics(host);
titleBar.width = host.width;
+ titleBar.height = 25;
+ titleBar.dispatchEvent( new Event("layoutNeeded") );
var model:IViewportModel = viewport.model;
model.viewportX = 0;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3a6ed918/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelWithControlBarView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelWithControlBarView.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelWithControlBarView.as
index 509920b..286184b 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelWithControlBarView.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelWithControlBarView.as
@@ -109,12 +109,24 @@ package org.apache.flex.html.beads
// any changes to values in the Panel's model that correspond values in the TitleBar will
// be picked up automatically by the TitleBar.
titleBar.model = host.model;
- host.addElement(titleBar, false);
- titleBar.addEventListener("heightChanged", chromeHeightChanged);
var controlBarItems:Array = (host.model as IPanelModel).controlBar;
if( controlBarItems && controlBarItems.length > 0 ) {
_controlBar = new ControlBar();
+ }
+
+ super.strand = value;
+ }
+
+ override protected function completeSetup():void
+ {
+ super.completeSetup();
+
+ UIBase(_strand).addElement(titleBar, false);
+ titleBar.addEventListener("heightChanged", chromeHeightChanged);
+
+ var controlBarItems:Array = (UIBase(_strand).model as IPanelModel).controlBar;
+ if( _controlBar ) {
_controlBar.percentWidth = 100;
_controlBar.height = 30;
@@ -123,11 +135,9 @@ package org.apache.flex.html.beads
}
_controlBar.dispatchEvent(new Event("layoutNeeded"));
- host.addElement(controlBar, false);
+ UIBase(_strand).addElement(controlBar, false);
controlBar.addEventListener("heightChanged", chromeHeightChanged);
}
-
- super.strand = value;
}
override protected function resizeViewport():void