2003/11/13 05:04:23
[org.ibex.core.git] / src / org / xwt / util / Log.java
index dd390d0..424e056 100644 (file)
@@ -1,6 +1,6 @@
 // Copyright 2003 Adam Megacz, see the COPYING file for licensing [LGPL]
 package org.xwt.util;
-import org.xwt.js.JS;
+import org.xwt.js.*;
 import java.io.*;
 import java.util.*;
 
@@ -17,14 +17,7 @@ public class Log {
 
     /** log a message with the current JavaScript sourceName/line */
     public static void logJS(Object o, Object message) { logJS(message); }
-    public static void logJS(Object message) {
-        JS.Context current = org.xwt.js.JS.Context.current();
-        if (current == null) {
-            log("<none>", message);
-        } else {
-            log(current.getSourceName() + ":" + current.getLine(), message);
-        }
-    }
+    public static void logJS(Object message) { log(JSContext.getSource() + ":" + JSContext.getLine(), message); }
 
     /** message can be a String or a Throwable */
     public static synchronized void log(Object o, Object message) {
@@ -75,4 +68,33 @@ public class Log {
         }
     }
 
+    public static void recurseiveLog(String indent, String name, Object o) {
+        if (!name.equals("")) name += " : ";
+
+        if (o == null) {
+            Log.logJS(indent + name + "<null>");
+
+        } else if (o instanceof JSArray) {
+            Log.logJS(indent + name + "<array>");
+            JSArray na = (JSArray)o;
+            for(int i=0; i<na.length(); i++)
+                recurse(indent + "  ", i + "", na.elementAt(i));
+
+        } else if (o instanceof JS) {
+            Log.logJS(indent + name + "<object>");
+            JS s = (JS)o;
+            Enumeration e = s.keys();
+            while(e.hasMoreElements()) {
+                Object key = e.nextElement();
+                if (key != null)
+                    recurse(indent + "  ", key.toString(),
+                            (key instanceof Integer) ?
+                            s.get(((Integer)key)) : s.get(key.toString()));
+            }
+        } else {
+            Log.logJS(indent + name + o);
+
+        }
+    }
+
 }