Revision 2981 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLayers.java
FLayers.java | ||
---|---|---|
48 | 48 |
import java.net.URL; |
49 | 49 |
import java.util.ArrayList; |
50 | 50 |
import java.util.Collections; |
51 |
import java.util.ConcurrentModificationException; |
|
51 | 52 |
import java.util.Iterator; |
53 |
import java.util.List; |
|
52 | 54 |
|
53 | 55 |
import org.cresques.cts.ICoordTrans; |
54 | 56 |
import org.cresques.cts.IProjection; |
... | ... | |
80 | 82 |
LayerCollection { |
81 | 83 |
//ArrayList de Listener registrados. |
82 | 84 |
private ArrayList layerListeners = new ArrayList(); |
83 |
private ArrayList layers = new ArrayList(); //Collections.synchronizedList(new ArrayList());
|
|
85 |
private List layers = Collections.synchronizedList(new ArrayList());
|
|
84 | 86 |
private FMap fmap; |
85 | 87 |
|
86 | 88 |
/** |
... | ... | |
298 | 300 |
public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort, |
299 | 301 |
Cancellable cancel,double scale) throws DriverException { |
300 | 302 |
//double scale = getFMap().getScaleView(); |
301 |
/* Iterator iter = layers.iterator(); |
|
302 |
while (iter.hasNext()) |
|
303 |
{ */ |
|
304 |
for (int i=0; i < layers.size(); i++) |
|
305 |
{ |
|
306 |
// FLayer lyr = (FLayer) iter.next(); |
|
307 |
FLayer lyr = (FLayer) layers.get(i); |
|
308 |
if (lyr.isVisible()) { |
|
309 |
|
|
310 |
long t1 = System.currentTimeMillis(); |
|
311 |
synchronized (this) { |
|
312 |
//Sincronizaci?n del m?todo dibujar de cada Layer, esto es posible hacerlo de otra forma, |
|
313 |
//pero de momento se queda as?, para solucionar el refresco de una misma vista que est? a?adida en el Layout. |
|
314 |
lyr.draw(image, g, viewPort, cancel,scale); |
|
315 |
} |
|
316 |
long t2 = System.currentTimeMillis(); |
|
317 |
System.out.println("Layer " + lyr.getName() + " " |
|
318 |
+ (t2-t1) + " milisecs."); |
|
319 |
} |
|
320 |
} |
|
321 |
|
|
322 |
if (getVirtualLayers() != null) { |
|
323 |
getVirtualLayers().draw(image, g, viewPort, cancel,scale); |
|
324 |
} |
|
303 |
Iterator iter = layers.iterator(); |
|
304 |
try |
|
305 |
{ |
|
306 |
while (iter.hasNext()) |
|
307 |
{ |
|
308 |
// for (int i=0; i < layers.size(); i++) { |
|
309 |
FLayer lyr = (FLayer) iter.next(); |
|
310 |
// FLayer lyr = (FLayer) layers.get(i); |
|
311 |
if (lyr.isVisible()) { |
|
312 |
|
|
313 |
long t1 = System.currentTimeMillis(); |
|
314 |
synchronized (this) { |
|
315 |
//Sincronizaci?n del m?todo dibujar de cada Layer, esto es posible hacerlo de otra forma, |
|
316 |
//pero de momento se queda as?, para solucionar el refresco de una misma vista que est? a?adida en el Layout. |
|
317 |
lyr.draw(image, g, viewPort, cancel,scale); |
|
318 |
} |
|
319 |
long t2 = System.currentTimeMillis(); |
|
320 |
System.out.println("Layer " + lyr.getName() + " " |
|
321 |
+ (t2-t1) + " milisecs."); |
|
322 |
} |
|
323 |
} |
|
324 |
if (getVirtualLayers() != null) { |
|
325 |
getVirtualLayers().draw(image, g, viewPort, cancel,scale); |
|
326 |
} |
|
327 |
} |
|
328 |
catch (ConcurrentModificationException e) |
|
329 |
{ |
|
330 |
System.err.println(e.getMessage()); |
|
331 |
} |
|
325 | 332 |
} |
326 | 333 |
|
327 | 334 |
/** |
Also available in: Unified diff