All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.javagimmicks.collections.event.ObservableEventSet Maven / Gradle / Ivy

package net.sf.javagimmicks.collections.event;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import net.sf.javagimmicks.collections.event.SetEvent.Type;

public class ObservableEventSet extends AbstractEventSet
{
   private static final long serialVersionUID = 4799365684601532982L;

   protected transient List> _listeners;

   public ObservableEventSet(Set decorated)
   {
      super(decorated);
   }
   
   public void addEventSetListener(EventSetListener listener)
   {
      if(_listeners == null)
      {
         _listeners = new ArrayList>();
      }
      
      _listeners.add(listener);
   }
   
   public void removeEventSetListener(EventSetListener listener)
   {
      if(_listeners != null)
      {
         _listeners.remove(listener);
      }
   }
   
   @Override
   protected void fireElementAdded(E element)
   {
      fireEvent(new SetEvent(this, Type.ADDED, element));
   }
   
   @Override
   protected void fireElementReadded(E element)
   {
      fireEvent(new SetEvent(this, Type.READDED, element));
   }
   
   @Override
   protected void fireElementRemoved(E element)
   {
      fireEvent(new SetEvent(this, Type.REMOVED, element));
   }
   
   private void fireEvent(SetEvent event)
   {
      if(_listeners == null)
      {
         return;
      }
      
      for(EventSetListener listener : _listeners)
      {
         listener.eventOccured(event);
      }
   }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy