package com.jscape.inet.terminal;

import com.jscape.inet.terminal.events.CellEvent;
import com.jscape.inet.terminal.events.CommandEvent;
import com.jscape.inet.terminal.events.ExceptionEvent;

/**
 * Base interface for <code>Terminal</code> events handling.
 * "Observer" pattern [Gamma94].
 * "Visitor" pattern [Gamma94].
 */

public interface TerminalListener
        extends java.util.Observer {

    //----------------------------------------------------------------------------

    /**
     * Handles exception event.
     *
     * @param event <code>ExceptionEvent</code> object.
     */
    void onExceptionEvent(ExceptionEvent event);

    //----------------------------------------------------------------------------

    /**
     * Handles cell event.
     *
     * @param event <code>CellEvent</code> object.
     */
    void onCellEvent(CellEvent event);

    //----------------------------------------------------------------------------

    /**
     * Handles command event.
     *
     * @param event <code>CommandEvent</code> object
     */
    void onCommandEvent(CommandEvent event);

}