Revision 42811 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/FLyrDefault.java

View differences:

FLyrDefault.java
26 26
import java.awt.Image;
27 27
import java.awt.geom.Point2D;
28 28
import java.net.URI;
29
import java.util.ArrayList;
29
import java.util.HashSet;
30 30
import java.util.Iterator;
31 31
import java.util.List;
32 32
import java.util.Map;
33
import java.util.Set;
33 34

  
34 35
import org.cresques.cts.ICoordTrans;
35 36
import org.cresques.cts.IProjection;
......
150 151
	 * @see #removeLayerListener(LayerListener)
151 152
	 * @see #callEditionChanged(LayerEvent)
152 153
	 */
153
	protected ArrayList layerListeners = new ArrayList();
154
	protected Set<LayerListener> layerListeners = new HashSet<>();
154 155

  
155 156
	//by default, all is active, visible and avalaible
156 157
	/**
......
434 435
	 * @see com.iver.cit.gvsig.fmap.layers.FLayer#addLayerListener(com.iver.cit.gvsig.fmap.layers.LayerListener)
435 436
	 */
436 437
	public boolean addLayerListener(LayerListener o) {
437
		if (layerListeners.contains(o)) {
438
			return false;
439
		}
440
		return layerListeners.add(o);
438
            if( o == null ) {
439
                return true;
440
            }
441
            return layerListeners.add(o);
441 442
	}
442 443
	/*
443 444
	 * (non-Javadoc)
......
457 458
	 *
458 459
	 */
459 460
	private void callDrawValueChanged(LayerEvent e) {
460
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
461
			LayerListener listener = (LayerListener) iter.next();
462

  
463
			listener.drawValueChanged(e);
464
		}
461
           for (LayerListener listener : this.layerListeners) {
462
               try {
463
                   listener.drawValueChanged(e);
464
               } catch (Exception ex) {
465
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
466
               }
467
           }                
465 468
	}
466 469
	/**
467 470
	 * Called by the method {@linkplain #setName(String)}. Notifies all listeners associated to this layer,
......
472 475
	 * @see #setName(String)
473 476
	 */
474 477
	private void callNameChanged(LayerEvent e) {
475
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
476
			LayerListener listener = (LayerListener) iter.next();
477

  
478
			listener.nameChanged(e);
479
		}
478
           for (LayerListener listener : this.layerListeners) {
479
               try {
480
                   listener.nameChanged(e);
481
               } catch (Exception ex) {
482
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
483
               }
484
           }                
480 485
	}
481 486

  
482 487
	/**
......
488 493
	 * @see #setVisible(boolean)
489 494
	 */
490 495
	private void callVisibilityChanged(LayerEvent e) {
491
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
492
			LayerListener listener = (LayerListener) iter.next();
493

  
494
			listener.visibilityChanged(e);
495
		}
496
           for (LayerListener listener : this.layerListeners) {
497
               try {
498
                   listener.visibilityChanged(e);
499
               } catch (Exception ex) {
500
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
501
               }
502
           }                                
496 503
	}
497 504

  
498 505
	/**
......
502 509
	 * @param e a layer event with the name of the property that has changed
503 510
	 *
504 511
	 * @see #setActive(boolean)
505
	 */
506
	private void callActivationChanged(LayerEvent e) {
507
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
508
			LayerListener listener = (LayerListener) iter.next();
512
         */
513
       private void callActivationChanged(LayerEvent e) {
514
           for (LayerListener listener : this.layerListeners) {
515
               try {
516
                   listener.activationChanged(e);
517
               } catch (Exception ex) {
518
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
519
               }
520
           }
521
       }
509 522

  
510
			listener.activationChanged(e);
511
		}
512
	}
513

  
514 523
	/**
515 524
	 * Returns the virtual layers associated to this layer.
516 525
	 *
......
640 649
	 * @see #setEditing(boolean)
641 650
	 */
642 651
	protected void callEditionChanged(LayerEvent e) {
643
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
644
			LayerListener listener = (LayerListener) iter.next();
645

  
646
			listener.editionChanged(e);
647
		}
648
	}
652
           for (LayerListener listener : this.layerListeners) {
653
               try {
654
                   listener.editionChanged(e);
655
               } catch (Exception ex) {
656
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
657
               }
658
           } 
659
        }
660
        
649 661
	/*
650 662
	 * (non-Javadoc)
651 663
	 * @see com.iver.cit.gvsig.fmap.layers.FLayer#isEditing()
......
754 766
	 *
755 767
	 * @see com.iver.cit.gvsig.fmap.layers.FLayer#addError(BaseException)
756 768
	 */
769
        @Override
757 770
	public void addError(BaseException exception){
758 771
		status.addLayerError(exception);
759 772
	}
773
        
774
        @Override
775
        public void setError(Exception ex) {
776
            this.status.setLayerError(ex);
777
        }
778
        
760 779
	/*
761 780
	 * (non-Javadoc)
762 781
	 * @see com.iver.cit.gvsig.fmap.layers.FLayer#visibleRequired()
......
825 844
	}
826 845

  
827 846
	public void addLegendListener(LegendListener listener) {
828
		layerChangeSupport.addLayerListener(listener);
847
            if( listener == null ) {
848
                return ;
849
            }
850
            layerChangeSupport.addLayerListener(listener);
829 851
	}
830 852

  
831 853
	/**

Also available in: Unified diff