X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FTemplate.java;h=63a9daa43747c83407b47e55429d3ab1ecb94815;hb=ec3ce7739bc84c0641fc57efc8da9af89372013f;hp=a9ea9b91502a90352a6c92d33b17de5d7435181e;hpb=e58686eae8a823ed64ed0ec92c2274c41d90ec93;p=org.ibex.core.git diff --git a/src/org/xwt/Template.java b/src/org/xwt/Template.java index a9ea9b9..63a9daa 100644 --- a/src/org/xwt/Template.java +++ b/src/org/xwt/Template.java @@ -73,10 +73,10 @@ public class Template { private boolean changed = false; /** the script on the static node of this template, null if it has already been executed */ - private JS.Script staticscript = null; + private CompiledFunction staticscript = null; /** the script on this node */ - private JS.Script script = null; + private CompiledFunction script = null; /** during XML parsing, this holds the list of currently-parsed children; null otherwise */ private Vec childvect = new Vec(); @@ -165,7 +165,7 @@ public class Template { * @param pboxes a vector of all box parents on which to put $-references * @param ptemplates a vector of the nodeNames to recieve private references on the pboxes */ - void apply(Box b, Vec pboxes, Vec ptemplates, JS.Function callback, int numerator, int denominator) { + void apply(Box b, Vec pboxes, Vec ptemplates, JS.Callable callback, int numerator, int denominator) { int original_numerator = numerator; @@ -206,9 +206,9 @@ public class Template { if (redirect != null && !"self".equals(redirect)) redir = (Box)b.get("$" + redirect); if (script != null) try { - JS.Array jsa = new JS.Array(); - jsa.addElement(b); - script.call(jsa); + script.cloneWithNewParentScope(b).call(new Array()); + } catch (IOException e) { + throw new Error("this should never happen"); } catch (JS.Exn e) { if (Log.on) Log.log(this, "WARNING: uncaught ecmascript exception: " + e.getMessage()); } @@ -240,7 +240,7 @@ public class Template { if (callback != null) try { - JS.Array args = new JS.Array(); + Array args = new Array(); args.addElement(new Double(numerator)); args.addElement(new Double(denominator)); callback.call(args); @@ -266,7 +266,7 @@ public class Template { } /** adds a theme mapping, retemplatizing as needed */ - public static void retheme(JS.Function callback) { + public static void retheme(JS.Callable callback) { XWF.flushXWFs(); // clear changed marker and relink @@ -286,7 +286,7 @@ public class Template { if (callback != null) try { - JS.Array args = new JS.Array(); + Array args = new Array(); args.addElement(new Double(1.0)); args.addElement(new Double(1.0)); callback.call(args); @@ -298,7 +298,7 @@ public class Template { /** template reapplication procedure */ private static void reapply(Box b) { - throw new Error("not implemented"); + Log.log(Template.class, "Template.reapply() not implemented"); /* // Ref 7.5.1: check if we need to retemplatize boolean retemplatize = false; @@ -365,7 +365,7 @@ public class Template { if (staticscript != null) try { JS.Scope s = Static.createStatic(nodeName, false); if (staticscript != null) { - JS.Script temp = staticscript; + CompiledFunction temp = staticscript; staticscript = null; // we layer a transparent scope over the Static so that we can catch requests for the xwt object @@ -376,10 +376,10 @@ public class Template { if ("xwt".equals(key)) return XWT.singleton; else return super.get(key); } }; - JS.Array args = new JS.Array(); - args.addElement(varScope); - temp.call(args); + temp.cloneWithNewParentScope(varScope).call(null); } + } catch (IOException e) { + throw new Error("this should never happen"); } catch (JS.Exn e) { if (Log.on) Log.log(this, "WARNING: uncaught ecmascript exception: " + e.getMessage()); } @@ -654,10 +654,10 @@ public class Template { } } - private JS.Script genscript(boolean isstatic) { - JS.Script thisscript = null; + private CompiledFunction genscript(boolean isstatic) { + CompiledFunction thisscript = null; try { - thisscript = JS.Script.parse(new StringReader(t.content.toString()), t.nodeName + (isstatic ? "._" : ""), t.content_start); + thisscript = JS.parse(t.nodeName + (isstatic ? "._" : ""), t.content_start, new StringReader(t.content.toString()), null); } catch (JS.Exn ee) { if (Log.on) Log.log(this, " ERROR: " + ee.getMessage()); thisscript = null;