// This file contains material supporting section 10.9 of the textbook:
// "Object Oriented Software Engineering" and is issued under the open-source
// license found at www.lloseng.com
/*
 * SimpleClient.java   2001-02-08
 *
 * Copyright (c) 2001 Robert Laganiere and Timothy C. Lethbridge.
 * All Rights Reserved.
 *
 */
package ocsftester;
import java.awt.List;
import java.awt.Color;
import ocsf.client.*;
/**
* The  SimpleClient  class is a simple subclass
* of the  ocsf.server.AbstractClient  class.
* It allows testing of the functionalities offered by the
* OCSF framework. The  java.awt.List  instance
* is used to display informative messages.
* This list is
* pink when the connection has been closed, red
* when an exception is received,
* and green when connected to the server.
*
* @author Dr. Robert Laganière
* @version February 2001
* @see ocsf.server.AbstractServer
*/
public class SimpleClient extends AbstractClient
{
  private List liste;
  public SimpleClient(List liste)
  {
    super("localhost",12345);
    this.liste = liste;
  }
  public SimpleClient(int port, List liste)
  {
    super("localhost",port);
    this.liste = liste;
  }
  public SimpleClient(String host, int port, List liste)
  {
    super(host,port);
    this.liste = liste;
  }
  /**
   * Hook method called after the connection has been closed.
   */
  protected void connectionClosed()
  {
    liste.add("**Connection closed**");
    liste.makeVisible(liste.getItemCount()-1);
    liste.setBackground(Color.pink);
  }
  /**
   * Hook method called each time an exception is thrown by the
   * client's thread that is waiting for messages from the server.
   *
   * @param exception the exception raised.
   */
  protected void connectionException(Exception exception)
  {
    liste.add("**Connection exception: " + exception);
    liste.makeVisible(liste.getItemCount()-1);
    liste.setBackground(Color.red);
  }
  /**
   * Hook method called after a connection has been established.
   */
  protected void connectionEstablished()
  {
    liste.add("--Connection established");
    liste.makeVisible(liste.getItemCount()-1);
    liste.setBackground(Color.green);
  }
  /**
   * Handles a message sent from the server to this client.
   *
   * @param msg   the message sent.
   */
  protected void handleMessageFromServer(Object msg)
  {
    liste.add(msg.toString());
    liste.makeVisible(liste.getItemCount()-1);
  }
}