[Laszlo-checkins] r11823 - in openlaszlo/trunk: WEB-INF/lps/lfc WEB-INF/lps/lfc/core WEB-INF/lps/lfc/kernel WEB-INF/lps/lfc/kernel/dhtml WEB-INF/lps/lfc/kernel/swf WEB-INF/lps/lfc/kernel/swf9 WEB-INF/lps/lfc/views WEB-INF/lps/server/src/org/openlaszlo/compiler WEB-INF/lps/server/src/org/openlaszlo/sc test/snippets

hqm@openlaszlo.org hqm at openlaszlo.org
Tue Nov 18 16:25:53 PST 2008


Author: hqm
Date: 2008-11-18 16:25:42 -0800 (Tue, 18 Nov 2008)
New Revision: 11823

Added:
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzBaseLoadableLib.as
Removed:
   openlaszlo/trunk/WEB-INF/lps/lfc/glue/
Modified:
   openlaszlo/trunk/WEB-INF/lps/lfc/LaszloLibrary.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/core/LzNode.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/LzLibraryCleanup.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzLibrary.js
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/DebugExec.as
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LFCApplication.as
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/Library.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzLibrary.as
   openlaszlo/trunk/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/DataCompiler.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ElementCompiler.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ImportCompiler.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9ParseTreePrinter.java
   openlaszlo/trunk/test/snippets/import-class.lzx
   openlaszlo/trunk/test/snippets/import-script.lzx
   openlaszlo/trunk/test/snippets/script-library.lzx
Log:
Change 20081118-hqm-i by hqm at badtzmaru.home on 2008-11-18 19:23:31 EST
    in /Users/hqm/openlaszlo/trunk4
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: swf9 import libraries

New Features:

Bugs Fixed: LPP-7291

Technical Reviewer: dda
QA Reviewer: ptw
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details:

+ implementation of swf9 loadable libraries

+ removed LFC /glue, moved LzInstantiateView to canvas


Tests:
test/snippets
smokecheck
lzpix




Modified: openlaszlo/trunk/WEB-INF/lps/lfc/LaszloLibrary.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/LaszloLibrary.lzs	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/LaszloLibrary.lzs	2008-11-19 00:25:42 UTC (rev 11823)
@@ -54,7 +54,6 @@
 #include "helpers/Library.lzs"
 #include "data/Library.lzs"
 #include "services/Library.lzs"
-#include "glue/Library.lzs"
 
 if ($swf9) {
   //Debugger placeholder

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/core/LzNode.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/core/LzNode.lzs	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/core/LzNode.lzs	2008-11-19 00:25:42 UTC (rev 11823)
@@ -2267,8 +2267,6 @@
    return [ self,  name ];
  }
 
-
-
 } // End of LzNode
 
 lz[LzNode.tagname] = LzNode;  // publish

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/LzLibraryCleanup.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/LzLibraryCleanup.lzs	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/LzLibraryCleanup.lzs	2008-11-19 00:25:42 UTC (rev 11823)
@@ -19,9 +19,14 @@
 /** @access private */
     static var attributes = new LzInheritedHash(LzNode.attributes);
 
-    function LzLibraryCleanup ( owner , args ) {
-        super(owner, args);
-        var lib = LzLibrary.findLibrary(args.libname);
+    var lib:* = null;
+
+    function LzLibraryCleanup ( parent:LzNode? = null , attrs:Object? = null , children:Array? = null, instcall:Boolean  = false) {
+        super(parent,attrs,children,instcall);
+    }
+
+    function $lzc$set_libname(val) {
+        this.lib = LzLibrary.findLibrary(val);
         lib.loadfinished();
     }
 

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzLibrary.js
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzLibrary.js	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzLibrary.js	2008-11-19 00:25:42 UTC (rev 11823)
@@ -149,7 +149,7 @@
         Debug.error("could not find library with href", url);
     } else {
         lib.loaded = true;
-        LzInstantiateView({attrs: {libname: lib.name}, "class": LzLibraryCleanup}, 1);
+        canvas.LzInstantiateView({attrs: {libname: lib.name}, "class": LzLibraryCleanup}, 1);
         // Run the queue to instantiate all pending LzInstantiateView calls.
         canvas.initDone();
     }

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs	2008-11-19 00:25:42 UTC (rev 11823)
@@ -79,7 +79,7 @@
         lib.loaded = true;
     }
 
-    LzInstantiateView({attrs: {libname: lib.name}, "class": LzLibraryCleanup}, 1);
+    canvas.LzInstantiateView({attrs: {libname: lib.name}, "class": LzLibraryCleanup}, 1);
     
     // Run the queue to instantiate all pending LzInstantiateView calls.
     canvas.initDone();

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/DebugExec.as
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/DebugExec.as	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/DebugExec.as	2008-11-19 00:25:42 UTC (rev 11823)
@@ -24,6 +24,7 @@
     }#
 
     public function DebugExec (...ignore) {
+        runToplevelDefinitions();
     }
 
     public function write(...args):void {
@@ -31,6 +32,10 @@
         lzconsole.write(args.join(" "));
     }
 
+    public function runToplevelDefinitions() {
+        // Overridden by method in code emitted by SWF9 script compiler
+    }
+
     public function doit ():void {
         trace("DebugExec.doit() was invoked...");
         write("DebugExec.doit() was invoked...");

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LFCApplication.as
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LFCApplication.as	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LFCApplication.as	2008-11-19 00:25:42 UTC (rev 11823)
@@ -206,6 +206,12 @@
         */
         LzKeyboardKernel.__keyboardEvent(event, 'onkeydown');
     }
+
+    public function runToplevelDefinitions() {
+        // overridden by swf9 script compiler
+    }
+
+
 }
 
 // Resource library

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/Library.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/Library.lzs	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/Library.lzs	2008-11-19 00:25:42 UTC (rev 11823)
@@ -12,6 +12,7 @@
 #include "kernel/swf9/DebugExec.as"
 
 #include "kernel/swf9/LFCApplication.as"
+#include "kernel/swf9/LzBaseLoadableLib.as"
 #include "kernel/swf9/LzIdleKernel.as"
 #include "kernel/swf9/LzSprite.as"
 #include "kernel/swf9/LzTextSprite.as"

Added: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzBaseLoadableLib.as


Property changes on: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzBaseLoadableLib.as
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzLibrary.as
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzLibrary.as	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzLibrary.as	2008-11-19 00:25:42 UTC (rev 11823)
@@ -15,10 +15,18 @@
 class LzLibrary extends LzNode {
 
     #passthrough (toplevel:true) {  
-        import flash.events.*;
-        import flash.net.*;
-        import flash.utils.*;
-        import flash.xml.*;  
+  import flash.display.*;
+  import flash.events.*;
+  import flash.text.*;
+  import flash.ui.*;
+  import flash.geom.*;
+  import flash.utils.*;
+  import mx.controls.Button;
+  import flash.net.*;
+  import flash.utils.*;
+  import flash.system.*;
+
+
     }#
 
 /** @access private
@@ -58,6 +66,15 @@
 var stage = "late";//"late|defer"
 
 /**
+  * @access private
+  */
+function $lzc$set_stage(val) {
+    this.stage = val;
+}
+
+
+
+/**
  * Sent when this library has finished loading. 
  * 
  * @lzxtype event
@@ -65,13 +82,26 @@
  */
 var onload = LzDeclaredEvent;
 
+/** @access private
+ * @modifiers override 
+ */
+function LzLibrary ( parent:LzNode? = null , attrs:Object? = null , children:Array? = null, instcall:Boolean  = false) {
+    super(parent,attrs,children,instcall);
+}
+
 /**
   * @access private
   */
+function $lzc$set_href(val) {
+    this.href = val;
+}
+
+/**
+  * @access private
+  */
 override function construct (parent, args) {
     this.stage = args.stage;
     super.construct.apply(this, arguments);
-    this.sprite = new LzSprite(this, false);
     LzLibrary.libraries[args.name] = this;
 }
 
@@ -93,7 +123,7 @@
         this.sprite.destroy();
         this.sprite = null;
     }
-    super.destroy.apply(this, arguments);
+    super.destroy();
 }
 
 /** @access private */
@@ -113,22 +143,33 @@
     return "Library " + this.href + " named " + this.name;
 }
 
+public var loader:Loader = null;
+
 /**
   * Loads this library dynamically at runtime. Must only be called 
   * when stage was set to 'defer'.
   * 
   * @access public
   */
-function load (){
+function load () {
     if (this.loading || this.loaded) {
         return;
     }
     this.loading = true;
-    // TODO [hqm 2008-11]
-    // LOAD MODULE HERE !! (this.href);
-    Debug.write("LzLibrary.load NYI", this.href);
+    var request:URLRequest = new URLRequest(this.href);
+    request.method = URLRequestMethod.GET;
+    this.loader = new Loader();
+    var info:LoaderInfo = loader.contentLoaderInfo;
+    info.addEventListener(Event.COMPLETE, handleLoadComplete);
+    trace('loader.load ', this.href);
+    this.loader.load(request);
 }
 
+public function handleLoadComplete(event:Event):void {
+    var library:Object = event.target.content;
+    library.exportClassDefs(null);
+}
+
 /** 
  * Called by LzLibraryCleanup when this library has finished loading.
  * 

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/views/LaszloCanvas.lzs	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/views/LaszloCanvas.lzs	2008-11-19 00:25:42 UTC (rev 11823)
@@ -845,6 +845,16 @@
     }
 }
 
+
+// Utility functions used by the instantiator process
+public function LzInstantiateView(e, tn = 1) {
+   canvas.initiatorAddNode( e , tn );
+}
+
+public function lzAddLocalData(name, d, trimwhitespace) {
+    return new LzDataset(canvas, {name: name, initialdata: d, trimwhitespace: trimwhitespace });
+}
+
 } // End of LzCanvas
 lz[LzCanvas.tagname] = LzCanvas;  // publish
 

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java	2008-11-19 00:25:42 UTC (rev 11823)
@@ -74,9 +74,6 @@
           this.className = LZXTag2JSClass(env.methodNameGenerator.next());
         }
 
-        // Keep track of this class name, in case we're compiling an <import> library
-        env.addExportedClassDef(tagName, this.className);
-
         this.superclass = superclass;
         this.definition = definition;
         if (definition != null) {

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java	2008-11-19 00:25:42 UTC (rev 11823)
@@ -73,13 +73,6 @@
     protected File mApplicationFile = null;
     protected File mObjectFile = null;
 
-    /** List of class definitions that will be defined by a
-     * loadable library module.
-     * A map of tagname => classname , e.g.,
-     * lz['button'] = $lzc$class_button;
-    */
-    protected Map exportedClassDefs = new HashMap();
-
     final SymbolGenerator methodNameGenerator;
 
     /** Output is written here.
@@ -729,13 +722,4 @@
         }
     }
 
-    public void addExportedClassDef(String tagname, String classname) {
-        exportedClassDefs.put(tagname, classname);
-    }
-
-    public Map getExportedClassDefs() {
-        return exportedClassDefs;
-    }
-
-
 }

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/DataCompiler.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/DataCompiler.java	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/DataCompiler.java	2008-11-19 00:25:42 UTC (rev 11823)
@@ -34,7 +34,7 @@
      * would mean delaying the "ondata" of the datasets until they were processed. 
      */
 
-    static final String LOCAL_DATA_FNAME = "lzAddLocalData";
+    static final String LOCAL_DATA_FNAME = "canvas.lzAddLocalData";
 
     DataCompiler(CompilationEnvironment env) {
         super(env);

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ElementCompiler.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ElementCompiler.java	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ElementCompiler.java	2008-11-19 00:25:42 UTC (rev 11823)
@@ -26,7 +26,7 @@
      * must match the name of the function in the runtime support
      * library. 
      */
-    protected static final String VIEW_INSTANTIATION_FNAME = "LzInstantiateView";
+    protected static final String VIEW_INSTANTIATION_FNAME = "canvas.LzInstantiateView";
     protected final CompilationEnvironment mEnv;
 
     ElementCompiler(CompilationEnvironment env) {

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ImportCompiler.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ImportCompiler.java	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ImportCompiler.java	2008-11-19 00:25:42 UTC (rev 11823)
@@ -91,7 +91,12 @@
             String libfile = libsrcfile.getName();
             String libprefix = mEnv.getLibPrefix();
             String runtime = mEnv.getProperty(mEnv.RUNTIME_PROPERTY);
-            String extension = Compiler.SCRIPT_RUNTIMES.contains(runtime) ? ".js" : ".swf";
+            String extension = ".swf";
+            if ("swf9".equals(runtime)) {
+                extension = ".swf";
+            } else if (Compiler.SCRIPT_RUNTIMES.contains(runtime)) {
+                extension = ".js";
+            } 
             String objfilename = libprefix + "/" + libfile + extension;
             String objpath = mEnv.getLibPrefixRelative() + "/" + libfile + extension;
 
@@ -147,11 +152,12 @@
                 ObjectWriter writer;
 
                 String runtime = env.getProperty(env.RUNTIME_PROPERTY);
-                if (Compiler.SCRIPT_RUNTIMES.contains(runtime)) {
+                if ("swf9".equals(runtime)) {
+                    props.setProperty(org.openlaszlo.sc.Compiler.SWF9_LOADABLE_LIB, "true");
+                    writer = new SWF9Writer(props, ostream, env.getMediaCache(), false, env);
+                } else if (Compiler.SCRIPT_RUNTIMES.contains(runtime)) {
                     writer = new DHTMLWriter(props, ostream,
                                              env.getMediaCache(), false, env);
-                } else if ("swf9".equals(runtime)) {
-                    writer = new SWF9Writer(props, ostream, env.getMediaCache(), false, env);
                 } else if (Compiler.SWF_RUNTIMES.contains(runtime)) {
                     // Set the "SWF8_LOADABLE_LIB" flag to true for this compiler
                     props.setProperty(org.openlaszlo.sc.Compiler.SWF8_LOADABLE_LIB, "true");
@@ -211,8 +217,9 @@
 
                     }
                 }
-                // Now output the additions to the tag map
+                // Now output the additions to the tag map.
                 outputTagMap(env);
+
                 if (Compiler.SWF_RUNTIMES.contains(runtime)) {
                     ((SWFWriter) env.getGenerator()).setLevel0(false);
                 }

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java	2008-11-19 00:25:42 UTC (rev 11823)
@@ -73,7 +73,6 @@
         super(props, stream, cache, importLibrary, env);
         scriptBuffer = new StringWriter();
         scriptWriter= new PrintWriter(scriptBuffer);
-
     }
 
 
@@ -382,6 +381,13 @@
         props.put(org.openlaszlo.sc.Compiler.SWF9_APP_CLASSNAME, MAIN_APP_CLASSNAME);
         props.put(org.openlaszlo.sc.Compiler.SWF9_WRAPPER_CLASSNAME, EXEC_APP_CLASSNAME);
 
+        /*
+          System.err.println(org.openlaszlo.sc.Compiler.SWF9_APPLICATION_PREAMBLE + "="+props.get( org.openlaszlo.sc.Compiler.SWF9_APPLICATION_PREAMBLE));
+        System.err.println(org.openlaszlo.sc.Compiler.SWF9_APP_CLASSNAME + "="+props.get( org.openlaszlo.sc.Compiler.SWF9_APP_CLASSNAME));
+        System.err.println(org.openlaszlo.sc.Compiler.SWF9_WRAPPER_CLASSNAME + "="+props.get( org.openlaszlo.sc.Compiler.SWF9_WRAPPER_CLASSNAME));
+
+        */
+
         try { 
             scriptWriter.close();
             byte[] objcode = ScriptCompiler.compileToByteArray(scriptBuffer.toString(), props);
@@ -413,7 +419,7 @@
     public final static String DEBUG_EVAL_CLASSNAME  = "DebugEvaluate";
 
     /** The "main" class name for 'import' (runtime loadable) libraries */
-    public final static String LIBRARY_CLASSNAME = "LzRuntimeLoadedLib";
+    public final static String LIBRARY_CLASSNAME = "LzRuntimeLoadableLib";
     
     /** List of AS3 imports needed to compile an app */
     public static final String imports = "    #passthrough (toplevel:true) {  \n" +
@@ -430,27 +436,39 @@
     /** Create swf9 application boilerplate preamble as3 code 
      */
     public String makeApplicationPreamble() {
-        // MOVE THIS TO SWF9WRITER boilerplate generator code
         String source = "public class " + MAIN_APP_CLASSNAME +
-            " extends " +  LFC_CLASSNAME + " {\n " + imports + "}\n";
+            " extends " +  LFC_CLASSNAME + " {\n " + imports + "\n" + 
+            "public function " + MAIN_APP_CLASSNAME + "(sprite:Sprite=null) {\n" +
+            "super(sprite);\n" +
+            "runToplevelDefinitions();\n" + 
+            "}\n" + 
+            "}\n";
         source += "public class " + EXEC_APP_CLASSNAME +
-            " extends Sprite {\n " + imports + "var app:LzApplication;\n" +
-            " function " + EXEC_APP_CLASSNAME + "() {" +
-            " app = new LzApplication(this);}}\n";
+            " extends Sprite {\n " + imports +
+              "var app:LzApplication;\n" +
+              "function " + EXEC_APP_CLASSNAME + "() {" +
+                "app = new " + MAIN_APP_CLASSNAME + "(this);\n" +
+              "}\n" +
+            "}\n";
         return source;
     }
 
     /** Create swf9 import library  boilerplate preamble as3 code 
      */
     public String makeLibraryPreamble() {
-        return "NOT YET DEFINED";
+        String source = "public class " + LIBRARY_CLASSNAME +
+            " extends LzBaseLoadableLib {\n " + imports + "\n" +
+            "}\n";
+        return source;
     }
 
-
-
-
     public void closeSnippet() throws IOException {
         // Callback to let library know we're done loading
+        //
+        // TODO [hqm 2008-11] This won't work, right? We want to call
+        // this static method on the LzLibrary class, but LzLibrary is
+        // in the main app's namespace. Do we need to pass in a
+        // pointer back to the main app's LzLibrary class? Should this be in exportClassDefs? 
         addScript("LzLibrary.__LZsnippetLoaded('"+this.liburl+"')");
 
         if (mCloseCalled) {
@@ -459,9 +477,17 @@
 
         Properties props = (Properties)mProperties.clone();
         // Pass in the table of lzx class defs
-        props.put(org.openlaszlo.sc.Compiler.EXPORTED_CLASS_DEFS, mEnv.getExportedClassDefs());
         props.setProperty(org.openlaszlo.sc.Compiler.SWF9_APPLICATION_PREAMBLE, makeLibraryPreamble());
+        props.put(org.openlaszlo.sc.Compiler.SWF9_APP_CLASSNAME, LIBRARY_CLASSNAME);
+        props.put(org.openlaszlo.sc.Compiler.SWF9_WRAPPER_CLASSNAME, LIBRARY_CLASSNAME);
 
+        /*
+          System.err.println(org.openlaszlo.sc.Compiler.SWF9_APPLICATION_PREAMBLE + "="+props.get( org.openlaszlo.sc.Compiler.SWF9_APPLICATION_PREAMBLE));
+        System.err.println(org.openlaszlo.sc.Compiler.SWF9_APP_CLASSNAME + "="+props.get( org.openlaszlo.sc.Compiler.SWF9_APP_CLASSNAME));
+        System.err.println(org.openlaszlo.sc.Compiler.SWF9_WRAPPER_CLASSNAME + "="+props.get( org.openlaszlo.sc.Compiler.SWF9_WRAPPER_CLASSNAME));
+
+        */
+
         try { 
 
             scriptWriter.close();

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java	2008-11-19 00:25:42 UTC (rev 11823)
@@ -494,7 +494,8 @@
   public static String SWF9_APP_CLASSNAME = "SWF9MainClassName";
   public static String SWF9_WRAPPER_CLASSNAME = "SWF9WrapperClassName";
   public static String SWF9_LFC_CLASSNAME = "SWF9LFCClassName";  
-  public static String SWF8_LOADABLE_LIB = "SWFLoadableLib";
+  public static String SWF9_LOADABLE_LIB = "SWF9LoadableLib";
+  public static String SWF8_LOADABLE_LIB = "SWF8LoadableLib";
   public static String TRACK_LINES = "trackLines";
   public static String VALIDATE_CACHES = "validateCaches";
   public static String WARN_UNDEFINED_REFERENCES = "warnUndefinedReferences";

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java	2008-11-19 00:25:42 UTC (rev 11823)
@@ -634,7 +634,7 @@
     config.forcePublicMembers = options.getBoolean(Compiler.DEBUG_SWF9) && !options.getBoolean(Compiler.DISABLE_PUBLIC_FOR_DEBUG);
 
     config.mainClassName = (String) options.get(Compiler.SWF9_APP_CLASSNAME);
-    System.err.println("mainClassName = "+config.mainClassName);
+    //System.err.println("mainClassName = "+config.mainClassName);
     if (config.islib) {
       // 
     } else {

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9ParseTreePrinter.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9ParseTreePrinter.java	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9ParseTreePrinter.java	2008-11-19 00:25:42 UTC (rev 11823)
@@ -256,12 +256,13 @@
 
     sb.append("{\n");
     sb.append(annotateInsertStream(CLASS_LEVEL_STREAM));
+
     if (classnm.equals(config.mainClassName) && !config.islib) {
-      sb.append("public function " + config.mainClassName + "(sprite:Sprite=null) {\n");
-      sb.append("super(sprite);\n");
+      sb.append("override public function runToplevelDefinitions () {");
       sb.append(annotateInsertStream(MAIN_CONSTRUCTOR_STREAM));
       sb.append("}\n");
     }
+
     for (int i=4; i<children.length; i++) {
       sb.append(children[i]);
     }

Modified: openlaszlo/trunk/test/snippets/import-class.lzx
===================================================================
--- openlaszlo/trunk/test/snippets/import-class.lzx	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/test/snippets/import-class.lzx	2008-11-19 00:25:42 UTC (rev 11823)
@@ -5,7 +5,8 @@
   <method name="doLoaded">
     new lz.myclass(canvas, {fontsize: 8, text: '[1] loaded myclass'});
     new lz.myclass(canvas, {fontsize: 10, text: '[2] loaded myclass'});
-    new lz.myclass(canvas, {text: '[3] loaded myclass'});
+    var ki = new lz.myclass(canvas, {text: '[3] loaded myclass'});
+    Debug.write('loaded myclass! ki instanceof LzView', ki instanceof LzView);
 
   </method>
   <simplelayout spacing="2" />

Modified: openlaszlo/trunk/test/snippets/import-script.lzx
===================================================================
--- openlaszlo/trunk/test/snippets/import-script.lzx	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/test/snippets/import-script.lzx	2008-11-19 00:25:42 UTC (rev 11823)
@@ -10,10 +10,10 @@
   <simplelayout/>
   <text>You should see a red and green square below</text>
 
-  <import name="lib" href="script-library.lzx" stage="late" onload="foo()"/>
+  <import name="lib" href="script-library.lzx" stage="late" onload="canvas.foo()"/>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2004 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2004, 2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 

Modified: openlaszlo/trunk/test/snippets/script-library.lzx
===================================================================
--- openlaszlo/trunk/test/snippets/script-library.lzx	2008-11-18 18:44:09 UTC (rev 11822)
+++ openlaszlo/trunk/test/snippets/script-library.lzx	2008-11-19 00:25:42 UTC (rev 11823)
@@ -1,7 +1,7 @@
 <library>
   <script>
     var blah = 0xff0000;
-    function foo() {
+    canvas.foo = function () {
        Debug.write('foo!');
     }
 



More information about the Laszlo-checkins mailing list