Repository: flex-asjs Updated Branches: refs/heads/develop 594963123 -> 24e96cfc2
Modified Container beads and changed the order of when the MXML children were added to the strand, making that happen after addedToParent() was called. Added new UIUtils class with static function to center components. Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/24e96cfc Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/24e96cfc Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/24e96cfc Branch: refs/heads/develop Commit: 24e96cfc2c264853defd34104a2650a06be52031 Parents: 5949631 Author: Peter Ent <[email protected]> Authored: Fri Mar 14 16:06:08 2014 -0400 Committer: Peter Ent <[email protected]> Committed: Fri Mar 14 16:06:08 2014 -0400 ---------------------------------------------------------------------- .../as/projects/FlexJSUI/src/FlexJSUIClasses.as | 2 + .../src/org/apache/flex/core/ContainerBase.as | 7 +- .../html/staticControls/beads/ContainerView.as | 70 +++++++++++++++----- .../flex/html/staticControls/beads/PanelView.as | 17 ++++- .../beads/layouts/NonVirtualVerticalLayout.as | 1 + 5 files changed, 75 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24e96cfc/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as b/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as index 3091f39..96767b0 100644 --- a/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as +++ b/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as @@ -56,6 +56,7 @@ internal class FlexJSUIClasses import org.apache.flex.html.staticControls.beads.SliderView; SliderView; import org.apache.flex.html.staticControls.beads.SliderThumbView; SliderThumbView; import org.apache.flex.html.staticControls.beads.SliderTrackView; SliderTrackView; + import org.apache.flex.html.staticControls.beads.SolidBackgroundBead; SolidBackgroundBead; import org.apache.flex.html.staticControls.beads.SpinnerView; SpinnerView; import org.apache.flex.html.staticControls.beads.TextButtonMeasurementBead; TextButtonMeasurementBead; import org.apache.flex.html.staticControls.beads.TextFieldLabelMeasurementBead; TextFieldLabelMeasurementBead; @@ -99,6 +100,7 @@ internal class FlexJSUIClasses import org.apache.flex.events.CustomEvent; CustomEvent; import org.apache.flex.events.Event; Event; import org.apache.flex.utils.Timer; Timer; + import org.apache.flex.utils.UIUtils; UIUtils; import org.apache.flex.core.SimpleStatesImpl; SimpleStatesImpl; import mx.core.ClassFactory; ClassFactory; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24e96cfc/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ContainerBase.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ContainerBase.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ContainerBase.as index 1360531..9284fa8 100644 --- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ContainerBase.as +++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ContainerBase.as @@ -67,12 +67,13 @@ package org.apache.flex.core ValuesManager.valuesImpl.init(this); MXMLDataInterpreter.generateMXMLProperties(this, mxmlProperties); + + super.addedToParent(); + MXMLDataInterpreter.generateMXMLInstances(this, this, MXMLDescriptor); - super.addedToParent(); - dispatchEvent(new Event("initComplete")) - dispatchEvent( new Event("childrenAdded") ); + dispatchEvent(new Event("childrenAdded")); } /** http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24e96cfc/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ContainerView.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ContainerView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ContainerView.as index 8a776c8..67f1458 100644 --- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ContainerView.as +++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ContainerView.as @@ -25,10 +25,11 @@ package org.apache.flex.html.staticControls.beads import org.apache.flex.core.IBeadView; import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.IStrand; + import org.apache.flex.core.UIBase; import org.apache.flex.core.ValuesManager; import org.apache.flex.html.staticControls.Container; import org.apache.flex.html.staticControls.supportClasses.Border; - import org.apache.flex.html.staticControls.supportClasses.ContainerContentArea; + import org.apache.flex.html.staticControls.supportClasses.ContainerContentArea; import org.apache.flex.html.staticControls.supportClasses.ScrollBar; /** @@ -104,9 +105,39 @@ package org.apache.flex.html.staticControls.beads value.addBead(new (ValuesManager.valuesImpl.getValue(value, "iBorderBead")) as IBead); } + var padding:Object = determinePadding(); + + if (contentAreaNeeded()) + { + actualParent = new ContainerContentArea(); + DisplayObjectContainer(value).addChild(actualParent); + Container(value).setActualParent(actualParent); + actualParent.x = padding.paddingLeft; + actualParent.y = padding.paddingTop; + } + else + { + actualParent = value as UIBase; + } + } + + /** + * Determines the top and left padding values, if any, as set by + * padding style values. This includes "padding" for all padding values + * as well as "padding-left" and "padding-top". + * + * Returns an object with paddingLeft and paddingTop properties. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + protected function determinePadding():Object + { var paddingLeft:Object; var paddingTop:Object; - var padding:Object = ValuesManager.valuesImpl.getValue(value, "padding"); + var padding:Object = ValuesManager.valuesImpl.getValue(_strand, "padding"); if (padding is Array) { if (padding.length == 1) @@ -124,8 +155,8 @@ package org.apache.flex.html.staticControls.beads } else if (padding == null) { - paddingLeft = ValuesManager.valuesImpl.getValue(value, "padding-left"); - paddingTop = ValuesManager.valuesImpl.getValue(value, "padding-top"); + paddingLeft = ValuesManager.valuesImpl.getValue(_strand, "padding-left"); + paddingTop = ValuesManager.valuesImpl.getValue(_strand, "padding-top"); } else { @@ -133,19 +164,24 @@ package org.apache.flex.html.staticControls.beads } var pl:Number = Number(paddingLeft); var pt:Number = Number(paddingTop); - if ((!isNaN(pl) && pl > 0 || - !isNaN(pt) && pt > 0)) - { - actualParent = new ContainerContentArea(); - DisplayObjectContainer(value).addChild(actualParent); - Container(value).setActualParent(actualParent); - actualParent.x = pl; - actualParent.y = pt; - } - else - { - actualParent = value as DisplayObjectContainer; - } + + return {paddingLeft:pl, paddingTop:pt}; + } + + /** + * Returns true if container to create a separate ContainerContentArea. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + protected function contentAreaNeeded():Boolean + { + var padding:Object = determinePadding(); + + return (!isNaN(padding.paddingLeft) && padding.paddingLeft > 0 || + !isNaN(padding.paddingTop) && padding.paddingTop > 0); } /** http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24e96cfc/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/PanelView.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/PanelView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/PanelView.as index 0846b11..2108ea1 100644 --- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/PanelView.as +++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/PanelView.as @@ -121,8 +121,21 @@ package org.apache.flex.html.staticControls.beads Container(_strand).addElement(controlBar); } - IEventDispatcher(_strand).addEventListener("childrenAdded", changeHandler); - + IEventDispatcher(_strand).addEventListener("childrenAdded", changeHandler); + } + + /** + * Always returns true because Panel's content is separate from its chrome + * elements such as the title bar and optional control bar. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + override protected function contentAreaNeeded():Boolean + { + return true; } /** http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/24e96cfc/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.as index 5b6afe7..33f48e8 100644 --- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.as +++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.as @@ -69,6 +69,7 @@ package org.apache.flex.html.staticControls.beads.layouts IEventDispatcher(value).addEventListener("heightChanged", changeHandler); IEventDispatcher(value).addEventListener("childrenAdded", changeHandler); IEventDispatcher(value).addEventListener("itemsCreated", changeHandler); + IEventDispatcher(value).addEventListener("beadsAdded", changeHandler); } private function changeHandler(event:Event):void
