1
2 package org.xwt;
3
4 import org.xwt.js.*;
5 import org.xwt.util.*;
6
7
8 public class Static extends JS.Scope {
9
10 public static Static getStatic(String resourcename) {
11 Template t = Template.getTemplate(resourcename, null);
12 if (t != null) t.link();
13 return (Static)cache.get(resourcename);
14 }
15
16 public static Static createStatic(String resourcename, boolean isPackage) {
17 Static ret = (Static)cache.get(resourcename);
18 if (ret != null) return ret;
19 if (resourcename.indexOf('.') != -1)
20 createStatic(resourcename.substring(0, resourcename.lastIndexOf('.')), true);
21 ret = new Static(resourcename, isPackage);
22 return ret;
23 }
24
25 private static Hash cache = new Hash();
26
27
28 private String resourcename = null;
29
30
31 public boolean ispackage = false;
32
33 private Static(String resourcename, boolean ispackage) {
34 super(null);
35 cache.put(resourcename, this);
36 this.resourcename = resourcename;
37 this.ispackage = ispackage;
38 setSeal(ispackage);
39 }
40
41
42 public Static(String resourcename) { this(resourcename, true); }
43
44 public Object get(Object name_) {
45 String name = name_.toString();
46 if (!ispackage) return super.get(name);
47 return getStatic(resourcename + (resourcename.length() == 0 ? "" : ".") + name);
48 }
49
50 static { createStatic("", true); }
51
52 }
53