X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FStatic.java;h=4d6fe81a0c46a987c6e509cb50716c3a9729abe2;hb=5518e5d03a513174d17bfa82a177ecceeb116272;hp=4117892fdb2837edef594e31bc164c1099088299;hpb=fea7f27cc252c8feaafb8a5c0d4b9f391f03975d;p=org.ibex.core.git diff --git a/src/org/xwt/Static.java b/src/org/xwt/Static.java index 4117892..4d6fe81 100644 --- a/src/org/xwt/Static.java +++ b/src/org/xwt/Static.java @@ -1,24 +1,24 @@ // Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL] package org.xwt; +import org.xwt.js.*; import org.xwt.util.*; -import org.mozilla.javascript.*; /** implements objects in the xwt.static.* namespace */ -public class Static extends JSObject { +public class Static extends JS.Scope { public static Static getStatic(String resourcename) { - Static ret = (Static)cache.get(resourcename); - if (ret == null) { - Template t = Template.getTemplate(resourcename, null); - - // FIXME: ugly - if (t == null) return new Static(resourcename, true); + Template t = Template.getTemplate(resourcename, null); + if (t != null) t.link(); + return (Static)cache.get(resourcename); + } - ret = new Static(resourcename, false); - t.link(); - return ret; - } + public static Static createStatic(String resourcename, boolean isPackage) { + Static ret = (Static)cache.get(resourcename); + if (ret != null) return ret; + if (resourcename.indexOf('.') != -1) + createStatic(resourcename.substring(0, resourcename.lastIndexOf('.')), true); + ret = new Static(resourcename, isPackage); return ret; } @@ -31,7 +31,7 @@ public class Static extends JSObject { public boolean ispackage = false; private Static(String resourcename, boolean ispackage) { - super(true); + super(null); cache.put(resourcename, this); this.resourcename = resourcename; this.ispackage = ispackage; @@ -41,23 +41,12 @@ public class Static extends JSObject { /** creates a new static representing a package */ public Static(String resourcename) { this(resourcename, true); } - public Object get(String name, Scriptable start) { - if (name == null) return null; - - // hack since Rhino needs to be able to grab these functions to create new objects - if (name.equals("Object")) return JSObject.defaultObjects.get("Object", null); - if (name.equals("Array")) return JSObject.defaultObjects.get("Array", null); - if (name.equals("Function")) return JSObject.defaultObjects.get("Function", null); - if (name.equals("TypeError")) return JSObject.defaultObjects.get("TypeError", null); - - if ("xwt".equals(name)) - for(Scriptable cur = Context.enter().currentFunction; cur != null; cur = cur.getParentScope()) - if (cur == this) return XWT.singleton; - - System.out.println("casc up " + (resourcename + (resourcename.length() == 0 ? "" : ".") + name)); - - if (!ispackage) return super.get(name, start); + public Object get(Object name_) { + String name = name_.toString(); + if (!ispackage) return super.get(name); return getStatic(resourcename + (resourcename.length() == 0 ? "" : ".") + name); } + static { createStatic("", true); } + }