<html>
<xmp>
/**
 * Title: GPS Simulator
 * Copyright: Copyright (c) 2002
 * Company:   University of Oregon Computer Science Dept.
 *
 * @author Jason Prideaux
 * @version 1.0
 *
 */

package chat;

import transport.*;
import transport.protocol.*;

import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import java.io.*;



public class ChatUI extends Frame implements SocketReceiverListener{




	Image background;


	Label sen = new Label("Message to send:");
	Label rcv = new Label("Received messages:");
	TextField rcvfld = new TextField();
	TextField sendfld = new TextField();
	Button send = new Button("Send");;


	int port;



	//Constructs a UI which is used by 'widget' and displays info on 'user'
	public ChatUI(int port){

		super("SimChat");
		setSize(240,300);

		this.port = port;

		setLocation(0,0);
		setLayout(null);
		//parent = widget;

		this.addWindowListener(new WindowAdapter(){
	  		public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});



		Toolkit tool = Toolkit.getDefaultToolkit();   //gotta love tool
		try{
			byte[] b = new byte[26000];
			FileInputStream fis = new FileInputStream("files/images/ipaq.jpg");
			fis.read(b);

			background = tool.createImage(b);
		}catch(Exception e){}


		Panel panel = new Panel(null);
		panel.setBounds( 0, 23, 240, 280);


		if(true){
			setSize(370,603);
			panel.setBounds( 63, 161, 240, 280);
		}


		send.addActionListener(new java.awt.event.ActionListener() {
		  	public void actionPerformed(ActionEvent e) {
				send_actionPerformed(e);
		  	}
		});


		rcvfld.setBounds( 30,75,200,20 );
		rcv.setBounds( 10,50,220,20 );

		sen.setBounds( 10,120,220,20 );
		sendfld.setBounds( 30,145,200,20 );
		send.setBounds( 140,200,80,20 );


		panel.add(rcv);
		panel.add(rcvfld);
		panel.add(sen);
		panel.add(sendfld);
		panel.add(send);

		add(panel);



		SocketReceiver sr = new SocketReceiver(this, port);
		sr.start();

		this.setVisible(true);


	} //Constructor



   	/* ====================================================================== */
	/** This
	 *
	 *  @param  g
	 *
	 */
   	public void paint(Graphics g) {

		// paint any space not covered
     	super.paint(g);

       	//int compWidth = getWidth();
     	//int compHeight = getHeight();
      	//int imageWidth, imageHeight;

      	// If we have a valid width and height for the
       	// background image, draw it.

         g.drawImage(background,0,23,this);



   	} //method: paintComponent


	public void send_actionPerformed(ActionEvent e){


		Message msg = new MulticastMessage(sendfld.getText(), port,3 );

		SocketSender ss = new SocketSender(msg);
		ss.start();



	}


	public void incomingMessage(Message msg){


		if( msg instanceof MulticastMessage ){

			rcvfld.setText( ((MulticastMessage)msg).getMessage() );

		}

	}


} //class:
</xmp>
</html>
