2003/06/18 05:53:37
[org.ibex.core.git] / src / org / xwt / SpecialBoxProperty.java
index 24cc971..d55fd38 100644 (file)
@@ -655,9 +655,34 @@ class SpecialBoxProperty {
 
         specialBoxProperties.put("apply", new SpecialBoxProperty() {
                 public void put(Box b, Object value) { }
-                public Object get(Box b) { return new Apply(b); }
+                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();
+                            }
+                        }
+                        
+                        // apply a list of properties
+                    } 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<keys.length; j++) b.put(keys[j].toString(), s.get(keys[j]));
+                    }
+                    
+                    return b;
+                } }
             });
-
+        
         specialBoxProperties.put("id", new SpecialBoxProperty() {
                 public void put(Box b, Object value) { }
                 public Object get(Box b) { return b.id; }
@@ -684,40 +709,6 @@ class SpecialBoxProperty {
         catch (NumberFormatException e) { return 0; }
     }
         
-    /** helper that converts a String to a int according to JavaScript coercion rules */
-    public static class Apply extends JS.Callable {
-
-        Box b;
-        public Apply(Box b) { super(); this.b = b; }
-
-        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();
-                    }
-                }
-
-            // apply a list of properties
-            } 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<keys.length; j++) b.put(keys[j].toString(), s.get(keys[j]));
-            }
-
-            return b;
-        }
-    }
-
 }