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 2013/06/20 20:31:39 UTC

git commit: [flex-asjs] [refs/heads/develop] - Changed UIMetrics to be top, left, bottom.right so as to be more universal and to include both border thickness and padding. Updated Alert, SimpleAlert, and Panel to use the new metrics. Changed order of beads

Updated Branches:
  refs/heads/develop fc36f4a7f -> 2c8fa396b


Changed UIMetrics to be top,left,bottom.right so as to be more universal and to include both border thickness and padding. Updated Alert, SimpleAlert, and Panel to use the new metrics. Changed order of beads for Container so that background lies below the border.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/2c8fa396
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/2c8fa396
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/2c8fa396

Branch: refs/heads/develop
Commit: 2c8fa396b2426255c3e6151f5da153ee1a9935df
Parents: fc36f4a
Author: Peter Ent <pe...@apache.org>
Authored: Thu Jun 20 14:31:25 2013 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Thu Jun 20 14:31:25 2013 -0400

----------------------------------------------------------------------
 frameworks/as/defaults.css                      |  7 ++
 .../as/src/org/apache/flex/core/UIMetrics.as    |  8 +--
 .../apache/flex/html/staticControls/Panel.as    |  3 +
 .../flex/html/staticControls/beads/AlertBead.as | 22 +++----
 .../html/staticControls/beads/ContainerBead.as  | 16 +++--
 .../flex/html/staticControls/beads/PanelBead.as | 67 ++++++--------------
 .../staticControls/beads/SimpleAlertBead.as     | 14 ++--
 .../as/src/org/apache/flex/utils/BeadMetrics.as | 39 ++++++++++--
 8 files changed, 96 insertions(+), 80 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c8fa396/frameworks/as/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/as/defaults.css b/frameworks/as/defaults.css
index 8577021..adaa202 100644
--- a/frameworks/as/defaults.css
+++ b/frameworks/as/defaults.css
@@ -138,6 +138,13 @@ Panel
 {
     IPanelModel: ClassReference("org.apache.flex.html.staticControls.beads.models.PanelModel");
     IPanelBead: ClassReference("org.apache.flex.html.staticControls.beads.PanelBead");
+    iBorderBead: ClassReference("org.apache.flex.html.staticControls.beads.SingleLineBorderBead");
+    iBackgroundBead: ClassReference("org.apache.flex.html.staticControls.beads.SolidBackgroundBead");
+
+    background-color: #FFFFFF;
+    border-style: solid;
+    border-color: #000000;
+    border-thickness: 1;
 }
 
 SimpleAlert

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c8fa396/frameworks/as/src/org/apache/flex/core/UIMetrics.as
----------------------------------------------------------------------
diff --git a/frameworks/as/src/org/apache/flex/core/UIMetrics.as b/frameworks/as/src/org/apache/flex/core/UIMetrics.as
index 345c75c..65cd424 100644
--- a/frameworks/as/src/org/apache/flex/core/UIMetrics.as
+++ b/frameworks/as/src/org/apache/flex/core/UIMetrics.as
@@ -24,12 +24,12 @@ package org.apache.flex.core
 		{
 		}
 		
-		public var x:Number;
+		public var top:Number;
 		
-		public var y:Number;
+		public var left:Number;
 		
-		public var width:Number;
+		public var bottom:Number;
 		
-		public var height:Number;
+		public var right:Number;
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c8fa396/frameworks/as/src/org/apache/flex/html/staticControls/Panel.as
----------------------------------------------------------------------
diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/Panel.as b/frameworks/as/src/org/apache/flex/html/staticControls/Panel.as
index d1c8ac6..2c43c8b 100644
--- a/frameworks/as/src/org/apache/flex/html/staticControls/Panel.as
+++ b/frameworks/as/src/org/apache/flex/html/staticControls/Panel.as
@@ -22,6 +22,8 @@ package org.apache.flex.html.staticControls
 	import org.apache.flex.core.IPanelModel;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
+	import org.apache.flex.html.staticControls.beads.IBackgroundBead;
+	import org.apache.flex.html.staticControls.beads.IBorderBead;
 	import org.apache.flex.html.staticControls.beads.IPanelBead;
 	import org.apache.flex.html.staticControls.beads.PanelBead;
 
@@ -110,6 +112,7 @@ package org.apache.flex.html.staticControls
 			if( getBeadByType(IPanelBead) == null) {
 				addBead(new (ValuesManager.valuesImpl.getValue(this,"iPanelBead")) as IBead);
 			}
+			
 			titleBar.title = this.title;
 			titleBar.showCloseButton = this.showCloseButton;
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c8fa396/frameworks/as/src/org/apache/flex/html/staticControls/beads/AlertBead.as
----------------------------------------------------------------------
diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/beads/AlertBead.as b/frameworks/as/src/org/apache/flex/html/staticControls/beads/AlertBead.as
index 49d5cf1..31bbc21 100644
--- a/frameworks/as/src/org/apache/flex/html/staticControls/beads/AlertBead.as
+++ b/frameworks/as/src/org/apache/flex/html/staticControls/beads/AlertBead.as
@@ -115,21 +115,21 @@ package org.apache.flex.html.staticControls.beads
 			
 			var metrics:UIMetrics = BeadMetrics.getMetrics(_strand);
 
-			_titleBar.x = metrics.x;
-			_titleBar.y = metrics.y;
-			_titleBar.width = maxWidth - 2*metrics.x;
+			_titleBar.x = metrics.left;
+			_titleBar.y = metrics.top;
+			_titleBar.width = maxWidth;
 			
 			// content placement here
-			_label.x = metrics.x;
-			_label.y = metrics.y + _titleBar.height + 2;
-			_label.width = maxWidth - 2*metrics.x;
+			_label.x = metrics.left;
+			_label.y = _titleBar.y + _titleBar.height + 2;
+			_label.width = maxWidth;
 			
-			_controlBar.x = metrics.x;
-			_controlBar.y = metrics.x + _label.y + _label.height + 2;
-			_controlBar.width = maxWidth - 2*metrics.x;
+			_controlBar.x = metrics.left;
+			_controlBar.y = _label.y + _label.height + 2;
+			_controlBar.width = maxWidth;
 			
-			UIBase(_strand).width = maxWidth;
-			UIBase(_strand).height = _controlBar.y + _controlBar.height + metrics.y;
+			UIBase(_strand).width = maxWidth + metrics.left + metrics.right;
+			UIBase(_strand).height = _controlBar.y + _controlBar.height + metrics.bottom + 2;
 		}
 		
 		private function handleOK(event:Event):void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c8fa396/frameworks/as/src/org/apache/flex/html/staticControls/beads/ContainerBead.as
----------------------------------------------------------------------
diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/beads/ContainerBead.as b/frameworks/as/src/org/apache/flex/html/staticControls/beads/ContainerBead.as
index faac381..a67db7b 100644
--- a/frameworks/as/src/org/apache/flex/html/staticControls/beads/ContainerBead.as
+++ b/frameworks/as/src/org/apache/flex/html/staticControls/beads/ContainerBead.as
@@ -37,6 +37,15 @@ package org.apache.flex.html.staticControls.beads
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
+			
+			var backgroundColor:Object = ValuesManager.valuesImpl.getValue(value, "background-color");
+			var backgroundImage:Object = ValuesManager.valuesImpl.getValue(value, "background-image");
+			if (backgroundColor != null || backgroundImage != null)
+			{
+				if (value.getBeadByType(IBackgroundBead) == null)
+					value.addBead(new (ValuesManager.valuesImpl.getValue(value, "iBackgroundBead")) as IBead);					
+			}
+			
 			var borderStyle:String;
 			var borderStyles:Object = ValuesManager.valuesImpl.getValue(value, "border");
 			if (borderStyles is Array)
@@ -52,13 +61,6 @@ package org.apache.flex.html.staticControls.beads
 				if (value.getBeadByType(IBorderBead) == null)
 					value.addBead(new (ValuesManager.valuesImpl.getValue(value, "iBorderBead")) as IBead);	
 			}
-			var backgroundColor:Object = ValuesManager.valuesImpl.getValue(value, "background-color");
-			var backgroundImage:Object = ValuesManager.valuesImpl.getValue(value, "background-image");
-			if (backgroundColor != null || backgroundImage != null)
-			{
-				if (value.getBeadByType(IBackgroundBead) == null)
-					value.addBead(new (ValuesManager.valuesImpl.getValue(value, "iBackgroundBead")) as IBead);					
-			}
 			
 			var paddingLeft:Object;
 			var paddingTop:Object;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c8fa396/frameworks/as/src/org/apache/flex/html/staticControls/beads/PanelBead.as
----------------------------------------------------------------------
diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/beads/PanelBead.as b/frameworks/as/src/org/apache/flex/html/staticControls/beads/PanelBead.as
index d465401..80a59c7 100644
--- a/frameworks/as/src/org/apache/flex/html/staticControls/beads/PanelBead.as
+++ b/frameworks/as/src/org/apache/flex/html/staticControls/beads/PanelBead.as
@@ -19,12 +19,13 @@
 package org.apache.flex.html.staticControls.beads
 {
 	import flash.display.DisplayObjectContainer;
-	import flash.display.Shape;
 	import flash.display.Sprite;
 	
 	import org.apache.flex.core.IBead;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.core.UIMetrics;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
@@ -32,6 +33,7 @@ package org.apache.flex.html.staticControls.beads
 	import org.apache.flex.html.staticControls.ControlBar;
 	import org.apache.flex.html.staticControls.Panel;
 	import org.apache.flex.html.staticControls.TitleBar;
+	import org.apache.flex.utils.BeadMetrics;
 	
 	public class PanelBead implements IBead, IContainerBead
 	{
@@ -74,29 +76,6 @@ package org.apache.flex.html.staticControls.beads
 				
 				Container(_strand).addChild(controlBar);
 			}
-
-			var borderStyle:String;
-			var borderStyles:Object = ValuesManager.valuesImpl.getValue(value, "border");
-			if (borderStyles is Array)
-			{
-				borderStyle = borderStyles[1];
-			}
-			if (borderStyle == null)
-			{
-				borderStyle = ValuesManager.valuesImpl.getValue(value, "border-style") as String;
-			}
-			if (borderStyle != null && borderStyle != "none")
-			{
-				if (value.getBeadByType(IBorderBead) == null)
-					value.addBead(new (ValuesManager.valuesImpl.getValue(value, "iBorderBead")) as IBead);	
-			}
-			var backgroundColor:Object = ValuesManager.valuesImpl.getValue(value, "background-color");
-			var backgroundImage:Object = ValuesManager.valuesImpl.getValue(value, "background-image");
-			if (backgroundColor != null || backgroundImage != null)
-			{
-				if (value.getBeadByType(IBackgroundBead) == null)
-					value.addBead(new (ValuesManager.valuesImpl.getValue(value, "iBackgroundBead")) as IBead);					
-			}
 			
 			var paddingLeft:Object;
 			var paddingTop:Object;
@@ -144,34 +123,30 @@ package org.apache.flex.html.staticControls.beads
 		
 		private var contentArea:DisplayObjectContainer;
 		private var controlBarArea:ControlBar;
-		private var controlBarBackground:Shape;
 		
 		private function changeHandler(event:Event):void
 		{
-			layoutTitleArea();
+			var metrics:UIMetrics = BeadMetrics.getMetrics(_strand);
 			
-			contentArea.x = 0;
-			contentArea.y = titleBar.height;
-			contentArea.width = Container(_strand).width;
+			titleBar.x = metrics.left;
+			titleBar.y = metrics.top;
+			titleBar.width = UIBase(_strand).width - (metrics.left + metrics.right);
 			
-			if( controlBar ) layoutControlBarArea();
+			contentArea.x = metrics.left;
+			contentArea.y = titleBar.y + titleBar.height;
+			contentArea.width = UIBase(_strand).width - (metrics.left + metrics.right);
 			
-			IEventDispatcher(_strand).dispatchEvent(new Event('widthChanged'));
-			IEventDispatcher(_strand).dispatchEvent(new Event('heightChanged'));
-		}
-		
-		protected function layoutTitleArea() : void
-		{
-			titleBar.x = 0;
-			titleBar.y = 0;
-			titleBar.width = Container(_strand).width;
-		}
-		
-		protected function layoutControlBarArea() : void
-		{
-			controlBar.x = 0;
-			controlBar.y = contentArea.y + contentArea.height;
-			controlBar.width = Container(_strand).width;
+			if( controlBar ) {
+				controlBar.x = metrics.left;
+				controlBar.y = contentArea.y + contentArea.height;
+				controlBar.width = UIBase(_strand).width - (metrics.left + metrics.right);
+			} 
+			
+			UIBase(_strand).height = metrics.top + metrics.bottom + titleBar.height + contentArea.height +
+				(controlBar ? controlBar.height : 0);
+			
+			//IEventDispatcher(_strand).dispatchEvent(new Event('widthChanged'));
+			//IEventDispatcher(_strand).dispatchEvent(new Event('heightChanged'));
 		}
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c8fa396/frameworks/as/src/org/apache/flex/html/staticControls/beads/SimpleAlertBead.as
----------------------------------------------------------------------
diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/beads/SimpleAlertBead.as b/frameworks/as/src/org/apache/flex/html/staticControls/beads/SimpleAlertBead.as
index d6c97a8..3d65868 100644
--- a/frameworks/as/src/org/apache/flex/html/staticControls/beads/SimpleAlertBead.as
+++ b/frameworks/as/src/org/apache/flex/html/staticControls/beads/SimpleAlertBead.as
@@ -83,15 +83,15 @@ package org.apache.flex.html.staticControls.beads
 			
 			var metrics:UIMetrics = BeadMetrics.getMetrics(_strand);
 			
-			messageLabel.x = metrics.x;
-			messageLabel.y = metrics.y;
-			messageLabel.width = maxWidth-2*metrics.x;
+			messageLabel.x = metrics.left;
+			messageLabel.y = metrics.top;
+			messageLabel.width = maxWidth;
 			
-			okButton.x = (UIBase(_strand).width - okButton.width)/2;
-			okButton.y = messageLabel.height + 20;
+			okButton.x = (maxWidth - okButton.width)/2;
+			okButton.y = messageLabel.y + messageLabel.height + 20;
 			
-			UIBase(_strand).width = maxWidth;
-			UIBase(_strand).height = messageLabel.height + okButton.height + 20 + 2*metrics.x;
+			UIBase(_strand).width = maxWidth + metrics.left + metrics.right;
+			UIBase(_strand).height = okButton.y + okButton.height + metrics.bottom;
 		}
 		
 		private function handleOK(event:Event):void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c8fa396/frameworks/as/src/org/apache/flex/utils/BeadMetrics.as
----------------------------------------------------------------------
diff --git a/frameworks/as/src/org/apache/flex/utils/BeadMetrics.as b/frameworks/as/src/org/apache/flex/utils/BeadMetrics.as
index be4c405..3ec3827 100644
--- a/frameworks/as/src/org/apache/flex/utils/BeadMetrics.as
+++ b/frameworks/as/src/org/apache/flex/utils/BeadMetrics.as
@@ -19,7 +19,6 @@
 package org.apache.flex.utils
 {
 	import org.apache.flex.core.IStrand;
-	import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.UIMetrics;
 	import org.apache.flex.core.ValuesManager;
 
@@ -38,11 +37,41 @@ public class BeadMetrics
 			if( isNaN(borderOffset) ) borderOffset = 0;
 		}
 		
+		var paddingLeft:Object;
+		var paddingTop:Object;
+		var padding:Object = ValuesManager.valuesImpl.getValue(strand, "padding");
+		if (padding is Array)
+		{
+			if (padding.length == 1)
+				paddingLeft = paddingTop = padding[0];
+			else if (padding.length <= 3)
+			{
+				paddingLeft = padding[1];
+				paddingTop = padding[0];
+			}
+			else if (padding.length == 4)
+			{
+				paddingLeft = padding[3];
+				paddingTop = padding[0];					
+			}
+		}
+		else if (padding == null)
+		{
+			paddingLeft = ValuesManager.valuesImpl.getValue(strand, "padding-left");
+			paddingTop = ValuesManager.valuesImpl.getValue(strand, "padding-top");
+		}
+		else
+		{
+			paddingLeft = paddingTop = padding;
+		}
+		var pl:Number = Number(paddingLeft);
+		var pt:Number = Number(paddingTop);
+		
 		var result:UIMetrics = new UIMetrics();
-		result.x = borderOffset;
-		result.y = borderOffset;
-		result.width = UIBase(strand).width - 2*borderOffset;
-		result.height = UIBase(strand).height - 2*borderOffset;
+		result.top = borderOffset + pt;
+		result.left = borderOffset + pl;
+		result.bottom = borderOffset + pt;
+		result.right = borderOffset + pl;
 		
 		return result;
 	}