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

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

package net.sf.javagimmicks.collections.event;

import java.util.ArrayList;
import java.util.List;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.SortedMap;

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

public class ObservableEventNavigableMap extends AbstractEventNavigableMap
{
   private static final long serialVersionUID = -4936595637793434597L;

   protected transient List> _listeners;
   
   public ObservableEventNavigableMap(NavigableMap decorated)
   {
      super(decorated);
   }
   
   public void addEventNavigableMapListener(EventNavigableMapListener listener)
   {
      if(_listeners == null)
      {
         _listeners = new ArrayList>();
      }
      
      _listeners.add(listener);
   }
   
   public void removeEventNavigableMapListener(EventNavigableMapListener listener)
   {
      if(_listeners != null)
      {
         _listeners.remove(listener);
      }
   }
   
   @Override
   public NavigableSet descendingKeySet()
   {
      // TODO Auto-generated method stub
      return super.descendingKeySet();
   }

   @Override
   public NavigableMap descendingMap()
   {
      // TODO Auto-generated method stub
      return super.descendingMap();
   }

   @Override
   public NavigableMap headMap(K toKey, boolean inclusive)
   {
      // TODO Auto-generated method stub
      return super.headMap(toKey, inclusive);
   }

   @Override
   public NavigableSet navigableKeySet()
   {
      // TODO Auto-generated method stub
      return super.navigableKeySet();
   }

   @Override
   public NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
   {
      // TODO Auto-generated method stub
      return super.subMap(fromKey, fromInclusive, toKey, toInclusive);
   }

   @Override
   public NavigableMap tailMap(K fromKey, boolean inclusive)
   {
      // TODO Auto-generated method stub
      return super.tailMap(fromKey, inclusive);
   }

   @Override
   public SortedMap headMap(K toKey)
   {
      // TODO Auto-generated method stub
      return super.headMap(toKey);
   }

   @Override
   public SortedMap subMap(K fromKey, K toKey)
   {
      // TODO Auto-generated method stub
      return super.subMap(fromKey, toKey);
   }

   @Override
   public SortedMap tailMap(K fromKey)
   {
      // TODO Auto-generated method stub
      return super.tailMap(fromKey);
   }

   @Override
   protected void fireEntryAdded(K key, V value)
   {
      fireEvent(new NavigableMapEvent(this, Type.ADDED, key, value));
   }

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

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

   private void fireEvent(NavigableMapEvent event)
   {
      if(_listeners == null)
      {
         return;
      }
      
      for(EventNavigableMapListener listener : _listeners)
      {
         listener.eventOccured(event);
      }
   }
   
   protected static class ObservableEventSubNavigableMap extends ObservableEventNavigableMap
   {
      private static final long serialVersionUID = -863678987488740776L;

      protected final ObservableEventNavigableMap _parent;

      protected ObservableEventSubNavigableMap(ObservableEventNavigableMap parent, NavigableMap decorated)
      {
         super(decorated);
         _parent = parent;
      }

      @Override
      protected void fireEntryAdded(K key, V value)
      {
         super.fireEntryAdded(key, value);
         _parent.fireEntryAdded(key, value);
      }

      @Override
      protected void fireEntryRemoved(K key, V value)
      {
         super.fireEntryRemoved(key, value);
         _parent.fireEntryRemoved(key, value);
      }

      @Override
      protected void fireEntryUpdated(K key, V oldValue, V newValue)
      {
         super.fireEntryUpdated(key, oldValue, newValue);
         _parent.fireEntryUpdated(key, oldValue, newValue);
      }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy