This is an automated email from the ASF dual-hosted git repository.

gregdove pushed a commit to branch improvements/Language
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit bce6ba5a778372f10f60ba4f7af872da56740a39
Author: greg-dove <greg.d...@gmail.com>
AuthorDate: Thu May 23 18:30:06 2019 +1200

    refactor private beads to correspond to different requirements between 
targets
---
 .../main/royale/org/apache/royale/core/UIBase.as   |  99 ++----------------
 .../org/apache/royale/core/HTMLElementWrapper.as   | 112 +++++++++++++++++++--
 2 files changed, 109 insertions(+), 102 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
index 613c940..a9f9f52 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
@@ -904,43 +904,6 @@ package org.apache.royale.core
         {
             return element.childNodes as Array;
         }
-        
-        COMPILE::SWF
-               private var _model:IBeadModel;
-
-        /**
-         *  An IBeadModel that serves as the data model for the component.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.0
-         */
-        COMPILE::SWF
-        public function get model():Object
-               {
-            if (_model == null)
-            {
-                // addbead will set _model
-                addBead(new (ValuesManager.valuesImpl.getValue(this, 
"iBeadModel")) as IBead);
-            }
-                       return _model;
-               }
-
-        COMPILE::SWF
-        /**
-         * @private
-         * @royaleignorecoercion org.apache.royale.core.IBead
-         */
-        [Bindable("modelChanged")]
-               public function set model(value:Object):void
-               {
-                       if (_model != value)
-                       {
-                               addBead(value as IBead);
-                               dispatchEvent(new Event("modelChanged"));
-                       }
-               }
                
         private var _view:IBeadView;
         
@@ -1157,8 +1120,6 @@ package org.apache.royale.core
          */
                public var beads:Array;
                
-        COMPILE::SWF
-               private var _beads:Vector.<IBead>;
         
         /**
          *  @copy org.apache.royale.core.IStrand#addBead()
@@ -1173,17 +1134,12 @@ package org.apache.royale.core
                override public function addBead(bead:IBead):void
                {
             var isView:Boolean;
-                       if (!_beads)
-                               _beads = new Vector.<IBead>;
-                       _beads.push(bead);
-                       if (bead is IBeadModel)
-                               _model = bead as IBeadModel;
-            else if (bead is IBeadView)
-            {
-                _view = bead as IBeadView;
-                isView = true
-            }
-                       bead.strand = this;
+                       
+                       super.addBead(bead);
+                       if (this._model !== bead && bead is IBeadView) {
+                               _view = bead as IBeadView;
+                               isView = true
+                       }
                        
                        if (isView) {
                                dispatchEvent(new Event("viewChanged"));
@@ -1191,49 +1147,6 @@ package org.apache.royale.core
                }
                
         /**
-         *  @copy org.apache.royale.core.IStrand#getBeadByType()
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.0
-         */
-        COMPILE::SWF
-               public function getBeadByType(classOrInterface:Class):IBead
-               {
-                       for each (var bead:IBead in _beads)
-                       {
-                               if (bead is classOrInterface)
-                                       return bead;
-                       }
-                       return null;
-               }
-               
-        /**
-         *  @copy org.apache.royale.core.IStrand#removeBead()
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.0
-         */
-        COMPILE::SWF
-               public function removeBead(value:IBead):IBead   
-               {
-                       var n:int = _beads.length;
-                       for (var i:int = 0; i < n; i++)
-                       {
-                               var bead:IBead = _beads[i];
-                               if (bead == value)
-                               {
-                                       _beads.splice(i, 1);
-                                       return bead;
-                               }
-                       }
-                       return null;
-               }
-               
-        /**
          *  @copy org.apache.royale.core.IParent#addElement()
          * 
          *  @langversion 3.0
diff --git 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
index 4ebff5a..85e5597 100644
--- 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
+++ 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
@@ -23,6 +23,7 @@ package org.apache.royale.core
     COMPILE::SWF
     {
         import flash.display.Sprite;
+        import org.apache.royale.events.Event;
     }
         
     COMPILE::JS
@@ -35,18 +36,110 @@ package org.apache.royale.core
         import goog.events;
         import goog.events.BrowserEvent;
         import goog.events.EventTarget;
+        import goog.DEBUG;
         import org.apache.royale.events.utils.EventUtils;
     }
 
     COMPILE::SWF
-    public class HTMLElementWrapper extends Sprite
+    public class HTMLElementWrapper extends Sprite implements IStrand, 
IEventDispatcher
     {
+        
+        private var _beads:Vector.<IBead>;
+    
         /**
-         * "abstract" method so we can override in JS
          * @param bead The new bead.
          */
         public function addBead(bead:IBead):void
-        {            
+        {
+            if (!_beads)
+            {
+                _beads = new Vector.<IBead>();
+            }
+            _beads.push(bead);
+        
+            if (bead is IBeadModel)
+            {
+                _model = bead as IBeadModel;
+            }
+        
+            bead.strand = this;
+        }
+    
+        /**
+         *  @copy org.apache.royale.core.IStrand#getBeadByType()
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+        public function getBeadByType(classOrInterface:Class):IBead
+        {
+            for each (var bead:IBead in _beads)
+            {
+                if (bead is classOrInterface)
+                    return bead;
+            }
+            return null;
+        }
+    
+    
+        /**
+         *  @copy org.apache.royale.core.IStrand#removeBead()
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+        public function removeBead(value:IBead):IBead
+        {
+            var n:int = _beads.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                var bead:IBead = _beads[i];
+                if (bead == value)
+                {
+                    _beads.splice(i, 1);
+                    return bead;
+                }
+            }
+            return null;
+        }
+    
+    
+    
+        /**
+         * allow access from overrides
+         */
+        protected var _model:IBeadModel;
+    
+        /**
+         * @royaleignorecoercion Class
+         * @royaleignorecoercion org.apache.royale.core.IBeadModel
+         */
+        public function get model():Object
+        {
+            if (_model == null)
+            {
+                // addbead will set _model
+                addBead(new (ValuesManager.valuesImpl.getValue(this, 
"iBeadModel")) as IBead);
+            }
+            return _model;
+        }
+    
+        /**
+         * @private
+         * @royaleignorecoercion org.apache.royale.core.IBead
+         */
+        [Bindable("modelChanged")]
+        public function set model(value:Object):void
+        {
+            if (_model != value)
+            {
+                addBead(value as IBead);
+                dispatchEvent(new Event("modelChanged"));
+            }
         }
     }
     
@@ -132,7 +225,7 @@ package org.apache.royale.core
         /**
          * allow access from overrides
          */
-               protected var _model:Object;
+               protected var _model:IBeadModel;
         
         /**
          * @royaleignorecoercion Class 
@@ -153,6 +246,7 @@ package org.apache.royale.core
         
         /**
          * @royaleignorecoercion org.apache.royale.core.IBead
+         * @royaleignorecoercion org.apache.royale.core.IBeadModel
          */
         [Bindable("modelChanged")]
         public function set model(value:Object):void
@@ -162,12 +256,12 @@ package org.apache.royale.core
                 if (value is IBead)
                     addBead(value as IBead);
                 else
-                    _model = value;
+                    _model = IBeadModel(value);
                 dispatchEvent(new 
org.apache.royale.events.Event("modelChanged"));
             }
         }
-
-               protected var _beads:Vector.<IBead>;
+        
+               private var _beads:Array;
         
                //--------------------------------------
                //   Function
@@ -181,9 +275,9 @@ package org.apache.royale.core
                {
                        if (!_beads)
                        {
-                               _beads = new Vector.<IBead>();
+                               _beads = [];
                        }
-
+            if (goog.DEBUG && !(bead is IBead)) throw new TypeError('Cannot 
convert '+bead+' to IBead')
                        _beads.push(bead);
 
                        if (bead is IBeadModel)

Reply via email to