1
2
3
4 package org.rcfaces.core.internal.component;
5
6 import java.util.Collection;
7 import java.util.Iterator;
8 import java.util.List;
9 import java.util.ListIterator;
10
11 import org.rcfaces.core.internal.capability.IStateChildrenList;
12
13
14
15
16
17
18 class BasicStateChildrenList implements IStateChildrenList {
19 private static final String REVISION = "$Revision: 1.18 $";
20
21 private List list;
22
23 private int stateId = 0;
24
25
26
27
28
29
30 public final void setChildren(List list) {
31 if (list == this.list) {
32 return;
33 }
34
35 updateStateId();
36 this.list = list;
37 }
38
39
40
41
42
43
44 public final int size() {
45 return list.size();
46 }
47
48
49
50
51
52
53 public final boolean isEmpty() {
54 return list.isEmpty();
55 }
56
57
58
59
60
61
62 public final boolean contains(Object o) {
63 return list.contains(o);
64 }
65
66
67
68
69
70
71 public final Iterator iterator() {
72 return new StateIdIterator(list.iterator());
73 }
74
75
76
77
78
79
80 public final Object[] toArray() {
81 return list.toArray();
82 }
83
84
85
86
87
88
89 public final Object[] toArray(Object[] a) {
90 return list.toArray(a);
91 }
92
93
94
95
96
97
98 public final boolean add(Object o) {
99 if (list.add(o) == false) {
100 return false;
101 }
102
103 updateStateId();
104 return true;
105 }
106
107
108
109
110
111
112 public final boolean remove(Object o) {
113 if (list.remove(o) == false) {
114 return false;
115 }
116
117 updateStateId();
118 return true;
119 }
120
121
122
123
124
125
126 public final boolean containsAll(Collection c) {
127 return list.containsAll(c);
128 }
129
130
131
132
133
134
135 public final boolean addAll(Collection c) {
136 if (list.addAll(c) == false) {
137 return false;
138 }
139
140 updateStateId();
141 return true;
142 }
143
144
145
146
147
148
149 public final boolean addAll(int index, Collection c) {
150 if (list.addAll(index, c) == false) {
151 return false;
152 }
153
154 updateStateId();
155 return true;
156 }
157
158
159
160
161
162
163 public final boolean removeAll(Collection c) {
164 if (list.removeAll(c) == false) {
165 return false;
166 }
167
168 updateStateId();
169 return true;
170 }
171
172
173
174
175
176
177 public final boolean retainAll(Collection c) {
178 if (list.retainAll(c) == false) {
179 return false;
180 }
181
182 updateStateId();
183 return true;
184 }
185
186
187
188
189
190
191 public final void clear() {
192 if (list.isEmpty()) {
193 return;
194 }
195
196 list.clear();
197
198 updateStateId();
199 }
200
201
202
203
204
205
206 public final Object get(int index) {
207 return list.get(index);
208 }
209
210
211
212
213
214
215 public final Object set(int index, Object element) {
216 Object object = list.set(index, element);
217
218 updateStateId();
219
220 return object;
221 }
222
223
224
225
226
227
228 public final void add(int index, Object element) {
229 list.add(index, element);
230
231 updateStateId();
232 }
233
234
235
236
237
238
239 public final Object remove(int index) {
240 Object object = list.remove(index);
241
242 if (object != null) {
243 updateStateId();
244 }
245
246 return object;
247 }
248
249
250
251
252
253
254 public final int indexOf(Object o) {
255 return list.indexOf(o);
256 }
257
258
259
260
261
262
263 public final int lastIndexOf(Object o) {
264 return list.lastIndexOf(o);
265 }
266
267
268
269
270
271
272 public final ListIterator listIterator() {
273 return new StateIdListIterator(list.listIterator());
274 }
275
276
277
278
279
280
281 public final ListIterator listIterator(int index) {
282 return new StateIdListIterator(list.listIterator(index));
283 }
284
285
286
287
288
289
290 public final List subList(int fromIndex, int toIndex) {
291 return new StateIdSubList(list.subList(fromIndex, toIndex));
292 }
293
294
295
296
297
298
299 public final int getState() {
300 return stateId;
301 }
302
303 protected void updateStateId() {
304 this.stateId++;
305 }
306
307
308
309
310
311
312 private class StateIdIterator implements Iterator {
313 private static final String REVISION = "$Revision: 1.18 $";
314
315 private final Iterator iterator;
316
317 public StateIdIterator(Iterator iterator) {
318 this.iterator = iterator;
319 }
320
321 public final boolean hasNext() {
322 return iterator.hasNext();
323 }
324
325 public final Object next() {
326 return iterator.next();
327 }
328
329 public final void remove() {
330 iterator.remove();
331
332 updateStateId();
333 }
334 }
335
336
337
338
339
340
341 private final class StateIdListIterator extends StateIdIterator implements
342 ListIterator {
343 private static final String REVISION = "$Revision: 1.18 $";
344
345 private final ListIterator listIterator;
346
347 public StateIdListIterator(ListIterator listIterator) {
348 super(listIterator);
349
350 this.listIterator = listIterator;
351 }
352
353
354
355
356
357
358 public final boolean hasPrevious() {
359 return listIterator.hasPrevious();
360 }
361
362
363
364
365
366
367 public final Object previous() {
368 return listIterator.previous();
369 }
370
371
372
373
374
375
376 public final int nextIndex() {
377 return listIterator.nextIndex();
378 }
379
380
381
382
383
384
385 public final int previousIndex() {
386 return listIterator.previousIndex();
387 }
388
389
390
391
392
393
394 public final void set(Object o) {
395 listIterator.set(o);
396
397 updateStateId();
398 }
399
400
401
402
403
404
405 public final void add(Object o) {
406 listIterator.add(o);
407
408 updateStateId();
409 }
410 }
411
412
413
414
415
416
417 private final class StateIdSubList extends BasicStateChildrenList {
418 private static final String REVISION = "$Revision: 1.18 $";
419
420 public StateIdSubList(List list) {
421 setChildren(list);
422 }
423
424 protected void updateStateId() {
425 BasicStateChildrenList.this.updateStateId();
426 }
427 }
428 }