KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > gumby > DefaultGuiEnv


1 package org.sapia.gumby;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.HashMap JavaDoc;
5 import java.util.List JavaDoc;
6 import java.util.Map JavaDoc;
7
8 /**
9  * @author Yanick Duchesne
10  *
11  * <dl>
12  * <dt><b>Copyright: </b>
13  * <dd>Copyright &#169; 2002-2005 <a HREF="http://www.sapia-oss.org">Sapia Open
14  * Source Software </a>. All Rights Reserved.</dd>
15  * </dt>
16  * <dt><b>License: </b>
17  * <dd>Read the license.txt file of the jar or visit the <a
18  * HREF="http://www.sapia-oss.org/license.html">license page </a> at the Sapia
19  * OSS web site</dd>
20  * </dt>
21  * </dl>
22  */

23 public class DefaultGuiEnv implements GuiEnv {
24
25   private List JavaDoc _scopeList = new ArrayList JavaDoc();
26   private Map JavaDoc _scopeMap = new HashMap JavaDoc();
27
28   public GuiEnv _parent;
29
30   public DefaultGuiEnv() {
31   }
32
33   public DefaultGuiEnv(GuiEnv parent) {
34     _parent = parent;
35   }
36
37   /**
38    * @see org.sapia.gumby.GuiEnv#get(java.lang.String)
39    */

40   public synchronized Object JavaDoc get(String JavaDoc name) {
41     for(int i = 0; i < _scopeList.size(); i++) {
42       Scope scope;
43       Object JavaDoc toReturn = null;
44       scope = (Scope) _scopeList.get(i);
45       if((toReturn = scope.get(name)) != null) {
46         return toReturn;
47       }
48     }
49     if(_parent != null) {
50       return _parent.get(name);
51     }
52     return null;
53   }
54
55   /**
56    * @see org.sapia.gumby.GuiEnv#get(java.lang.String, java.lang.String)
57    */

58   public synchronized Object JavaDoc get(String JavaDoc name, String JavaDoc scopeName) {
59     Scope scope = (Scope) _scopeMap.get(scopeName);
60     if(scope == null) {
61       if(_parent != null) {
62         return _parent.get(name, scopeName);
63       }
64       return null;
65     }
66     return scope.get(name);
67   }
68
69   /**
70    * @see org.sapia.gumby.GuiEnv#put(java.lang.String, java.lang.Object,
71    * java.lang.String)
72    */

73   public synchronized void put(String JavaDoc name, Object JavaDoc toBind, String JavaDoc scopeName) {
74     Scope scope = (Scope) _scopeMap.get(scopeName);
75     if(scope == null) {
76       if(_parent != null) {
77         if(_parent.hasScope(scopeName)) {
78           _parent.put(name, toBind, scopeName);
79           return;
80         }
81       }
82       scope = new MapScope();
83       _scopeList.add(scope);
84       _scopeMap.put(scopeName, scope);
85     }
86     scope.put(name, toBind);
87   }
88
89   /**
90    * @see org.sapia.gumby.GuiEnv#acquire(java.lang.String, java.lang.String)
91    */

92   public synchronized Object JavaDoc acquire(String JavaDoc name, String JavaDoc scope)
93       throws IllegalArgumentException JavaDoc {
94     Object JavaDoc toReturn = get(name, scope);
95     if(toReturn == null) {
96       throw new IllegalStateException JavaDoc("Could not acquire object for: " + name);
97     }
98     return toReturn;
99   }
100
101   /**
102    * @see org.sapia.gumby.GuiEnv#acquire(java.lang.String)
103    */

104   public synchronized Object JavaDoc acquire(String JavaDoc name)
105       throws IllegalArgumentException JavaDoc {
106     Object JavaDoc toReturn = get(name);
107     if(toReturn == null) {
108       throw new IllegalStateException JavaDoc("Could not acquire object for: " + name);
109     }
110     return toReturn;
111   }
112
113   /**
114    * @see org.sapia.gumby.GuiEnv#hasScope(java.lang.String)
115    */

116   public synchronized boolean hasScope(String JavaDoc name) {
117     if(!_scopeMap.containsKey(name)) {
118       if(_parent != null) {
119         return _parent.hasScope(name);
120       }
121       return false;
122     }
123     return true;
124   }
125
126   /**
127    * @see org.sapia.gumby.GuiEnv#addScope(java.lang.String,
128    * org.sapia.gumby.Scope)
129    */

130   public synchronized void addScope(String JavaDoc scopeName, Scope scope) {
131     _scopeList.add(scope);
132     _scopeMap.put(scopeName, scope);
133   }
134
135   /**
136    * @see org.sapia.gumby.GuiEnv#removeScope(java.lang.String)
137    */

138   public synchronized void removeScope(String JavaDoc name) {
139     Scope scope = (Scope) _scopeMap.remove(name);
140     _scopeList.remove(scope);
141   }
142
143   /**
144    * @see org.sapia.gumby.GuiEnv#getScope(java.lang.String)
145    */

146   public synchronized Scope getScope(String JavaDoc name) {
147     Scope scope = (Scope) _scopeMap.get(name);
148     if(scope == null && _parent != null) {
149       scope = _parent.getScope(name);
150     }
151     return scope;
152   }
153
154   public String JavaDoc toString() {
155     return _scopeMap.toString();
156   }
157
158 }
159
Popular Tags