import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
 * This class is responsible for building a user interface
 *
 */
public class ClientGUI extends JFrame implements ActionListener{
	private JTextField inputField;
	private JButton sendButton;
	private JTextArea outputField;
	private PrintWriter out;//stream for sending data to server
	
	public ClientGUI(String title, PrintWriter out){
		super("Client "+title);
		this.out=out;
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().add(buildOutputPanel(), BorderLayout.CENTER);
		this.getContentPane().add(buildInputPanel(), BorderLayout.SOUTH);
		this.pack();
		this.setVisible(true);
	}
	private JScrollPane buildOutputPanel(){
		this.outputField=new JTextArea(24, 32);
		this.outputField.setLineWrap(true);
		this.outputField.setEditable(false);
		JScrollPane pane=new JScrollPane(this.outputField);
		pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		return pane;
	}
	private JPanel buildInputPanel(){
		JPanel inputPanel=new JPanel(new BorderLayout());
		this.inputField=new JTextField();
		this.sendButton=new JButton("SEND");
		this.sendButton.addActionListener(this);
		inputPanel.add(this.inputField, BorderLayout.CENTER);
		inputPanel.add(this.sendButton, BorderLayout.EAST);
		return inputPanel;		
	}
	/**
	 * Action listener for SEND button
	 */
	public void actionPerformed(ActionEvent event) {
		if(event.getSource()==sendButton){
			String text=inputField.getText();
			outputField.append("<< "+text+"\n");
			inputField.setText("");
			if(out!=null){
				out.println(text);
				out.flush();
			}
		}
		
	}
	public void appendReceivedMessage(String msg){
		if(outputField!=null){
			outputField.append(">> "+msg+"\n");
		}
	}

}

