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 <[email protected]>
Authored: Thu Jun 20 14:31:25 2013 -0400
Committer: Peter Ent <[email protected]>
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;
        }

Reply via email to