package data.events;

import util.*;

/**
  * An <i>abstract</i> adapter class for receiving stock change events. The methods in this class are empty.
  * This class exists as convenience for creating listener objects.
  *
  * <p>Extend this class to create a StockChangeEvent listener and override the methods for the events of
  * interest. (If you implement the StockChangeListener interface, you have to define all of the methods in
  * it. This abstract class defines empty method bodies for them all, so you can concentrate on defining
  * methods only for events you care about.)</p>
  *
  * <p>Create a listener object using the extended class and then register it with a ListenableStock using
  * the Stock's {@link data.ListenableStock#addStockChangeListener} method. When the Stock's contents
  * change, the relevant method in the listener object is invoked, and a {@link StockChangeEvent} is passed
  * to it.</p>
  *
  * @author Steffen Zschaler
  * @version 2.0 19/08/1999
  * @since v2.0
  */
public class StockChangeAdapter extends Object implements StockChangeListener,
                                                          SerializableListener {
  /**
    * Called whenever StockItems were added to the Stock.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void addedStockItems (StockChangeEvent e) {}

  /**
    * Called whenever the adding of StockItems was commited.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void commitAddStockItems (StockChangeEvent e) {}

  /**
    * Called whenever the adding of StockItems was rolled back.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void rollbackAddStockItems (StockChangeEvent e) {}

  /**
    * Called to ask whether certain StockItems may be removed. If one of the listeners vetos the removal, all
    * listeners that had already been asked will receive a {@link #noRemoveStockItems noRemoveStockItems}
    * event.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    *
    * @exception VetoException if the listener wants to veto the removal.
    */
  public void canRemoveStockItems (StockChangeEvent e) throws VetoException {}

  /**
    * Called for each listener that already agreed with a removal that was then rejected by another listener.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void noRemoveStockItems (StockChangeEvent e) {}

  /**
    * Called whenever StockItems were removed from the Stock.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void removedStockItems (StockChangeEvent e) {}

  /**
    * Called whenever the removal of StockItems was commited.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void commitRemoveStockItems (StockChangeEvent e) {}

  /**
    * Called whenever the removal of StockItems was rolled back.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void rollbackRemoveStockItems (StockChangeEvent e) {}

  /**
    * Called to ask whether certain StockItems may be edited. If one of the listeners vetos the editing, all
    * listeners that had already been asked will receive a {@link #noEditStockItems noEditStockItems}
    * event.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    *
    * @exception VetoException if the listener wants to veto the editing.
    */
  public void canEditStockItems (StockChangeEvent e) throws VetoException {}

  /**
    * Called for each listener that already agreed with an editing that was then rejected by another listener.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void noEditStockItems (StockChangeEvent e) {}

  /**
    * Called whenever the Stock began editing StockItems. This event may be accompanied by a
    * <code>removedStockItems</code> and a <code>addedStockItems</code> event, but this is implementation
    * specific.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void editingStockItems (StockChangeEvent e) {}

  /**
    * Called whenever the editing of StockItems was commited.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void commitEditStockItems (StockChangeEvent e) {}

  /**
    * Called whenever the editing of StockItems was rolled back.
    *
    * @override Sometimes
    *
    * @param e an event object describing the event.
    */
  public void rollbackEditStockItems (StockChangeEvent e) {}
}