Revision 2981 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLayers.java

View differences:

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