X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FSpecialBoxProperty.java;h=16bba2e0c9a8729e9af28148d29a2b939c5c2091;hb=73a175a99d7a0ede9b4268c8670a9958895cc713;hp=d55fd3851455118a12505c1944fade1d7b1e2423;hpb=90ab89559ad6c425bbc074c09ed37b909f9d6057;p=org.ibex.core.git diff --git a/src/org/xwt/SpecialBoxProperty.java b/src/org/xwt/SpecialBoxProperty.java index d55fd38..16bba2e 100644 --- a/src/org/xwt/SpecialBoxProperty.java +++ b/src/org/xwt/SpecialBoxProperty.java @@ -64,7 +64,10 @@ class SpecialBoxProperty { static final int white = 0xFFFFFFFF; static { + init(); + } + private static void init() { specialBoxProperties.put("color", new SpecialBoxProperty() { public Object get(Box b) { if ((b.color & 0xFF000000) == 0) return null; @@ -655,33 +658,30 @@ class SpecialBoxProperty { specialBoxProperties.put("apply", new SpecialBoxProperty() { public void put(Box b, Object value) { } - public Object get(final Box b) { return public Object call(JS.Array args) throws JS.Exn { - - // apply a template - if (args.elementAt(0) instanceof String) { - String templatename = (String)args.elementAt(0); - Template t = Template.getTemplate(templatename, null); - if (t == null) { - if (Log.on) Log.logJS(this, "template " + templatename + " not found"); - } else { - if (ThreadMessage.suspendThread()) try { - JS.Callable callback = args.length() < 2 ? null : (Callable)args.elementAt(1); - t.apply(b, null, null, callback, 0, t.numUnits()); - } finally { - ThreadMessage.resumeThread(); + public Object get(final Box b) { return new JS.Callable() { + public Object call(JS.Array args) throws JS.Exn { + if (args.elementAt(0) instanceof String) { + String templatename = (String)args.elementAt(0); + Template t = Template.getTemplate(templatename, null); + if (t == null) { + if (Log.on) Log.logJS(this, "template " + templatename + " not found"); + } else { + if (ThreadMessage.suspendThread()) try { + JS.Callable callback = args.length() < 2 ? null : (Callable)args.elementAt(1); + t.apply(b, null, null, callback, 0, t.numUnits()); + } finally { + ThreadMessage.resumeThread(); + } + } + + } else if (args.elementAt(0) instanceof JS && !(args.elementAt(0) instanceof Box)) { + JS s = (JS)args.elementAt(0); + Object[] keys = s.keys(); + for(int j=0; j