X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FStatic.java;h=cb7a51055a418aec231318e9b94ecc706f50d6c9;hb=9a33358173f08013fdacd02c11f3823352bdae23;hp=59450a7fa144f06ab190f6bdeaaf8c5e1c43c58a;hpb=6242c991f365dbd67eba62ecfa5df769a83fcbc6;p=org.ibex.core.git diff --git a/src/org/xwt/Static.java b/src/org/xwt/Static.java index 59450a7..cb7a510 100644 --- a/src/org/xwt/Static.java +++ b/src/org/xwt/Static.java @@ -8,10 +8,14 @@ import org.mozilla.javascript.*; public class Static extends JSObject { public static Static getStatic(String resourcename) { + return (Static)cache.get(resourcename); + } + + public static Static createStatic(String resourcename) { Static ret = (Static)cache.get(resourcename); if (ret == null) { Template t = Template.getTemplate(resourcename, null); - if (t == null) return null; + if (t == null) return new Static(resourcename, true); ret = new Static(resourcename, false); t.link(); return ret; @@ -36,9 +40,7 @@ public class Static extends JSObject { } /** creates a new static representing a package */ - public Static(String resourcename) { - this(resourcename, true); - } + public Static(String resourcename) { this(resourcename, true); } public Object get(String name, Scriptable start) { if (name == null) return null; @@ -49,9 +51,14 @@ public class Static extends JSObject { if (name.equals("Function")) return JSObject.defaultObjects.get("Function", null); if (name.equals("TypeError")) return JSObject.defaultObjects.get("TypeError", null); - if ("xwt".equals(name)) return XWT.singleton; + if ("xwt".equals(name)) + for(Scriptable cur = Context.enter().currentFunction; cur != null; cur = cur.getParentScope()) + if (cur == this) return XWT.singleton; + if (!ispackage) return super.get(name, start); return getStatic(resourcename + (resourcename.length() == 0 ? "" : ".") + name); } + static { createStatic(""); } + }