2002/06/05 19:54:47
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:47:59 +0000 (06:47 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:47:59 +0000 (06:47 +0000)
darcs-hash:20040130064759-2ba56-52a971b4d4b820f2ced4d976153f767465b62db0.gz

CHANGES
src/org/xwt/XWT.java

diff --git a/CHANGES b/CHANGES
index 5b83e2b..f109a1c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 
 05-Jun megacz Main.java: now require filename to end with .xwar
 
+05-Jun megacz XWT.java: xwt.fileSeparator, xwt.homeDir, xwt.tempDir,
+              xwt.recursivePrintObject
+
index 9bb02e1..2eeaadf 100644 (file)
@@ -49,6 +49,10 @@ public final class XWT extends JSObject {
         else if (name.equals("saveFile")) return saveFile;
         else if (name.equals("saveFileAs")) return saveFileAs;
         else if (name.equals("utfEncode")) return utfEncode;
+        else if (name.equals("fileSeparator")) return File.separator;
+        else if (name.equals("homeDir")) return System.getProperty("user.home");
+        else if (name.equals("tempDir")) return System.getProperty("java.io.tempdir");
+        else if (name.equals("recursivePrintObject")) return recursivePrintObject;
         else if (name.equals("button")) {
             if (Surface.button1 && !Surface.button2 && !Surface.button3) return new Integer(1);
             else if (!Surface.button1 && Surface.button2 && !Surface.button3) return new Integer(1);
@@ -273,6 +277,41 @@ public final class XWT extends JSObject {
             }
         };
 
+    
+    private static void recurse(String indent, String name, Object o, Context cx) {
+        if (!name.equals("")) name += " : ";
+
+        if (o == null) {
+            Log.log(cx.interpreterSourceFile, indent + name + "<null>");
+
+        } else if (o instanceof NativeArray) {
+            Log.log(cx.interpreterSourceFile, indent + name + "<array>");
+            NativeArray na = (NativeArray)o;
+            for(int i=0; i<na.jsGet_length(); i++)
+                recurse(indent + "  ", i + "", na.get(i, null), cx);
+
+        } else if (o instanceof JSObject || o instanceof ScriptableObject) {
+            Log.log(cx.interpreterSourceFile, indent + name + "<object>");
+            Scriptable s = (Scriptable)o;
+            Object[] keys = s.getIds();
+            for(int i=0; i<keys.length; i++)
+                recurse(indent + "  ", keys[i].toString(),
+                        keys[i] instanceof Integer ? s.get(((Integer)keys[i]).intValue(), null) : s.get(keys[i].toString(), null), cx);
+
+        } else {
+            Log.log(cx.interpreterSourceFile, indent + name + o);
+
+        }
+    }
+
+    private static final JSFunction recursivePrintObject = new JSFunction() {
+            public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException {
+                if (args == null || args.length != 1) return null;
+                recurse("", "", args[0], cx);
+                return null;
+            }
+        };
+
 }