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

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

package net.sf.javagimmicks.collections.event;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

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

public class ObservableEventMap extends AbstractEventMap
{
   private static final long serialVersionUID = 8006998141057065129L;

   protected transient List> _listeners;
   
   public ObservableEventMap(Map decorated)
   {
      super(decorated);
   }  

   public void addEventMapListener(EventMapListener listener)
   {
      if(_listeners == null)
      {
         _listeners = new ArrayList>();
      }
      
      _listeners.add(listener);
   }
   
   public void removeEventMapListener(EventMapListener listener)
   {
      if(_listeners != null)
      {
         _listeners.remove(listener);
      }
   }
   
   @Override
   protected void fireEntryAdded(K key, V value)
   {
      fireEvent(new MapEvent(this, Type.ADDED, key, value));
   }

   @Override
   protected void fireEntryRemoved(K key, V value)
   {
      fireEvent(new MapEvent(this, Type.REMOVED, key, value));
   }

   @Override
   protected void fireEntryUpdated(K key, V oldValue, V newValue)
   {
      fireEvent(new MapEvent(this, Type.UPDATED, key, oldValue, newValue));
   }

   private void fireEvent(MapEvent event)
   {
      if(_listeners == null)
      {
         return;
      }
      
      for(EventMapListener listener : _listeners)
      {
         listener.eventOccured(event);
      }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy