1:
37:
38:
39: package ;
40:
41: import ;
42: import ;
43: import ;
44:
45: public class SimpleAttributeSet
46: implements MutableAttributeSet, Serializable, Cloneable
47: {
48: public static final AttributeSet EMPTY = new SimpleAttributeSet();
49:
50: Hashtable tab;
51:
52: public SimpleAttributeSet()
53: {
54: this(null);
55: }
56:
57: public SimpleAttributeSet(AttributeSet a)
58: {
59: tab = new Hashtable();
60: if (a != null)
61: addAttributes(a);
62: }
63:
64: public void addAttribute(Object name, Object value)
65: {
66: tab.put(name, value);
67: }
68:
69: public void addAttributes(AttributeSet attributes)
70: {
71: Enumeration e = attributes.getAttributeNames();
72: while (e.hasMoreElements())
73: {
74: Object name = e.nextElement();
75: Object val = attributes.getAttribute(name);
76: tab.put(name, val);
77: }
78: }
79:
80: public Object clone()
81: {
82: SimpleAttributeSet s = new SimpleAttributeSet();
83: s.tab = (Hashtable) tab.clone();
84: return s;
85: }
86:
87: public boolean containsAttribute(Object name, Object value)
88: {
89: return tab.containsKey(name)
90: && tab.get(name).equals(value);
91: }
92:
93: public boolean containsAttributes(AttributeSet attributes)
94: {
95: Enumeration e = attributes.getAttributeNames();
96: while (e.hasMoreElements())
97: {
98: Object name = e.nextElement();
99: Object val = attributes.getAttribute(name);
100: if (! containsAttribute(name, val))
101: return false;
102: }
103: return true;
104: }
105:
106: public AttributeSet copyAttributes()
107: {
108: return (AttributeSet) clone();
109: }
110:
111: public boolean equals(Object obj)
112: {
113: return (obj != null)
114: && (obj instanceof SimpleAttributeSet)
115: && ((SimpleAttributeSet)obj).tab.equals(this.tab);
116: }
117:
118: public Object getAttribute(Object name)
119: {
120: Object val = tab.get(name);
121: if (val != null)
122: return val;
123:
124: Object p = getResolveParent();
125: if (p != null && p instanceof AttributeSet)
126: return (((AttributeSet)p).getAttribute(name));
127:
128: return null;
129: }
130:
131: public int getAttributeCount()
132: {
133: return tab.size();
134: }
135:
136: public Enumeration getAttributeNames()
137: {
138: return tab.keys();
139: }
140:
141: public AttributeSet getResolveParent()
142: {
143: return (AttributeSet) tab.get(ResolveAttribute);
144: }
145:
146: public int hashCode()
147: {
148: return tab.hashCode();
149: }
150:
151: public boolean isDefined(Object attrName)
152: {
153: return tab.containsKey(attrName);
154: }
155:
156: public boolean isEmpty()
157: {
158: return tab.isEmpty();
159: }
160:
161: public boolean isEqual(AttributeSet attr)
162: {
163: return this.equals(attr);
164: }
165:
166: public void removeAttribute(Object name)
167: {
168: tab.remove(name);
169: }
170:
171: public void removeAttributes(AttributeSet attributes)
172: {
173: removeAttributes(attributes.getAttributeNames());
174: }
175:
176: public void removeAttributes(Enumeration names)
177: {
178: while (names.hasMoreElements())
179: {
180: removeAttribute(names.nextElement());
181: }
182: }
183:
184: public void setResolveParent(AttributeSet parent)
185: {
186: addAttribute(ResolveAttribute, parent);
187: }
188:
189: public String toString()
190: {
191: return tab.toString();
192: }
193: }