X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FXWT.java;h=2eeaadf3740559358b1709098804d1491c696889;hb=3a003a2e72e4762366a00aeb8ffbd9c6fb4b11f5;hp=e3368aaf4f138aaf2ee641f1c3fe18db0f9103e3;hpb=895d0729b405067d35b4bd268ad5f7748918f88f;p=org.ibex.core.git diff --git a/src/org/xwt/XWT.java b/src/org/xwt/XWT.java index e3368aa..2eeaadf 100644 --- a/src/org/xwt/XWT.java +++ b/src/org/xwt/XWT.java @@ -12,6 +12,10 @@ import org.mozilla.javascript.*; public final class XWT extends JSObject { public static final XWT singleton = new XWT(); + + /** each key is a string representing a filename which the user has already given XWT permission to write to */ + private static Hashtable safeFiles = new Hashtable(); + public String getClassName() { return "XWT"; } private XWT() { setSeal(true); } @@ -28,15 +32,27 @@ public final class XWT extends JSObject { else if (name.equals("regexp")) return regexp; else if (name.equals("sleep")) return sleep; else if (name.equals("yield")) return yield; + else if (name.equals("newBrowserWindow")) return newBrowserWindow; else if (name.equals("textwidth")) return textwidth; else if (name.equals("textheight")) return textheight; else if (name.equals("newBox")) return newBox; else if (name.equals("soap")) return soap; else if (name.equals("xmlrpc")) return xmlrpc; + else if (name.equals("origin")) return Main.origin; else if (name.equals("clipboard")) return Platform.getClipBoard(); else if (name.equals("altKeyName")) return Platform.altKeyName(); + else if (name.equals("screenWidth")) return new Integer(Platform.getScreenWidth()); + else if (name.equals("screenHeight")) return new Integer(Platform.getScreenHeight()); else if (name.equals("static")) return Static.getStatic(""); else if (name.equals("theme")) return theme; + else if (name.equals("openFile")) return openFile; + 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); @@ -64,6 +80,14 @@ public final class XWT extends JSObject { public Scriptable construct(Context cx, Scriptable scope, java.lang.Object[] args) { return null; } } + private static final JSFunction newBrowserWindow = new JSFunction() { + public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { + if (args.length != 1 || args[0] == null) return null; + Platform.newBrowserWindow(args[0].toString()); + return null; + } + }; + private static final JSFunction yield = new JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { sleep.call(cx, null, null, null); @@ -169,6 +193,8 @@ public final class XWT extends JSObject { if (args[i] instanceof Scriptable && !(args[i] instanceof Box)) { Scriptable s = (Scriptable)args[i]; Object[] keys = s.getIds(); + + // FIXME: need to ensure that this is putGlobally(), but still run traps... for(int j=0; j"); + + } else if (o instanceof NativeArray) { + Log.log(cx.interpreterSourceFile, indent + name + ""); + NativeArray na = (NativeArray)o; + for(int i=0; i"); + Scriptable s = (Scriptable)o; + Object[] keys = s.getIds(); + for(int i=0; i