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();
* @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;
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());
}
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);
}
/** 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
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);
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
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());
}
}
}
- 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;