/*
 * Message.java
 *
 * Author: Jonathan Boldiga
 * Date: July 22, 2002
 *
 * Description: This is the Message screen for the ORBChat moderator. This class uses SWING and
 *			    implements a method called addText() which grabs the client name and a message
 *				from the two text fields sends it to the client. To run ORBChat, execute
 *				the Client.java class file.
 *
 * Copyright (c) 1993-2001 IONA Technologies PLC.
 *  			All Rights Reserved
 *
*/

package Chat;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import org.omg.CORBA.*;

public class Message extends JFrame {

	JLabel userLabel;
	JLabel messageLabel;
	JTextField userText;
	JTextField messageText;
	JButton sendButton;
	ChatRemote cr;
	String user = "Moderator";

	public Message(ChatRemote cRemote){
		//Do frame stuff.
		super("Instant Message");
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				closeMe();
			}
		});

		//CORBA objects
		cr = cRemote;

		JPanel contentPane = new JPanel();
		contentPane.setLayout(new GridBagLayout());
		contentPane.setBackground(UIManager.getColor("control"));
		GridBagConstraints constraints = new GridBagConstraints();

		constraints.gridx = 0;
		constraints.gridy = GridBagConstraints.RELATIVE;
		constraints.gridwidth = 1;
		constraints.gridheight = 1;
		constraints.insets = new Insets(2, 2, 2, 2);
		constraints.anchor = GridBagConstraints.EAST;

		contentPane.add(userLabel = new JLabel("Client:", SwingConstants.RIGHT), constraints);
		userLabel.setDisplayedMnemonic('u');
		contentPane.add(messageLabel = new JLabel("Message:", SwingConstants.RIGHT), constraints);
		messageLabel.setDisplayedMnemonic('a');
		contentPane.add(sendButton = new JButton("Send"), constraints);
		sendButton.setMnemonic('e');

		constraints.gridx = 1;
		constraints.gridy = 0;
		constraints.weightx = 1.0;
		constraints.fill = GridBagConstraints.HORIZONTAL;
		constraints.anchor = GridBagConstraints.CENTER;

		contentPane.add(userText = new JTextField(20), constraints);
		userText.setFocusAccelerator('u');
		constraints.gridx = 1;
		constraints.gridy = GridBagConstraints.RELATIVE;
		contentPane.add(messageText = new JTextField(35), constraints);
		messageText.setFocusAccelerator('a');

		constraints.weightx = 0.0;
		constraints.fill = GridBagConstraints.NONE;

		setContentPane(contentPane);
		addText(userText, messageText);
	}

	public void addText(final JTextField clientTxt, final JTextField messageTxt){
		sendButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String dest = clientTxt.getText();
				clientTxt.setText("");
				String msg = messageTxt.getText();
				messageTxt.setText("");

				if(!(cr.available(dest))){
					cr.request(user, dest);
					ClientGUI.destination(dest);
					cr.send(msg, user, dest);
				}
				else { JOptionPane.showMessageDialog(new JFrame(), "Client " + dest + " is not available"); }
				closeMe();
			}
		});
	}

	public void closeMe(){
		setVisible(false);
		dispose();
	}
}