1 package gov
.nasa
.worldwind
;
4 import java
.util
.concurrent
.*;
8 Copyright (C) 2001, 2006 United States Government
9 as represented by the Administrator of the
10 National Aeronautics and Space Administration.
16 * @version $Id: LayerList.java 2215 2007-07-04 15:38:23Z tgaskins $
18 public class LayerList
extends CopyOnWriteArrayList
<Layer
> implements WWObject
20 private WWObjectImpl wwo
= new WWObjectImpl(this);
26 public LayerList(Layer
[] layers
)
30 String message
= WorldWind
.retrieveErrMsg("nullValue.LayersIsNull");
31 WorldWind
.logger().log(java
.util
.logging
.Level
.FINE
, message
);
32 throw new IllegalArgumentException(message
);
34 for (Layer layer
: layers
)
43 LayerList newList
= (LayerList
) super.clone();
44 newList
.wwo
= new WWObjectImpl(newList
);
45 for (Layer l
: newList
)
46 l
.removePropertyChangeListener(this);
51 public boolean add(Layer layer
)
55 String message
= WorldWind
.retrieveErrMsg("nullValue.LayerIsNull");
56 WorldWind
.logger().log(java
.util
.logging
.Level
.FINE
, message
);
57 throw new IllegalArgumentException(message
);
61 layer
.addPropertyChangeListener(this);
62 this.firePropertyChange(AVKey
.LAYERS
, null, this);
67 public void add(int index
, Layer layer
)
71 String message
= WorldWind
.retrieveErrMsg("nullValue.LayerIsNull");
72 WorldWind
.logger().log(java
.util
.logging
.Level
.FINE
, message
);
73 throw new IllegalArgumentException(message
);
76 super.add(index
, layer
);
77 layer
.addPropertyChangeListener(this);
78 this.firePropertyChange(AVKey
.LAYERS
, null, this);
81 public void remove(Layer layer
)
85 String msg
= WorldWind
.retrieveErrMsg("nullValue.LayerIsNull");
86 WorldWind
.logger().log(java
.util
.logging
.Level
.FINE
, msg
);
87 throw new IllegalArgumentException(msg
);
90 if (!this.contains(layer
))
93 layer
.removePropertyChangeListener(this);
95 this.firePropertyChange(AVKey
.LAYERS
, null, this);
98 public Layer
remove(int index
)
100 Layer layer
= get(index
);
104 layer
.removePropertyChangeListener(this);
106 this.firePropertyChange(AVKey
.LAYERS
, null, this);
111 public Layer
get(int index
)
113 return super.get(index
);
116 public Layer
set(int index
, Layer layer
)
120 String message
= WorldWind
.retrieveErrMsg("nullValue.LayerIsNull");
121 WorldWind
.logger().log(java
.util
.logging
.Level
.FINE
, message
);
122 throw new IllegalArgumentException(message
);
125 Layer oldLayer
= this.get(index
);
126 if (oldLayer
!= null)
127 oldLayer
.removePropertyChangeListener(this);
129 super.set(index
, layer
);
130 layer
.addPropertyChangeListener(this);
131 this.firePropertyChange(AVKey
.LAYERS
, null, this);
136 public boolean remove(Object o
)
138 for (Layer layer
: this)
141 layer
.removePropertyChangeListener(this);
144 boolean removed
= super.remove(o
);
146 this.firePropertyChange(AVKey
.LAYERS
, null, this);
151 public boolean addIfAbsent(Layer layer
)
159 layer
.addPropertyChangeListener(this);
161 boolean added
= super.addIfAbsent(layer
);
163 this.firePropertyChange(AVKey
.LAYERS
, null, this);
168 public boolean removeAll(Collection
<?
> objects
)
170 for (Layer layer
: this)
171 layer
.removePropertyChangeListener(this);
173 boolean removed
= super.removeAll(objects
);
175 this.firePropertyChange(AVKey
.LAYERS
, null, this);
180 public int addAllAbsent(Collection
<?
extends Layer
> layers
)
182 for (Layer layer
: layers
)
184 if (!this.contains(layer
))
185 layer
.addPropertyChangeListener(this);
188 int numAdded
= super.addAllAbsent(layers
);
190 this.firePropertyChange(AVKey
.LAYERS
, null, this);
195 public boolean addAll(Collection
<?
extends Layer
> layers
)
197 boolean added
= super.addAll(layers
);
199 this.firePropertyChange(AVKey
.LAYERS
, null, this);
204 public boolean addAll(int i
, Collection
<?
extends Layer
> layers
)
206 for (Layer layer
: layers
)
207 layer
.addPropertyChangeListener(this);
209 boolean added
= super.addAll(i
, layers
);
211 this.firePropertyChange(AVKey
.LAYERS
, null, this);
216 public boolean retainAll(Collection
<?
> objects
)
218 for (Layer layer
: this)
220 if (!objects
.contains(layer
))
221 layer
.removePropertyChangeListener(this);
224 boolean added
= super.retainAll(objects
);
226 this.firePropertyChange(AVKey
.LAYERS
, null, this);
231 public Object
getValue(String key
)
233 return wwo
.getValue(key
);
236 public Set
<Map
.Entry
<String
, Object
>> getValues()
238 return wwo
.getValues();
241 public String
getStringValue(String key
)
243 return wwo
.getStringValue(key
);
246 public void setValue(String key
, Object value
)
248 wwo
.setValue(key
, value
);
251 public void setValues(AVList avList
)
253 wwo
.setValues(avList
);
256 public boolean hasKey(String key
)
258 return wwo
.hasKey(key
);
261 public void removeKey(String key
)
271 public void addPropertyChangeListener(String propertyName
, PropertyChangeListener listener
)
273 wwo
.addPropertyChangeListener(propertyName
, listener
);
276 public void removePropertyChangeListener(String propertyName
, PropertyChangeListener listener
)
278 wwo
.removePropertyChangeListener(propertyName
, listener
);
281 public void addPropertyChangeListener(PropertyChangeListener listener
)
283 wwo
.addPropertyChangeListener(listener
);
286 public void removePropertyChangeListener(PropertyChangeListener listener
)
288 wwo
.removePropertyChangeListener(listener
);
291 public void firePropertyChange(PropertyChangeEvent propertyChangeEvent
)
293 wwo
.firePropertyChange(propertyChangeEvent
);
296 public void firePropertyChange(String propertyName
, Object oldValue
, Object newValue
)
298 wwo
.firePropertyChange(propertyName
, oldValue
, newValue
);
301 public void propertyChange(PropertyChangeEvent propertyChangeEvent
)
303 wwo
.propertyChange(propertyChangeEvent
);
307 public String
toString()
312 r
+= l
.toString() + ", ";