package data;

import data.events.*;

/**
  * A DataBasket that will fire events to inform about changes to its contents.
  *
  * @author Steffen Zschaler
  * @version 2.0 18/08/1999
  * @since v2.0
  */
public interface ListenableDataBasket extends DataBasket {

  /**
    * Add a listener that will be informed about changes to the DataBasket's contents.
    *
    * @override Always
    *
    * @param dbl the listener.
    */
  public void addDataBasketListener (DataBasketListener dbl);

  /**
    * Remove a listener that was being informed about changes to the DataBasket's contents.
    *
    * @override Always
    *
    * @param dbl the listener.
    */
  public void removeDataBasketListener (DataBasketListener dbl);

  /**
    * Fire an event to inform listeners about some unspecific change to the DataBasket's contents.
    *
    * <p>This method is necessary as there may be changes that are made without calling methods in the
    * DataBasket. In such cases a call to this method will be necessary to keep the listeners informed.</p>
    *
    * @override Always
    *
    * @param dbl the listener.
    */
  public void fireDataBasketChanged();
}