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