/*
    A basic extension of the java.applet.Applet class
 */

import java.awt.*;
import java.applet.*;
import java.net.*;
import java.io.*;

public class CafeClient extends Applet {
	void button1_Clicked(Event event) {
		CafeSpawnClient client=new CafeSpawnClient(textArea1,textField1);
		client.start();
	}

	void textField1_EnterHit(Event event) {
		CafeSpawnClient client=new CafeSpawnClient(textArea1,textField1);
		client.start();
	}


	public void init() {
		super.init();

		//{{INIT_CONTROLS
		setLayout(null);
		addNotify();
		resize(210,208);
		textArea1 = new java.awt.TextArea();
		textArea1.setEditable(false);
		textArea1.reshape(11,41,193,156);
		add(textArea1);
		button1 = new java.awt.Button("Send");
		button1.reshape(116,11,84,23);
		add(button1);
		textField1 = new java.awt.TextField();
		textField1.reshape(11,11,97,21);
		add(textField1);
		//}}
	}

	public boolean handleEvent(Event event) {
		if (event.target == textField1 && event.id == Event.ACTION_EVENT) {
			textField1_EnterHit(event);
		}
		if (event.target == button1 && event.id == Event.ACTION_EVENT) {
			button1_Clicked(event);
		}
		return super.handleEvent(event);
	}

	//{{DECLARE_CONTROLS
	java.awt.TextArea textArea1;
	java.awt.Button button1;
	java.awt.TextField textField1;
	//}}
}

class CafeSpawnClient extends Thread
{
 	java.awt.TextArea textArea1;
	java.awt.TextField textField1;

    CafeSpawnClient(TextArea myTextArea,
        TextField myTextField) {
        textArea1=myTextArea;
        textField1=myTextField;
    }

  public void run() {

    try {
		// Open a new socket connection
		Socket ClientSocket=new Socket("localhost",7523);

		// Start a new thread
	    CafeClientHandleConnection thread=
		  new CafeClientHandleConnection(ClientSocket,
			textArea1, textField1);
		thread.start();

      } catch (IOException e) {
		System.out.println(e);
      }
    }

}

class CafeClientHandleConnection extends Thread {

    Socket ConnectSocket;
	java.awt.TextArea textArea1;
	java.awt.TextField textField1;

    CafeClientHandleConnection(Socket socket,
        TextArea myTextArea, TextField myTextField) {
        ConnectSocket=socket;
        textArea1=myTextArea;
        textField1=myTextField;
    }

    public void run() {

    try {

      // Get the input stream from the socket and convert
      // it into a data input stream
      DataInputStream Input=
	new DataInputStream(ConnectSocket.getInputStream());

      // Get the output stream from the socket and convert
      // it into a print stream
      PrintStream Output=
	new PrintStream(ConnectSocket.getOutputStream());

      // Send the server the command
      Output.println(textField1.getText());

      // The output buffer
      String line;

      // Read the results from the server until the socket closes
      while((line=Input.readLine())!=null) {
	     textArea1.appendText(line + "\n");
      }

	  textField1.setText("");
    } catch (IOException e) {
      System.out.println(e);
    }

  }
}

