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

net.alantea.liteprops.IBinding Maven / Gradle / Ivy

package net.alantea.liteprops;

import java.util.List;

public interface IBinding
{
   public List> getListeners();
   
   /**
    * Adds the listener.
    *
    * @param listener the listener
    */
   public default void addListener(ChangeListener listener)
   {
      List> listeners = getListeners();
      if (!listeners.contains(listener))
      {
         listeners.add(listener);
      }
   }
   
   /**
    * Removes the listener.
    *
    * @param listener the listener
    */
   public default void removeListener(ChangeListener listener)
   {
      List> listeners = getListeners();
      if (listeners.contains(listener))
      {
         listeners.remove(listener);
      }
   }


   /**
    * Fire the change.
    *
    * @param before the before
    * @param after the after
    */
   public default void fireChanged(Object before, Object after)
   {
      List> listeners = getListeners();
      for (ChangeListener listener : listeners)
      {
         try
         {
            listener.changed(before, after);
         }
         catch (Exception e)
         {
            // silently ignore it
         }
      }
   }
}