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; }
