Hi Peter,

Nice job! Could you please add @productversion FlexJS 0.8 ? I think it can
be useful in future.

Thanks,
Piotr

2017-03-06 19:15 GMT+01:00 <p...@apache.org>:

> Repository: flex-asjs
> Updated Branches:
>   refs/heads/develop 8fe2f0831 -> 79d45cba0
>
>
> Introducing the Group container.
>
>
> Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/79d45cba
> Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/79d45cba
> Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/79d45cba
>
> Branch: refs/heads/develop
> Commit: 79d45cba0616e394fddb68835859b1ffc87e6c48
> Parents: 8fe2f08
> Author: Peter Ent <p...@apache.org>
> Authored: Mon Mar 6 13:15:34 2017 -0500
> Committer: Peter Ent <p...@apache.org>
> Committed: Mon Mar 6 13:15:34 2017 -0500
>
> ----------------------------------------------------------------------
>  .../projects/HTML/src/main/flex/HTMLClasses.as  |   4 +-
>  .../main/flex/org/apache/flex/core/GroupBase.as | 301 +++++++++++++++++++
>  .../src/main/flex/org/apache/flex/html/Group.as |  92 ++++++
>  .../org/apache/flex/html/beads/GroupView.as     | 269 +++++++++++++++++
>  .../flex/html/beads/layouts/BasicLayout.as      |  73 +----
>  .../HTML/src/main/resources/basic-manifest.xml  |   1 +
>  .../HTML/src/main/resources/defaults.css        |  10 +
>  7 files changed, 689 insertions(+), 61 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 79d45cba/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
> b/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
> index bfe204b..41cb877 100644
> --- a/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
> +++ b/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
> @@ -26,8 +26,7 @@ package
>   *  from the classes specified in manifest.xml.
>   */
>  internal class HTMLClasses
> -{
> -
> +{
>      import org.apache.flex.html.ToolTip; ToolTip;
>         import org.apache.flex.html.accessories.NumericOnlyTextInputBead;
> NumericOnlyTextInputBead;
>         import org.apache.flex.html.beads.DispatchInputFinishedBead;
> DispatchInputFinishedBead;
> @@ -45,6 +44,7 @@ internal class HTMLClasses
>         }
>         import org.apache.flex.html.beads.ComboBoxView; ComboBoxView;
>      import org.apache.flex.html.beads.ContainerView; ContainerView;
> +       import org.apache.flex.html.beads.GroupView; GroupView;
>         COMPILE::SWF
>         {
>             import org.apache.flex.html.beads.ControlBarMeasurementBead;
> ControlBarMeasurementBead;
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 79d45cba/frameworks/projects/HTML/src/main/flex/org/apache/
> flex/core/GroupBase.as
> ----------------------------------------------------------------------
> diff --git 
> a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as
> b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as
> new file mode 100644
> index 0000000..7b945cc
> --- /dev/null
> +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/
> core/GroupBase.as
> @@ -0,0 +1,301 @@
> +///////////////////////////////////////////////////////////
> /////////////////////
> +//
> +//  Licensed to the Apache Software Foundation (ASF) under one or more
> +//  contributor license agreements.  See the NOTICE file distributed with
> +//  this work for additional information regarding copyright ownership.
> +//  The ASF licenses this file to You under the Apache License, Version
> 2.0
> +//  (the "License"); you may not use this file except in compliance with
> +//  the License.  You may obtain a copy of the License at
> +//
> +//      http://www.apache.org/licenses/LICENSE-2.0
> +//
> +//  Unless required by applicable law or agreed to in writing, software
> +//  distributed under the License is distributed on an "AS IS" BASIS,
> +//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> +//  See the License for the specific language governing permissions and
> +//  limitations under the License.
> +//
> +///////////////////////////////////////////////////////////
> /////////////////////
> +package org.apache.flex.core
> +{
> +       import org.apache.flex.core.IMXMLDocument;
> +       import org.apache.flex.core.ValuesManager;
> +       import org.apache.flex.events.Event;
> +       import org.apache.flex.events.ValueChangeEvent;
> +       import org.apache.flex.states.State;
> +       import org.apache.flex.utils.MXMLDataInterpreter;
> +
> +    /**
> +     *  Indicates that the state change has completed.  All properties
> +     *  that need to change have been changed, and all transitinos
> +     *  that need to run have completed.  However, any deferred work
> +     *  may not be completed, and the screen may not be updated until
> +     *  code stops executing.
> +     *
> +     *  @langversion 3.0
> +     *  @playerversion Flash 10.2
> +     *  @playerversion AIR 2.6
> +     *  @productversion FlexJS 0.0
> +     */
> +    [Event(name="stateChangeComplete", type="org.apache.flex.events.
> Event")]
> +
> +    /**
> +     *  Indicates that the initialization of the container is complete.
> +     *
> +     *  @langversion 3.0
> +     *  @playerversion Flash 10.2
> +     *  @playerversion AIR 2.6
> +     *  @productversion FlexJS 0.0
> +     */
> +    [Event(name="initComplete", type="org.apache.flex.events.Event")]
> +
> +    /**
> +     *  Indicates that the children of the container is have been added.
> +     *
> +     *  @langversion 3.0
> +     *  @playerversion Flash 10.2
> +     *  @playerversion AIR 2.6
> +     *  @productversion FlexJS 0.0
> +     */
> +    [Event(name="childrenAdded", type="org.apache.flex.events.Event")]
> +
> +       /**
> +        * The default property uses when additional MXML content appears
> within an element's
> +        * definition in an MXML file.
> +        */
> +       [DefaultProperty("mxmlContent")]
> +
> +    /**
> +     *  The GroupBase class is the base class for most simple containers
> +     *  in FlexJS.  It is usable as the root tag of MXML
> +     *  documents and UI controls and containers are added to it.
> +     *
> +     *  @langversion 3.0
> +     *  @playerversion Flash 10.2
> +     *  @playerversion AIR 2.6
> +     *  @productversion FlexJS 0.0
> +     */
> +       public class GroupBase extends UIBase implements IMXMLDocument,
> IStatesObject, IContainer
> +       {
> +        /**
> +         *  Constructor.
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +               public function GroupBase()
> +               {
> +                       super();
> +               }
> +
> +               /**
> +                * @flexjsignorecoercion org.apache.flex.core.
> WrappedHTMLElement
> +                */
> +               COMPILE::JS
> +               override protected function createElement():
> WrappedHTMLElement
> +               {
> +                       element = document.createElement('div') as
> WrappedHTMLElement;
> +                       element.flexjs_wrapper = this;
> +
> +                       positioner = element;
> +
> +                       return element;
> +               }
> +
> +        /**
> +         *  @private
> +         */
> +        public function childrenAdded():void
> +        {
> +            dispatchEvent(new Event("childrenAdded"));
> +        }
> +
> +               override public function addedToParent():void
> +               {
> +                       if (!_initialized)
> +                       {
> +                               // each MXML file can also have styles in
> fx:Style block
> +                               ValuesManager.valuesImpl.init(this);
> +                       }
> +
> +                       super.addedToParent();
> +
> +                       if (!_initialized)
> +                       {
> +                               MXMLDataInterpreter.
> generateMXMLInstances(_mxmlDocument, this, MXMLDescriptor);
> +
> +                               dispatchEvent(new Event("initBindings"));
> +                               dispatchEvent(new Event("initComplete"));
> +                               _initialized = true;
> +                       }
> +               }
> +
> +        private var _mxmlDescriptor:Array;
> +        private var _mxmlDocument:Object = this;
> +        private var _initialized:Boolean;
> +
> +        /**
> +         *  @copy org.apache.flex.core.Application#MXMLDescriptor
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +               public function get MXMLDescriptor():Array
> +               {
> +                       return _mxmlDescriptor;
> +               }
> +
> +        /**
> +         *  @private
> +         */
> +        public function setMXMLDescriptor(document:Object,
> value:Array):void
> +        {
> +            _mxmlDocument = document;
> +            _mxmlDescriptor = value;
> +        }
> +
> +        /**
> +         *  @copy org.apache.flex.core.Application#
> generateMXMLAttributes()
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +               public function generateMXMLAttributes(data:Array):void
> +               {
> +            MXMLDataInterpreter.generateMXMLProperties(this, data);
> +               }
> +
> +        /**
> +         *  @copy org.apache.flex.core.ItemRendererClassFactory#
> mxmlContent
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +               public var mxmlContent:Array;
> +
> +        private var _states:Array;
> +
> +        /**
> +         *  The array of view states. These should
> +         *  be instances of org.apache.flex.states.State.
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +        public function get states():Array
> +        {
> +            return _states;
> +        }
> +
> +        /**
> +         *  @private
> +         *  @flexjsignorecoercion Class
> +         *  @flexjsignorecoercion org.apache.flex.core.IBead
> +         */
> +        public function set states(value:Array):void
> +        {
> +            _states = value;
> +            _currentState = _states[0].name;
> +
> +                       try{
> +                               if (getBeadByType(IStatesImpl) == null)
> +                {
> +                    var c:Class = ValuesManager.valuesImpl.getValue(this,
> "iStatesImpl") as Class;
> +                    var b:Object = new c();
> +                                       addBead(b as IBead);
> +                }
> +                       }
> +                       //TODO:  Need to handle this case more gracefully
> +                       catch(e:Error)
> +                       {
> +                COMPILE::SWF
> +                {
> +                    trace(e.message);
> +                }
> +                       }
> +
> +        }
> +
> +        /**
> +         *  <code>true</code> if the array of states
> +         *  contains a state with this name.
> +         *
> +         *  @param state The state namem.
> +         *  @return True if state in state array
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +        public function hasState(state:String):Boolean
> +        {
> +            for each (var s:State in _states)
> +            {
> +                if (s.name == state)
> +                    return true;
> +            }
> +            return false;
> +        }
> +
> +        private var _currentState:String;
> +
> +        [Bindable("currentStateChange")]
> +        /**
> +         *  The name of the current state.
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +        public function get currentState():String
> +        {
> +            return _currentState;
> +        }
> +
> +        /**
> +         *  @private
> +         */
> +        public function set currentState(value:String):void
> +        {
> +            var event:ValueChangeEvent = new 
> ValueChangeEvent("currentStateChange",
> false, false, _currentState, value)
> +            _currentState = value;
> +            dispatchEvent(event);
> +        }
> +
> +        private var _transitions:Array;
> +
> +        /**
> +         *  The array of transitions.
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +        public function get transitions():Array
> +        {
> +            return _transitions;
> +        }
> +
> +        /**
> +         *  @private
> +         */
> +        public function set transitions(value:Array):void
> +        {
> +            _transitions = value;
> +        }
> +
> +    }
> +}
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 79d45cba/frameworks/projects/HTML/src/main/flex/org/apache/
> flex/html/Group.as
> ----------------------------------------------------------------------
> diff --git 
> a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Group.as
> b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Group.as
> new file mode 100644
> index 0000000..a881d10
> --- /dev/null
> +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Group.as
> @@ -0,0 +1,92 @@
> +///////////////////////////////////////////////////////////
> /////////////////////
> +//
> +//  Licensed to the Apache Software Foundation (ASF) under one or more
> +//  contributor license agreements.  See the NOTICE file distributed with
> +//  this work for additional information regarding copyright ownership.
> +//  The ASF licenses this file to You under the Apache License, Version
> 2.0
> +//  (the "License"); you may not use this file except in compliance with
> +//  the License.  You may obtain a copy of the License at
> +//
> +//      http://www.apache.org/licenses/LICENSE-2.0
> +//
> +//  Unless required by applicable law or agreed to in writing, software
> +//  distributed under the License is distributed on an "AS IS" BASIS,
> +//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> +//  See the License for the specific language governing permissions and
> +//  limitations under the License.
> +//
> +///////////////////////////////////////////////////////////
> /////////////////////
> +package org.apache.flex.html
> +{
> +       import org.apache.flex.core.GroupBase;
> +       import org.apache.flex.core.IContainer;
> +       import org.apache.flex.core.ILayoutHost;
> +       import org.apache.flex.core.ILayoutParent;
> +       import org.apache.flex.core.IMXMLDocument;
> +       import org.apache.flex.core.IStrand;
> +       import org.apache.flex.core.IBead;
> +       import org.apache.flex.core.IBeadLayout;
> +       import org.apache.flex.core.IParentIUIBase;
> +       import org.apache.flex.core.IUIBase;
> +       import org.apache.flex.core.UIBase;
> +       import org.apache.flex.core.ValuesManager;
> +       import org.apache.flex.events.Event;
> +       import org.apache.flex.utils.MXMLDataInterpreter;
> +
> +       /**
> +        *  Indicates that the children of the container is have been
> added.
> +        *
> +        *  @langversion 3.0
> +        *  @playerversion Flash 10.2
> +        *  @playerversion AIR 2.6
> +        *  @productversion FlexJS 0.0
> +        */
> +       [Event(name="childrenAdded", type="org.apache.flex.events.Event")]
> +
> +       /**
> +        * Default property
> +        */
> +       [DefaultProperty("mxmlContent")]
> +
> +    /**
> +     *  The Group class provides a light-weight container for visual
> elements. By default
> +        *  the Group does not have a layout, allowing its children to be
> sized and positioned
> +        *  using styles or CSS.
> +     *
> +     *  @toplevel
> +     *  @see org.apache.flex.html.beads.layout
> +     *  @see org.apache.flex.html.supportClasses.ScrollingViewport
> +     *  @langversion 3.0
> +     *  @playerversion Flash 10.2
> +     *  @playerversion AIR 2.6
> +     *  @productversion FlexJS 0.0
> +     */
> +       public class Group extends GroupBase implements ILayoutParent,
> IParentIUIBase
> +       {
> +        /**
> +         *  Constructor.
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +               public function Group()
> +               {
> +                       super();
> +               }
> +
> +               /**
> +                * Returns the ILayoutHost which is its view. From
> ILayoutParent.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               public function getLayoutHost():ILayoutHost
> +               {
> +                       return view as ILayoutHost;
> +               }
> +       }
> +}
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 79d45cba/frameworks/projects/HTML/src/main/flex/org/apache/
> flex/html/beads/GroupView.as
> ----------------------------------------------------------------------
> diff --git 
> a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/GroupView.as
> b/frameworks/projects/HTML/src/main/flex/org/apache/flex/
> html/beads/GroupView.as
> new file mode 100644
> index 0000000..c63e013
> --- /dev/null
> +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/
> html/beads/GroupView.as
> @@ -0,0 +1,269 @@
> +///////////////////////////////////////////////////////////
> /////////////////////
> +//
> +//  Licensed to the Apache Software Foundation (ASF) under one or more
> +//  contributor license agreements.  See the NOTICE file distributed with
> +//  this work for additional information regarding copyright ownership.
> +//  The ASF licenses this file to You under the Apache License, Version
> 2.0
> +//  (the "License"); you may not use this file except in compliance with
> +//  the License.  You may obtain a copy of the License at
> +//
> +//      http://www.apache.org/licenses/LICENSE-2.0
> +//
> +//  Unless required by applicable law or agreed to in writing, software
> +//  distributed under the License is distributed on an "AS IS" BASIS,
> +//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> +//  See the License for the specific language governing permissions and
> +//  limitations under the License.
> +//
> +///////////////////////////////////////////////////////////
> /////////////////////
> +package org.apache.flex.html.beads
> +{
> +       import org.apache.flex.core.IBead;
> +       import org.apache.flex.core.IBeadLayout;
> +       import org.apache.flex.core.IBeadView;
> +       import org.apache.flex.core.ILayoutChild;
> +       import org.apache.flex.core.ILayoutHost;
> +       import org.apache.flex.core.IParentIUIBase;
> +       import org.apache.flex.core.IStrand;
> +       import org.apache.flex.core.IUIBase;
> +       import org.apache.flex.core.BeadViewBase;
> +       import org.apache.flex.core.UIBase;
> +       import org.apache.flex.core.ValuesManager;
> +       import org.apache.flex.events.Event;
> +
> +       /**
> +        *  The GroupView is a bead that manages the layout bead (if any)
> attached to a Group. This class
> +        *  also provides support for background and border styles for a
> Group on the SWF platform.
> +     *
> +        *  @viewbead
> +     *  @langversion 3.0
> +     *  @playerversion Flash 10.2
> +     *  @playerversion AIR 2.6
> +     *  @productversion FlexJS 0.0
> +        */
> +       public class GroupView extends BeadViewBase implements IBeadView,
> ILayoutHost
> +       {
> +               /**
> +        *  The GroupView class is the default view for
> +         *  the org.apache.flex.html.Group class.
> +         *  It lets you use some CSS styles to manage the border,
> background
> +         *  and padding around the content area.
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.0
> +         */
> +               public function GroupView()
> +               {
> +                       super();
> +
> +                       layoutRunning = false;
> +               }
> +
> +               /**
> +                * The sub-element used as the parent of the container's
> elements. This does not
> +                * include the chrome elements.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               public function get contentView():IParentIUIBase
> +               {
> +                       return host as IParentIUIBase;
> +               }
> +
> +               /**
> +                * The view that can be resized.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               public function get resizableView():IUIBase
> +               {
> +                       return host;
> +               }
> +
> +
> +               private var layoutRunning:Boolean;
> +
> +               /**
> +                * Strand setter.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               override public function set strand(value:IStrand):void
> +               {
> +                       _strand = value;
> +                       super.strand = value;
> +
> +                       COMPILE::SWF {
> +                               displayBackgroundAndBorder(host as
> UIBase);
> +                       }
> +
> +                       // listen for initComplete to signal that the
> strand is set with its size
> +                       // and beads.
> +                       host.addEventListener("beadsAdded",
> beadsAddedHandler);
> +               }
> +
> +               /**
> +                * Handles the initComplete event by completing the setup
> and kicking off the
> +                * presentation of the Container.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               protected function beadsAddedHandler(event:Event):void
> +               {
> +            var ilc:ILayoutChild = host as ILayoutChild;
> +                       // Complete the setup if the height is sized to
> content or has been explicitly set
> +            // and the width is sized to content or has been explicitly
> set
> +                       if ((ilc.isHeightSizedToContent() ||
> !isNaN(ilc.explicitHeight)) &&
> +                (ilc.isWidthSizedToContent() ||
> !isNaN(ilc.explicitWidth))) {
> +                               completeSetup();
> +
> +                               var num:Number = contentView.numElements;
> +                               if (num > 0) performLayout(event);
> +                       }
> +                       else {
> +                               // otherwise, wait until the unknown sizes
> have been set and then finish
> +                               host.addEventListener("sizeChanged",
> deferredSizeHandler);
> +                host.addEventListener("widthChanged",
> deferredSizeHandler);
> +                host.addEventListener("heightChanged",
> deferredSizeHandler);
> +                       }
> +               }
> +
> +               /**
> +                * Handles the case where the size of the host is not
> immediately known, usually do
> +                * to one of its dimensions being indicated as a percent
> size.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               private function deferredSizeHandler(event:Event):void
> +               {
> +            host.removeEventListener("sizeChanged", deferredSizeHandler);
> +            host.removeEventListener("widthChanged",
> deferredSizeHandler);
> +            host.removeEventListener("heightChanged",
> deferredSizeHandler);
> +                       completeSetup();
> +
> +                       var num:Number = contentView.numElements;
> +                       if (num > 0)
> +            {
> +                performLayout(event);
> +            }
> +               }
> +
> +               /**
> +                * Called when the host is ready to complete its setup
> (usually after its size has been
> +                * determined).
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               protected function completeSetup():void
> +               {
> +                       // set up listeners for when children are added or
> there is a specific request
> +                       // to perform the layout again.
> +                       host.addEventListener("childrenAdded",
> performLayout);
> +                       host.addEventListener("layoutNeeded",
> performLayout);
> +                       host.addEventListener("viewCreated",
> viewCreatedHandler);
> +               }
> +
> +               /**
> +                * Handles the viewCreated event by performing the first
> layout if
> +                * there are children already present (ie, from MXML).
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               protected function viewCreatedHandler(event:Event):void
> +               {
> +                       if ((host as UIBase).numElements > 0) {
> +                               performLayout(null);
> +                       }
> +               }
> +
> +               /**
> +                * Executes the layout associated with this container.
> Once the layout has been
> +                * run, it may affect the size of the host or may cause
> the host to present scroll
> +                * bars view its viewport.
> +                *
> +                *  @langversion 3.0
> +                *  @playerversion Flash 10.2
> +                *  @playerversion AIR 2.6
> +                *  @productversion FlexJS 0.0
> +                */
> +               protected function performLayout(event:Event):void
> +               {
> +                       layoutRunning = true;
> +
> +                       var host:UIBase = _strand as UIBase;
> +
> +                       var layout:IBeadLayout = 
> _strand.getBeadByType(IBeadLayout)
> as IBeadLayout;
> +                       if (layout == null) {
> +                               var c:Class = 
> ValuesManager.valuesImpl.getValue(host,
> "iBeadLayout");
> +                               if (c) {
> +                                       layout = new c() as IBeadLayout;
> +                                       _strand.addBead(layout);
> +                               }
> +                       }
> +
> +                       if (layout) {
> +                               layout.layout();
> +                       }
> +
> +                       layoutRunning = false;
> +               }
> +
> +               COMPILE::SWF
> +               protected function displayBackgroundAndBorder(host:UIBase)
> : void
> +               {
> +                       var backgroundColor:Object =
> ValuesManager.valuesImpl.getValue(host, "background-color");
> +                       var backgroundImage:Object =
> ValuesManager.valuesImpl.getValue(host, "background-image");
> +                       if (backgroundColor != null || backgroundImage !=
> null)
> +                       {
> +                               if (host.getBeadByType(IBackgroundBead)
> == null)
> +                                       var c:Class =
> ValuesManager.valuesImpl.getValue(host, "iBackgroundBead");
> +                               if (c) {
> +                                       host.addBead( new c() as IBead );
> +                               }
> +                       }
> +
> +                       var borderStyle:String;
> +                       var borderStyles:Object = 
> ValuesManager.valuesImpl.getValue(host,
> "border");
> +                       if (borderStyles is Array)
> +                       {
> +                               borderStyle = borderStyles[1];
> +                       }
> +                       if (borderStyle == null)
> +                       {
> +                               borderStyle = 
> ValuesManager.valuesImpl.getValue(host,
> "border-style") as String;
> +                       }
> +                       if (borderStyle != null && borderStyle != "none")
> +                       {
> +                               if (host.getBeadByType(IBorderBead) ==
> null) {
> +                                       c = 
> ValuesManager.valuesImpl.getValue(host,
> "iBorderBead");
> +                                       if (c) {
> +                                               host.addBead( new c() as
> IBead );
> +                                       }
> +                               }
> +                       }
> +               }
> +       }
> +}
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 79d45cba/frameworks/projects/HTML/src/main/flex/org/apache/
> flex/html/beads/layouts/BasicLayout.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/
> html/beads/layouts/BasicLayout.as b/frameworks/projects/HTML/
> src/main/flex/org/apache/flex/html/beads/layouts/BasicLayout.as
> index 642b14c..3a7293e 100644
> --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/
> html/beads/layouts/BasicLayout.as
> +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/
> html/beads/layouts/BasicLayout.as
> @@ -374,73 +374,28 @@ package org.apache.flex.html.beads.layouts
>                  return true;
>
>              }
> +
>              COMPILE::JS
>              {
>                  var i:int
>                  var n:int;
> -                var h:Number;
> -                var w:Number;
>
>                  var viewBead:ILayoutHost = (host as
> ILayoutParent).getLayoutHost();
>                  var contentView:IParentIUIBase = viewBead.contentView;
> -                w = contentView.width;
> -                var hasWidth:Boolean = !host.isWidthSizedToContent();
> -                h = contentView.height;
> -                var hasHeight:Boolean = !host.isHeightSizedToContent();
> -                var maxHeight:Number = 0;
> -                var maxWidth:Number = 0;
> +
>                  n = contentView.numElements;
> -                for (i = 0; i < n; i++) {
> -                    var child:UIBase = contentView.getElementAt(i) as
> UIBase;
> -                                       if (child == null ||
> !child.visible) continue;
> -                    child.setDisplayStyleForLayout('block');
> -                    var left:Number = org.apache.flex.core.
> ValuesManager.valuesImpl.getValue(child, 'left');
> -                    var right:Number = org.apache.flex.core.
> ValuesManager.valuesImpl.getValue(child, 'right');
> -                    var top:Number = org.apache.flex.core.
> ValuesManager.valuesImpl.getValue(child, 'top');
> -                    var bottom:Number = org.apache.flex.core.
> ValuesManager.valuesImpl.getValue(child, 'bottom');
> -                    var margin:String = org.apache.flex.core.
> ValuesManager.valuesImpl.getValue(child, 'margin');
> -                    var marginLeft:String = org.apache.flex.core.
> ValuesManager.valuesImpl.getValue(child, 'margin-left');
> -                    var marginRight:String = org.apache.flex.core.
> ValuesManager.valuesImpl.getValue(child, 'margin-right');
> -                    var horizontalCenter:Boolean =
> -                        (marginLeft == 'auto' && marginRight == 'auto') ||
> -                        (typeof(margin) === 'string' && margin == 'auto')
> ||
> -                        (margin && margin.hasOwnProperty('length') &&
> -                            ((margin.length < 4 && margin[1] == 'auto') ||
> -                                (margin.length == 4 && margin[1] ==
> 'auto' && margin[3] == 'auto')));
> -
> -                    if (!isNaN(left)) {
> -                        child.positioner.style.position = 'absolute';
> -                        child.positioner.style.left = left + 'px';
> -                    }
> -                    if (!isNaN(top)) {
> -                        child.positioner.style.position = 'absolute';
> -                        child.positioner.style.top = top + 'px';
> -                    }
> -                    if (!isNaN(right)) {
> -                        child.positioner.style.position = 'absolute';
> -                        child.positioner.style.right = right + 'px';
> -                    }
> -                    if (!isNaN(bottom)) {
> -                        child.positioner.style.position = 'absolute';
> -                        child.positioner.style.bottom = bottom + 'px';
> -                    }
> -                    if (horizontalCenter)
> -                    {
> -                        child.positioner.style.position = 'absolute';
> -                        child.positioner.style.left = Math.max(((w -
> child.width) / 2),0) + 'px';
> -                    }
> -                    child.dispatchEvent('sizeChanged');
> -                    maxWidth = Math.max(maxWidth,
> child.positioner.offsetLeft + child.positioner.offsetWidth);
> -                    maxHeight = Math.max(maxHeight,
> child.positioner.offsetTop + child.positioner.offsetHeight);
> -                }
> -                // if there are children and maxHeight is ok, use it.
> -                // maxHeight can be NaN if the child hasn't been rendered
> yet.
> -                if (!hasWidth && n > 0 && !isNaN(maxWidth)) {
> -                    contentView.width = maxWidth;
> -                }
> -                if (!hasHeight && n > 0 && !isNaN(maxHeight)) {
> -                    contentView.height = maxHeight;
> -                }
> +
> +                               // host must have either have
> position:absolute or position:relative
> +                               if (host.element.style.position !=
> "absolute" && host.element.style.position != "relative") {
> +                                       host.element.style.position =
> "relative";
> +                               }
> +
> +                               // each child must have position:absolute
> for BasicLayout to work
> +                               for (i=0; i < n; i++) {
> +                                       var child:UIBase =
> contentView.getElementAt(i) as UIBase;
> +                                       child.positioner.style.position =
> "absolute";
> +                               }
> +
>                                 host.dispatchEvent( new
> Event("layoutComplete") );
>                  return true;
>              }
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 79d45cba/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
> b/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
> index cd70a11..bfaa723 100644
> --- a/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
> +++ b/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
> @@ -46,6 +46,7 @@
>      <component id="ComboBox" class="org.apache.flex.html.ComboBox"/>
>      <component id="ComboBoxList" class="org.apache.flex.html.
> supportClasses.ComboBoxList"/>
>      <component id="Container" class="org.apache.flex.html.Container"/>
> +    <component id="Group" class="org.apache.flex.html.Group"/>
>      <component id="Accordion" class="org.apache.flex.html.Accordion"/>
>      <component id="Form" class="org.apache.flex.html.Form"/>
>      <component id="HContainer" class="org.apache.flex.html.HContainer"/>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/
> 79d45cba/frameworks/projects/HTML/src/main/resources/defaults.css
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/HTML/src/main/resources/defaults.css
> b/frameworks/projects/HTML/src/main/resources/defaults.css
> index 2951025..ec54999 100644
> --- a/frameworks/projects/HTML/src/main/resources/defaults.css
> +++ b/frameworks/projects/HTML/src/main/resources/defaults.css
> @@ -273,6 +273,10 @@ Form {
>
>  }
>
> +Group {
> +       IBeadView: ClassReference("org.apache.flex.html.beads.GroupView");
> +}
> +
>  HContainer
>  {
>         IBeadView: ClassReference("org.apache.
> flex.html.beads.ContainerView");
> @@ -624,6 +628,12 @@ global
>                 background-color: #FFFFFF;
>         }
>
> +       Group
> +       {
> +               iBackgroundBead: ClassReference("org.apache.
> flex.html.beads.SolidBackgroundBead");
> +               iBorderBead: ClassReference("org.apache.flex.html.beads.
> SingleLineBorderBead");
> +       }
> +
>         HRule
>         {
>                 IBeadView:  ClassReference("org.apache.
> flex.html.beads.HRuleView");
>
>


-- 

Greetings
Piotr Zarzycki

Flex/AIR/.NET Developer

mobile: +48 880 859 557
e-mail: piotrzarzyck...@gmail.com
skype: zarzycki10

LinkedIn: http://www.linkedin.com/piotrzarzycki
<https://pl.linkedin.com/in/piotr-zarzycki-92a53552>

Reply via email to