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

aharui pushed a commit to branch feature/MXRoyale
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit b4068222b4e8b934df80e5b632122436286fa477
Author: Alex Harui <aha...@apache.org>
AuthorDate: Fri Aug 10 15:46:25 2018 -0700

    module loader for emulation components
---
 .../projects/Basic/src/main/royale/BasicClasses.as |   3 +
 .../org/apache/royale/html/UIModuleLoader.as       | 128 ++-------------------
 .../UIModuleLoader.as => utils/UIModuleUtils.as}   |  43 ++++---
 .../src/main/royale/mx/modules/ModuleLoader.as     |  33 +++---
 4 files changed, 53 insertions(+), 154 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/BasicClasses.as 
b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
index ef6ef6e..f0c3701 100644
--- a/frameworks/projects/Basic/src/main/royale/BasicClasses.as
+++ b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
@@ -298,6 +298,9 @@ internal class BasicClasses
        import org.apache.royale.html.beads.models.TreeGridModel; TreeGridModel;
        import org.apache.royale.html.beads.layouts.TreeGridLayout; 
TreeGridLayout;
        import org.apache.royale.html.beads.TreeGridView; TreeGridView;
+    
+    import org.apache.royale.utils.UIModuleUtils; UIModuleUtils;
+
 }
 
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/UIModuleLoader.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/UIModuleLoader.as
index 3667d38..63b7a34 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/UIModuleLoader.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/UIModuleLoader.as
@@ -21,6 +21,7 @@ package org.apache.royale.html
        import org.apache.royale.core.IUIBase;
        import org.apache.royale.core.UIBase;
        import org.apache.royale.utils.PointUtils;
+    import org.apache.royale.utils.UIModuleUtils;
        import org.apache.royale.geom.Point;
        import org.apache.royale.events.Event;
        
@@ -64,8 +65,6 @@ package org.apache.royale.html
                        super();
                }
                
-        private var _modulePath:String;
-        
         /**
          *  Path or URL of module.  This is combined
          *  with the module name and a platform suffix
@@ -79,7 +78,7 @@ package org.apache.royale.html
          */
         public function get modulePath():String
         {
-            return _modulePath;
+            return utils.modulePath;
         }
         
         /**
@@ -87,75 +86,28 @@ package org.apache.royale.html
          */
         public function set modulePath(value:String):void
         {
-            _modulePath = value;
+            utils.modulePath = value;
         }
         
-        private var _moduleName:String;
-        
         public function get moduleName():String
         {
-            return _moduleName;
+            return utils.moduleName;
         }
         
         public function set moduleName(value:String):void
         {
-            _moduleName = value;
+            utils.moduleName = value;
         }
-        
-               COMPILE::SWF
-               private var swfLoader:Loader;
-               
-               COMPILE::JS
-               private var jsLoader:WrappedHTMLElement;
-
-        COMPILE::JS
-        private var jsDepsLoader:WrappedHTMLElement;
-        
+                
         override public function addedToParent():void
         {
             super.addedToParent();
-            if (_modulePath)
+            if (utils.moduleName)
                 loadModule();
         }
-        
-               /**
-                * @private
-                * @royaleignorecoercion 
org.apache.royale.core.WrappedHTMLElement
-                */
-               private function createLoader():void
-               {
-                       COMPILE::SWF {                          
-                               if (swfLoader != null) {
-                    
swfLoader.contentLoaderInfo.removeEventListener("complete", completeHandler);
-                               }
-                               
-                               swfLoader = new Loader();
-                swfLoader.contentLoaderInfo.addEventListener("complete", 
completeHandler);
-                       }
-                               
-                       COMPILE::JS {
-                               var origin:Point = new Point(0,0);
-                               var xlated:Point = 
PointUtils.localToGlobal(origin, parent);
-                               
-                if (goog.DEBUG)
-                {
-                    if (jsDepsLoader == null) {
-                        jsDepsLoader = document.createElement('script') as 
WrappedHTMLElement;
-                        jsDepsLoader.onload = loadDepsHandler;
-                        document.body.appendChild(jsDepsLoader);
-                    }                    
-                }
-                else
-                {
-                               if (jsLoader == null) {
-                                       jsLoader = 
document.createElement('script') as WrappedHTMLElement;
-                        jsLoader.onload = loadHandler;
-                                       document.body.appendChild(jsLoader);
-                               }
-                }
-                       }
-               }
                
+        private var utils:UIModuleUtils = new UIModuleUtils();
+        
                /**
          *  Load the module.  Will be called automatically if modulePath
          *  is set as the UIModuleLoader is added to the display list.
@@ -167,67 +119,7 @@ package org.apache.royale.html
                 */
                public function loadModule():void
                {
-            if (moduleInstance)
-                removeElement(moduleInstance);
-            
-                       createLoader();
-                       
-                       COMPILE::SWF {
-                               var url:URLRequest = new URLRequest(modulePath 
? modulePath + "/" + moduleName + ".swf" :
-                                                    moduleName + ".swf");
-                               var loaderContext:LoaderContext = new 
LoaderContext(false, ApplicationDomain.currentDomain, null);
-                               swfLoader.load(url, loaderContext);
-                               if (swfLoader.parent == null) {
-                                       addChild(swfLoader);
-                               }
-                       }
-                               
-                       COMPILE::JS {
-                if (!goog.DEBUG)
-                               jsLoader.setAttribute("src", modulePath ? 
modulePath + "/" + moduleName + ".js" :
-                        moduleName + ".js");
-                else
-                {
-                    // js-debug module loading requires that the __deps.js 
file has been tweaked
-                    // so that the path to the module class is correct and 
that any
-                    // framework js files have been copied into the same tree 
structure as
-                    // the main apps framework js files
-                    window["goog"]["ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING"] = 
true;
-                    jsDepsLoader.setAttribute("src", modulePath ? modulePath + 
"/" + moduleName + "__deps.js" :
-                        moduleName + "__deps.js");
-                }
-                       }
-               }
-        
-        private var moduleInstance:IUIBase;
-        
-        COMPILE::SWF
-        protected function completeHandler(event:flash.events.Event):void
-        {
-            var c:Class = 
ApplicationDomain.currentDomain.getDefinition(moduleName) as Class;
-            moduleInstance = new c() as IUIBase;
-            addElement(moduleInstance);
-        }
-        
-        COMPILE::JS
-        protected function loadDepsHandler():void
-        {
-            // wait for other scripts to load
-            if (window[moduleName] == null)
-            {
-                setTimeout(loadDepsHandler, 250);
-            }
-            else
-                loadHandler();
-                
-        }
-        
-        COMPILE::JS
-        protected function loadHandler():void
-        {
-            var c:Class = window[moduleName];
-            moduleInstance = new c() as IUIBase;
-            addElement(moduleInstance);
+            utils.loadModule(this);
         }
        }
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/UIModuleLoader.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/utils/UIModuleUtils.as
similarity index 90%
copy from 
frameworks/projects/Basic/src/main/royale/org/apache/royale/html/UIModuleLoader.as
copy to 
frameworks/projects/Basic/src/main/royale/org/apache/royale/utils/UIModuleUtils.as
index 3667d38..fe557cf 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/UIModuleLoader.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/utils/UIModuleUtils.as
@@ -16,13 +16,13 @@
 //  limitations under the License.
 //
 
////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.html
+package org.apache.royale.utils
 {
+       import org.apache.royale.core.IParentIUIBase;
        import org.apache.royale.core.IUIBase;
-       import org.apache.royale.core.UIBase;
-       import org.apache.royale.utils.PointUtils;
-       import org.apache.royale.geom.Point;
        import org.apache.royale.events.Event;
+       import org.apache.royale.geom.Point;
+       import org.apache.royale.utils.PointUtils;
        
        COMPILE::SWF
        {
@@ -41,7 +41,7 @@ package org.apache.royale.html
     }
     
     /**
-     *  The UIModuleLoader class can load a UIModule. 
+     *  The UIModuleUtils class can load a UIModule. 
         * 
      *  @toplevel
      *  @langversion 3.0
@@ -49,7 +49,7 @@ package org.apache.royale.html
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.0
      */    
-       public class UIModuleLoader extends UIBase
+       public class UIModuleUtils
        {
         /**
          *  Constructor.
@@ -59,7 +59,7 @@ package org.apache.royale.html
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.0
          */
-               public function UIModuleLoader()
+               public function UIModuleUtils()
                {
                        super();
                }
@@ -103,21 +103,14 @@ package org.apache.royale.html
         }
         
                COMPILE::SWF
-               private var swfLoader:Loader;
+               public var swfLoader:Loader;
                
                COMPILE::JS
-               private var jsLoader:WrappedHTMLElement;
+               public var jsLoader:WrappedHTMLElement;
 
         COMPILE::JS
         private var jsDepsLoader:WrappedHTMLElement;
-        
-        override public function addedToParent():void
-        {
-            super.addedToParent();
-            if (_modulePath)
-                loadModule();
-        }
-        
+                
                /**
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.core.WrappedHTMLElement
@@ -135,7 +128,7 @@ package org.apache.royale.html
                                
                        COMPILE::JS {
                                var origin:Point = new Point(0,0);
-                               var xlated:Point = 
PointUtils.localToGlobal(origin, parent);
+                               var xlated:Point = 
PointUtils.localToGlobal(origin, host.parent);
                                
                 if (goog.DEBUG)
                 {
@@ -155,6 +148,8 @@ package org.apache.royale.html
                 }
                        }
                }
+        
+        private var host:IParentIUIBase;
                
                /**
          *  Load the module.  Will be called automatically if modulePath
@@ -165,10 +160,12 @@ package org.apache.royale.html
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.0
                 */
-               public function loadModule():void
+               public function loadModule(host:IParentIUIBase):void
                {
+            this.host = host;
+            
             if (moduleInstance)
-                removeElement(moduleInstance);
+                host.removeElement(moduleInstance);
             
                        createLoader();
                        
@@ -178,7 +175,7 @@ package org.apache.royale.html
                                var loaderContext:LoaderContext = new 
LoaderContext(false, ApplicationDomain.currentDomain, null);
                                swfLoader.load(url, loaderContext);
                                if (swfLoader.parent == null) {
-                                       addChild(swfLoader);
+                                       (host as 
DisplayObjectContainer).addChild(swfLoader);
                                }
                        }
                                
@@ -206,7 +203,7 @@ package org.apache.royale.html
         {
             var c:Class = 
ApplicationDomain.currentDomain.getDefinition(moduleName) as Class;
             moduleInstance = new c() as IUIBase;
-            addElement(moduleInstance);
+            host.addElement(moduleInstance);
         }
         
         COMPILE::JS
@@ -227,7 +224,7 @@ package org.apache.royale.html
         {
             var c:Class = window[moduleName];
             moduleInstance = new c() as IUIBase;
-            addElement(moduleInstance);
+            host.addElement(moduleInstance);
         }
        }
 }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/modules/ModuleLoader.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/modules/ModuleLoader.as
index 450a469..601d6b1 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/modules/ModuleLoader.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/modules/ModuleLoader.as
@@ -33,6 +33,8 @@ import mx.system.ApplicationDomain;
 //import flash.utils.ByteArray;
 //import mx.core.IDeferredInstantiationUIComponent;
 
+import org.apache.royale.utils.UIModuleUtils;
+
 //--------------------------------------
 //  Events
 //--------------------------------------
@@ -207,6 +209,8 @@ public class ModuleLoader extends VBox
         super();
     }
 
+    private var utils:UIModuleUtils = new UIModuleUtils();
+    
     
//--------------------------------------------------------------------------
     //
     //  Variables
@@ -221,7 +225,7 @@ public class ModuleLoader extends VBox
     /**
      *  @private
      */
-    //private var loadRequested:Boolean = false;
+    private var loadRequested:Boolean = true;
 
     
//--------------------------------------------------------------------------
     //
@@ -283,12 +287,6 @@ public class ModuleLoader extends VBox
     //----------------------------------
 
     /**
-     *  @private
-     *  Storage for the url property.
-     */
-    private var _url:String = null;
-
-    /**
      *  The location of the module, expressed as a URL.
      *  
      *  @langversion 3.0
@@ -298,7 +296,7 @@ public class ModuleLoader extends VBox
      */
     public function get url():String
     {
-        return _url;
+        return utils.modulePath + "/" + utils.moduleName + ".swf";
     }
 
     /**
@@ -306,8 +304,8 @@ public class ModuleLoader extends VBox
      */
      public function set url(value:String):void
     {
-        if (value == _url)
-            return;
+        //if (value == _url)
+        //    return;
                /*
         var wasLoaded:Boolean = false;
         
@@ -331,12 +329,21 @@ public class ModuleLoader extends VBox
             }
         }
           */
-        _url = value;
+        var c:int = value.lastIndexOf("/");
+        if (c == -1)
+        {
+            utils.modulePath = "";
+            utils.moduleName = value.replace(".swf", "");
+        }
+        else
+        {
+            utils.modulePath = value.substring(0, c);
+            utils.moduleName = value.substring(c + 1).replace(".swf", "");;
+        }
 
         dispatchEvent(new FlexEvent(FlexEvent.URL_CHANGED));
 
-        //if (_url != null && _url != "" && loadRequested)
-        //   loadModule();
+        utils.loadModule(this);
     }
  
 }

Reply via email to