svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / layers / FLayers.java @ 1060
History | View | Annotate | Download (13.4 KB)
1 | 214 | fernando | package com.iver.cit.gvsig.fmap.layers; |
---|---|---|---|
2 | |||
3 | 651 | fernando | import com.iver.cit.gvsig.fmap.DriverException; |
4 | 694 | fernando | import com.iver.cit.gvsig.fmap.FMap; |
5 | 562 | fernando | import com.iver.cit.gvsig.fmap.ViewPort; |
6 | import com.iver.cit.gvsig.fmap.layers.layerOperations.LayerCollection; |
||
7 | import com.iver.cit.gvsig.fmap.layers.layerOperations.VectorialData; |
||
8 | import com.iver.cit.gvsig.fmap.operations.Cancellable; |
||
9 | import com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor; |
||
10 | 926 | fernando | import com.iver.cit.gvsig.fmap.operations.strategies.VisitException; |
11 | 1005 | vcaballero | |
12 | 894 | vcaballero | import com.iver.utiles.StringUtilities; |
13 | 562 | fernando | import com.iver.utiles.XMLEntity; |
14 | 541 | vcaballero | |
15 | 1005 | vcaballero | import org.cresques.cts.ICoordTrans; |
16 | 562 | fernando | |
17 | 1005 | vcaballero | import java.awt.Graphics2D; |
18 | import java.awt.geom.Rectangle2D; |
||
19 | import java.awt.image.BufferedImage; |
||
20 | |||
21 | import java.io.File; |
||
22 | |||
23 | import java.net.MalformedURLException; |
||
24 | import java.net.URL; |
||
25 | |||
26 | import java.util.ArrayList; |
||
27 | import java.util.BitSet; |
||
28 | import java.util.Iterator; |
||
29 | |||
30 | |||
31 | 214 | fernando | /**
|
32 | * Representa un nodo interno en el ?rbol de capas
|
||
33 | */
|
||
34 | 1005 | vcaballero | public class FLayers extends FLyrDefault implements VectorialData, |
35 | LayerCollection { |
||
36 | 524 | vcaballero | //ArrayList de Listener registrados.
|
37 | private ArrayList layerListeners = new ArrayList(); |
||
38 | private ArrayList layers = new ArrayList(4); |
||
39 | 694 | fernando | private FMap fmap;
|
40 | 1005 | vcaballero | |
41 | 524 | vcaballero | /**
|
42 | * Crea un nuevo FLayers.
|
||
43 | 1005 | vcaballero | *
|
44 | * @param fmap
|
||
45 | * @param parent
|
||
46 | 524 | vcaballero | */
|
47 | 694 | fernando | public FLayers(FMap fmap, FLayers parent) {
|
48 | setParentLayer(parent); |
||
49 | this.fmap = fmap;
|
||
50 | 524 | vcaballero | } |
51 | 257 | vcaballero | |
52 | 524 | vcaballero | /**
|
53 | * A?ade un listener de los eventos de la colecci?n de capas
|
||
54 | *
|
||
55 | 1005 | vcaballero | * @param listener
|
56 | 524 | vcaballero | */
|
57 | public void addLayerCollectionListener(LayerCollectionListener listener) { |
||
58 | layerListeners.add(listener); |
||
59 | } |
||
60 | 1005 | vcaballero | |
61 | /**
|
||
62 | * @see com.iver.cit.gvsig.fmap.layers.layerOperations.LayerCollection#setAllVisibles(boolean)
|
||
63 | */
|
||
64 | public void setAllVisibles(boolean visible) { |
||
65 | 708 | fernando | FLayer lyr; |
66 | 214 | fernando | |
67 | 524 | vcaballero | for (int i = 0; i < layers.size(); i++) { |
68 | lyr = ((FLayer) layers.get(i)); |
||
69 | 708 | fernando | lyr.setVisible(visible); |
70 | 1005 | vcaballero | |
71 | if (lyr instanceof LayerCollection) { |
||
72 | 708 | fernando | ((LayerCollection) lyr).setAllVisibles(visible); |
73 | } |
||
74 | 524 | vcaballero | } |
75 | } |
||
76 | 346 | fernando | |
77 | 524 | vcaballero | /**
|
78 | 1005 | vcaballero | * Elimina un listener de los eventos de la colecci?n de capas
|
79 | 524 | vcaballero | *
|
80 | 1005 | vcaballero | * @param listener
|
81 | 524 | vcaballero | */
|
82 | public void removeLayerCollectionListener(LayerCollectionListener listener) { |
||
83 | layerListeners.remove(listener); |
||
84 | } |
||
85 | 214 | fernando | |
86 | 524 | vcaballero | /**
|
87 | 1005 | vcaballero | * A?ade una capa.
|
88 | 524 | vcaballero | *
|
89 | 1005 | vcaballero | * @param layer
|
90 | 524 | vcaballero | */
|
91 | private void doAddLayer(FLayer layer) { |
||
92 | layers.add(layer); |
||
93 | 694 | fernando | layer.setParentLayer(this);
|
94 | 524 | vcaballero | } |
95 | 270 | vcaballero | |
96 | 524 | vcaballero | /**
|
97 | * A?ade una capa al final de la lista de subcapas
|
||
98 | *
|
||
99 | 1005 | vcaballero | * @param layer
|
100 | 524 | vcaballero | *
|
101 | * @throws CancelationException
|
||
102 | */
|
||
103 | public void addLayer(FLayer layer) throws CancelationException { |
||
104 | LayerCollectionEvent event = new LayerCollectionEvent(layer);
|
||
105 | 214 | fernando | |
106 | 524 | vcaballero | callLayerAdding(event); |
107 | 404 | fjp | |
108 | 524 | vcaballero | doAddLayer(layer); |
109 | 404 | fjp | |
110 | 524 | vcaballero | callLayerAdded(event); |
111 | } |
||
112 | 404 | fjp | |
113 | 524 | vcaballero | /**
|
114 | * Mueve una capa de la posici?n from a la posici?n to. (Se supone que
|
||
115 | * est?n dentro del mismo nivel). Para mover entre niveles, usar otro
|
||
116 | * m?todo (por hacer)
|
||
117 | *
|
||
118 | 1005 | vcaballero | * @param from origen.
|
119 | * @param to destino.
|
||
120 | 524 | vcaballero | *
|
121 | * @throws CancelationException
|
||
122 | */
|
||
123 | public void moveTo(int from, int to) throws CancelationException { |
||
124 | FLayer aux = (FLayer) layers.get(from); |
||
125 | LayerPositionEvent event = new LayerPositionEvent(aux, from, to);
|
||
126 | callLayerMoving(event); |
||
127 | layers.remove(from); |
||
128 | layers.add(to, aux); |
||
129 | callLayerMoved(event); |
||
130 | } |
||
131 | 257 | vcaballero | |
132 | 524 | vcaballero | /**
|
133 | 1005 | vcaballero | * Borra una capa del ArrayList que contiene a las capas.
|
134 | 524 | vcaballero | *
|
135 | 1005 | vcaballero | * @param lyr FLayer.
|
136 | 524 | vcaballero | */
|
137 | private void doRemoveLayer(FLayer lyr) { |
||
138 | layers.remove(lyr); |
||
139 | } |
||
140 | 214 | fernando | |
141 | 524 | vcaballero | /**
|
142 | 1005 | vcaballero | * Borra una capa de la colecci?n de capas.
|
143 | 524 | vcaballero | *
|
144 | 1005 | vcaballero | * @param lyr FLayer
|
145 | 524 | vcaballero | *
|
146 | 1005 | vcaballero | * @throws CancelationException
|
147 | 524 | vcaballero | */
|
148 | public void removeLayer(FLayer lyr) throws CancelationException { |
||
149 | LayerCollectionEvent event = new LayerCollectionEvent(lyr);
|
||
150 | callLayerRemoving(event); |
||
151 | doRemoveLayer(lyr); |
||
152 | callLayerRemoved(event); |
||
153 | } |
||
154 | 214 | fernando | |
155 | 524 | vcaballero | /**
|
156 | * Borra una FLayer del vector a partir del identificador.
|
||
157 | *
|
||
158 | * @param idLayer
|
||
159 | */
|
||
160 | public void removeLayer(int idLayer) { |
||
161 | layers.remove(idLayer); |
||
162 | } |
||
163 | 257 | vcaballero | |
164 | 524 | vcaballero | /**
|
165 | * M?todo de conveniencia para borrar una capa con ese nombre
|
||
166 | *
|
||
167 | * @param layerName
|
||
168 | */
|
||
169 | public void removeLayer(String layerName) { |
||
170 | FLayer lyr; |
||
171 | 214 | fernando | |
172 | 524 | vcaballero | for (int i = 0; i < layers.size(); i++) { |
173 | lyr = ((FLayer) layers.get(i)); |
||
174 | 402 | fjp | |
175 | 524 | vcaballero | if (lyr.getName().compareToIgnoreCase(layerName) == 0) { |
176 | layers.remove(i); |
||
177 | 214 | fernando | |
178 | 524 | vcaballero | break;
|
179 | } |
||
180 | } |
||
181 | } |
||
182 | 214 | fernando | |
183 | 524 | vcaballero | /**
|
184 | * Obtiene el array de capas visibles que penden del arbol cuya ra?z es
|
||
185 | * este nodo
|
||
186 | *
|
||
187 | 1005 | vcaballero | * @return Vector de FLayer.
|
188 | 524 | vcaballero | */
|
189 | public FLayer[] getVisibles() { |
||
190 | ArrayList array = new ArrayList(); |
||
191 | 404 | fjp | |
192 | 524 | vcaballero | for (Iterator iter = layers.iterator(); iter.hasNext();) { |
193 | if (((FLayer) iter.next()).isVisible()) {
|
||
194 | array.add((FLayer) iter.next()); |
||
195 | } |
||
196 | } |
||
197 | 404 | fjp | |
198 | 524 | vcaballero | return (FLayer[]) array.toArray(new FLayer[0]); |
199 | } |
||
200 | 404 | fjp | |
201 | 524 | vcaballero | /**
|
202 | * Obtiene el hijo i-?simo directo de esta colecci?n
|
||
203 | *
|
||
204 | 1005 | vcaballero | * @param index ?ndice.
|
205 | 524 | vcaballero | *
|
206 | 1005 | vcaballero | * @return capa seleccionada.
|
207 | 524 | vcaballero | */
|
208 | public FLayer getLayer(int index) { |
||
209 | return (FLayer) layers.get(index);
|
||
210 | } |
||
211 | 242 | vcaballero | |
212 | 524 | vcaballero | /**
|
213 | * M?todo de conveniencia para buscar una capa por su nombre Es conveniente
|
||
214 | * usar getLayer(int) siempre que se pueda, es m?s directo.
|
||
215 | *
|
||
216 | 1005 | vcaballero | * @param layerName nombre.
|
217 | 524 | vcaballero | *
|
218 | 1005 | vcaballero | * @return capa seleccionada.
|
219 | 524 | vcaballero | */
|
220 | public FLayer getLayer(String layerName) { |
||
221 | FLayer lyr; |
||
222 | 242 | vcaballero | |
223 | 524 | vcaballero | for (int i = 0; i < layers.size(); i++) { |
224 | lyr = ((FLayer) layers.get(i)); |
||
225 | 242 | vcaballero | |
226 | 524 | vcaballero | if (lyr.getName().compareToIgnoreCase(layerName) == 0) { |
227 | return lyr;
|
||
228 | } |
||
229 | } |
||
230 | 346 | fernando | |
231 | 524 | vcaballero | return null; |
232 | } |
||
233 | 346 | fernando | |
234 | 524 | vcaballero | /**
|
235 | * Obtiene el n?mero de capas que hay en su mismo nivel Es decir, no cuenta
|
||
236 | * las subcapas de un FLayers
|
||
237 | *
|
||
238 | 1005 | vcaballero | * @return n?mero de capas.
|
239 | 524 | vcaballero | */
|
240 | public int getLayersCount() { |
||
241 | return layers.size();
|
||
242 | } |
||
243 | 346 | fernando | |
244 | 524 | vcaballero | /**
|
245 | 1056 | vcaballero | * @see com.iver.cit.gvsig.fmap.layers.FLayer#draw(java.awt.image.BufferedImage,
|
246 | 524 | vcaballero | * java.awt.Graphics2D, com.iver.cit.gvsig.fmap.ViewPort)
|
247 | */
|
||
248 | public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort, |
||
249 | 1005 | vcaballero | Cancellable cancel) throws DriverException {
|
250 | 524 | vcaballero | for (Iterator iter = layers.iterator(); iter.hasNext();) { |
251 | 533 | vcaballero | FLayer lyr = (FLayer) iter.next(); |
252 | 541 | vcaballero | |
253 | 524 | vcaballero | if (lyr.isVisible()) {
|
254 | lyr.draw(image, g, viewPort, cancel); |
||
255 | } |
||
256 | } |
||
257 | 1005 | vcaballero | |
258 | if (getVirtualLayers() != null) { |
||
259 | 745 | fjp | getVirtualLayers().draw(image, g, viewPort, cancel); |
260 | 1005 | vcaballero | } |
261 | 524 | vcaballero | } |
262 | |||
263 | /**
|
||
264 | 1005 | vcaballero | * @see com.iver.cit.gvsig.fmap.layers.FLayer#print(java.awt.Graphics2D,
|
265 | * com.iver.cit.gvsig.fmap.ViewPort,
|
||
266 | * com.iver.cit.gvsig.fmap.operations.Cancellable)
|
||
267 | 524 | vcaballero | */
|
268 | 1005 | vcaballero | public void print(Graphics2D g, ViewPort viewPort, Cancellable cancel) |
269 | throws DriverException {
|
||
270 | 650 | vcaballero | for (Iterator iter = layers.iterator(); iter.hasNext();) { |
271 | FLayer lyr = (FLayer) iter.next(); |
||
272 | |||
273 | if (lyr.isVisible()) {
|
||
274 | lyr.print(g, viewPort, cancel); |
||
275 | } |
||
276 | } |
||
277 | 524 | vcaballero | } |
278 | |||
279 | /**
|
||
280 | * @see com.iver.cit.gvsig.fmap.layers.FLayer#getFullExtent()
|
||
281 | */
|
||
282 | 651 | fernando | public Rectangle2D getFullExtent() throws DriverException { |
283 | 524 | vcaballero | Rectangle2D rAux = null; |
284 | int i = 0; |
||
285 | |||
286 | for (Iterator iter = layers.iterator(); iter.hasNext();) { |
||
287 | 533 | vcaballero | FLayer capa = (FLayer) iter.next(); |
288 | 524 | vcaballero | |
289 | if (i == 0) { |
||
290 | rAux = capa.getFullExtent(); |
||
291 | } else {
|
||
292 | rAux.add(capa.getFullExtent()); |
||
293 | } |
||
294 | |||
295 | i++; |
||
296 | } |
||
297 | |||
298 | return rAux;
|
||
299 | } |
||
300 | 1005 | vcaballero | |
301 | 524 | vcaballero | /**
|
302 | 1005 | vcaballero | * Llama al m?todo layerAdding de los listeners dados de alta.
|
303 | 524 | vcaballero | *
|
304 | 1005 | vcaballero | * @param event
|
305 | 524 | vcaballero | *
|
306 | * @throws CancelationException
|
||
307 | */
|
||
308 | private void callLayerAdding(LayerCollectionEvent event) |
||
309 | throws CancelationException {
|
||
310 | for (Iterator iter = layerListeners.iterator(); iter.hasNext();) { |
||
311 | ((LayerCollectionListener) iter.next()).layerAdding(event); |
||
312 | } |
||
313 | } |
||
314 | 257 | vcaballero | |
315 | 524 | vcaballero | /**
|
316 | 1005 | vcaballero | * Llama al m?todo layerRemoving de los listeners dados de alta.
|
317 | 524 | vcaballero | *
|
318 | 1005 | vcaballero | * @param event
|
319 | 524 | vcaballero | *
|
320 | * @throws CancelationException
|
||
321 | */
|
||
322 | private void callLayerRemoving(LayerCollectionEvent event) |
||
323 | throws CancelationException {
|
||
324 | for (Iterator iter = layerListeners.iterator(); iter.hasNext();) { |
||
325 | ((LayerCollectionListener) iter.next()).layerRemoving(event); |
||
326 | } |
||
327 | } |
||
328 | 257 | vcaballero | |
329 | 524 | vcaballero | /**
|
330 | 1005 | vcaballero | * Llama al m?todo layerMoving de los listeners dados de alta.
|
331 | 524 | vcaballero | *
|
332 | 1005 | vcaballero | * @param event
|
333 | 524 | vcaballero | *
|
334 | * @throws CancelationException
|
||
335 | */
|
||
336 | private void callLayerMoving(LayerPositionEvent event) |
||
337 | throws CancelationException {
|
||
338 | for (Iterator iter = layerListeners.iterator(); iter.hasNext();) { |
||
339 | ((LayerCollectionListener) iter.next()).layerMoving(event); |
||
340 | } |
||
341 | } |
||
342 | 353 | fernando | |
343 | 524 | vcaballero | /**
|
344 | 1005 | vcaballero | * Llama al m?todo layerAdded de los listeners dados de alta.
|
345 | 524 | vcaballero | *
|
346 | 1005 | vcaballero | * @param event
|
347 | 524 | vcaballero | */
|
348 | private void callLayerAdded(LayerCollectionEvent event) { |
||
349 | for (Iterator iter = layerListeners.iterator(); iter.hasNext();) { |
||
350 | ((LayerCollectionListener) iter.next()).layerAdded(event); |
||
351 | } |
||
352 | } |
||
353 | 353 | fernando | |
354 | 524 | vcaballero | /**
|
355 | 1005 | vcaballero | * Llama al m?todo layerRemoved de los listeners dados de alta.
|
356 | 524 | vcaballero | *
|
357 | 1005 | vcaballero | * @param event
|
358 | 524 | vcaballero | */
|
359 | private void callLayerRemoved(LayerCollectionEvent event) { |
||
360 | for (Iterator iter = layerListeners.iterator(); iter.hasNext();) { |
||
361 | ((LayerCollectionListener) iter.next()).layerRemoved(event); |
||
362 | } |
||
363 | } |
||
364 | 353 | fernando | |
365 | 435 | vcaballero | /**
|
366 | 1005 | vcaballero | * Llama al m?todo layerMoved de los listeners dados de alta.
|
367 | 524 | vcaballero | *
|
368 | 1005 | vcaballero | * @param event
|
369 | 524 | vcaballero | */
|
370 | private void callLayerMoved(LayerPositionEvent event) { |
||
371 | for (Iterator iter = layerListeners.iterator(); iter.hasNext();) { |
||
372 | ((LayerCollectionListener) iter.next()).layerMoved(event); |
||
373 | } |
||
374 | } |
||
375 | |||
376 | /**
|
||
377 | 435 | vcaballero | * @see com.iver.cit.gvsig.fmap.layers.FLayer#getProperties()
|
378 | */
|
||
379 | 651 | fernando | public XMLEntity getXMLEntity() {
|
380 | 524 | vcaballero | XMLEntity xml = super.getXMLEntity();
|
381 | xml.putProperty("numLayers", layers.size());
|
||
382 | 1005 | vcaballero | |
383 | String[] s = new String[layers.size()]; |
||
384 | |||
385 | for (int i = 0; i < layers.size(); i++) { |
||
386 | s[i] = ((FLayer) layers.get(i)).getName(); |
||
387 | 558 | vcaballero | } |
388 | 1005 | vcaballero | |
389 | xml.putProperty("LayerNames", s);
|
||
390 | |||
391 | 524 | vcaballero | for (int i = 0; i < layers.size(); i++) { |
392 | xml.addChild(((FLayer) layers.get(i)).getXMLEntity()); |
||
393 | 435 | vcaballero | } |
394 | 524 | vcaballero | |
395 | 435 | vcaballero | return xml;
|
396 | } |
||
397 | 341 | fernando | |
398 | 435 | vcaballero | /**
|
399 | 1056 | vcaballero | * DOCUMENT ME!
|
400 | *
|
||
401 | * @param xml DOCUMENT ME!
|
||
402 | *
|
||
403 | * @throws XMLException
|
||
404 | *
|
||
405 | 435 | vcaballero | * @see com.iver.cit.gvsig.fmap.layers.FLyrDefault#setXMLEntity(com.iver.utiles.XMLEntity)
|
406 | */
|
||
407 | 1056 | vcaballero | public void setXMLEntity(XMLEntity xml) throws XMLException { |
408 | 442 | vcaballero | super.setXMLEntity(xml);
|
409 | 1005 | vcaballero | |
410 | 894 | vcaballero | int numLayers = xml.getIntProperty("numLayers"); |
411 | 524 | vcaballero | |
412 | 1005 | vcaballero | String[] s = xml.getStringArrayProperty("LayerNames"); |
413 | 1060 | fjp | try {
|
414 | for (int i = 0; i < numLayers; i++) { |
||
415 | FLayer layer = null;
|
||
416 | |||
417 | String className = xml.getChild(i).getStringProperty("className"); |
||
418 | |||
419 | if (className.equals(FLyrVect.class.getName())) {
|
||
420 | if (xml.getChild(i).contains("file")) { |
||
421 | |||
422 | layer = LayerFactory.createLayer(s[i], |
||
423 | xml.getChild(i).getStringProperty("driverName"),
|
||
424 | new File(xml.getChild(i).getStringProperty("file")), |
||
425 | this.getFMap().getViewPort().getProjection());
|
||
426 | } else if (true) { |
||
427 | //TODO falta por implementar
|
||
428 | } else if (true) { |
||
429 | //TODO falta por implementar
|
||
430 | } |
||
431 | |||
432 | layer.setXMLEntity(xml.getChild(i)); |
||
433 | } else if (className.equals(FLyrWMS.class.getName())) { |
||
434 | try {
|
||
435 | layer = LayerFactory.createLayer(s[i], |
||
436 | StringUtilities.string2Rect( |
||
437 | xml.getChild(i).getStringProperty("fullExtent")),
|
||
438 | new URL(xml.getChild(i).getStringProperty("host")), |
||
439 | xml.getChild(i).getStringProperty("format"),
|
||
440 | xml.getChild(i).getStringProperty("infoLayerQuery"),
|
||
441 | xml.getChild(i).getStringProperty("layerQuery"),
|
||
442 | xml.getChild(i).getStringProperty("srs"));
|
||
443 | } catch (MalformedURLException e) { |
||
444 | throw new XMLException(e); |
||
445 | } |
||
446 | } else if (className.equals((FLyrRaster.class.getName()))) { |
||
447 | //if (xml.getChild(i).contains("file")) {
|
||
448 | 1005 | vcaballero | layer = LayerFactory.createLayer(s[i], |
449 | xml.getChild(i).getStringProperty("driverName"),
|
||
450 | new File(xml.getChild(i).getStringProperty("file")), |
||
451 | this.getFMap().getViewPort().getProjection());
|
||
452 | 1060 | fjp | |
453 | //} else if (true) {
|
||
454 | 894 | vcaballero | //TODO falta por implementar
|
455 | 1060 | fjp | //} else if (true) {
|
456 | 894 | vcaballero | //TODO falta por implementar
|
457 | 1060 | fjp | //}
|
458 | //TODO Falta por implementar
|
||
459 | 894 | vcaballero | } |
460 | 1060 | fjp | |
461 | fmap.getLayers().addLayer(layer); |
||
462 | 894 | vcaballero | } |
463 | 1060 | fjp | } catch (DriverException e) {
|
464 | throw new XMLException(e); |
||
465 | 435 | vcaballero | } |
466 | 1060 | fjp | |
467 | 435 | vcaballero | } |
468 | 562 | fernando | |
469 | /**
|
||
470 | 1005 | vcaballero | * @see com.iver.cit.gvsig.fmap.layers.layerOperations.VectorialData#process(com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor,
|
471 | * java.util.BitSet)
|
||
472 | 562 | fernando | */
|
473 | 1005 | vcaballero | public void process(FeatureVisitor visitor, BitSet subset) |
474 | throws DriverException, VisitException {
|
||
475 | 562 | fernando | for (Iterator iter = layers.iterator(); iter.hasNext();) { |
476 | FLayer layer = (FLayer) iter.next(); |
||
477 | 1005 | vcaballero | |
478 | 562 | fernando | if (layer instanceof VectorialData) { |
479 | ((VectorialData) layer).process(visitor, subset); |
||
480 | } |
||
481 | } |
||
482 | } |
||
483 | |||
484 | /**
|
||
485 | * @see com.iver.cit.gvsig.fmap.layers.layerOperations.VectorialData#process(com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor)
|
||
486 | */
|
||
487 | 1005 | vcaballero | public void process(FeatureVisitor visitor) |
488 | throws DriverException, VisitException {
|
||
489 | 562 | fernando | for (Iterator iter = layers.iterator(); iter.hasNext();) { |
490 | FLayer layer = (FLayer) iter.next(); |
||
491 | 1005 | vcaballero | |
492 | if (layer.isActive()) {
|
||
493 | 661 | fjp | if (layer instanceof VectorialData) { |
494 | ((VectorialData) layer).process(visitor); |
||
495 | } |
||
496 | 1005 | vcaballero | } |
497 | 562 | fernando | } |
498 | } |
||
499 | 694 | fernando | |
500 | /**
|
||
501 | * @see com.iver.cit.gvsig.fmap.layers.FLayer#getFMap()
|
||
502 | */
|
||
503 | public FMap getFMap() {
|
||
504 | return fmap;
|
||
505 | } |
||
506 | 885 | fjp | |
507 | /* (non-Javadoc)
|
||
508 | * @see com.iver.cit.gvsig.fmap.layers.FLayer#setCoordTrans(org.cresques.cts.ICoordTrans)
|
||
509 | */
|
||
510 | public void setCoordTrans(ICoordTrans ct) { |
||
511 | super.setCoordTrans(ct);
|
||
512 | 1005 | vcaballero | |
513 | 885 | fjp | for (Iterator iter = layers.iterator(); iter.hasNext();) { |
514 | FLayer layer = (FLayer) iter.next(); |
||
515 | layer.setCoordTrans(ct); |
||
516 | 1005 | vcaballero | } |
517 | 885 | fjp | } |
518 | 1005 | vcaballero | |
519 | /**
|
||
520 | * @see com.iver.cit.gvsig.fmap.layers.layerOperations.LayerCollection#setAllActives(boolean)
|
||
521 | */
|
||
522 | public void setAllActives(boolean active) { |
||
523 | FLayer lyr; |
||
524 | |||
525 | for (int i = 0; i < layers.size(); i++) { |
||
526 | lyr = ((FLayer) layers.get(i)); |
||
527 | lyr.setActive(active); |
||
528 | |||
529 | if (lyr instanceof LayerCollection) { |
||
530 | ((LayerCollection) lyr).setAllActives(active); |
||
531 | } |
||
532 | } |
||
533 | } |
||
534 | |||
535 | /**
|
||
536 | * @see com.iver.cit.gvsig.fmap.layers.layerOperations.LayerCollection#getActives()
|
||
537 | */
|
||
538 | public FLayer[] getActives() { |
||
539 | ArrayList ret = new ArrayList(); |
||
540 | |||
541 | for (int i = 0; i < layers.size(); i++) { |
||
542 | if (((FLayer) layers.get(i)).isActive()) {
|
||
543 | ret.add(layers.get(i)); |
||
544 | } |
||
545 | } |
||
546 | |||
547 | return (FLayer[]) ret.toArray(new FLayer[0]); |
||
548 | } |
||
549 | 214 | fernando | } |