package chat; import java.net.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import chat.User; public class ClientWindow implements ActionListener { JFrame chatWindow; JPanel chatPanel; JTextArea chatText; JTextArea knownUsersPanel; JScrollPane textScroll; JPanel sendPanel; JTextField messageField; JButton sendButton; NetworkClient network; ClientWindow() { boolean connected = false; String username = ""; chatWindow = new JFrame("Système de clavardage 2.0.1"); chatPanel = new JPanel(new BorderLayout(2, 2)); chatText = new JTextArea(1,1); knownUsersPanel = new JTextArea(1,1); textScroll = new JScrollPane(chatText); sendPanel = new JPanel(new BorderLayout(1, 2)); messageField = new JTextField(); sendButton = new JButton("Envoyer"); network = new NetworkClient(chatText, knownUsersPanel); while(!connected && username != null) { username = JOptionPane.showInputDialog(chatWindow, "Enter a username", "POPUPOPOPUPUPOPOPUP", JOptionPane.PLAIN_MESSAGE); connected = network.connect(username); if(!connected && username != null) { if(username.equals("")) JOptionPane.showMessageDialog(chatWindow, "Please enter a username", "Error", JOptionPane.ERROR_MESSAGE); else JOptionPane.showMessageDialog(chatWindow, "This username is already taken", "Error", JOptionPane.ERROR_MESSAGE); } } if(username != null) { sendButton.addActionListener(this); messageField.addActionListener(this); chatWindow.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { network.disconnect(); } }); sendPanel.add(messageField); sendPanel.add(sendButton, BorderLayout.EAST); chatWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); chatText.setLineWrap(true); chatText.setEditable(false); knownUsersPanel.setLineWrap(false); knownUsersPanel.setEditable(false); chatPanel.add(textScroll); chatPanel.add(knownUsersPanel, BorderLayout.EAST); chatPanel.add(sendPanel, BorderLayout.SOUTH); chatWindow.getContentPane().add(chatPanel, BorderLayout.CENTER); //Display the window. chatWindow.pack(); chatWindow.setVisible(true); chatWindow.setSize(new Dimension(1024, 768)); } } public static void main (String [] args) { JFrame.setDefaultLookAndFeelDecorated(true); ClientWindow window = new ClientWindow(); } public void actionPerformed(ActionEvent event) { String message = messageField.getText(); if(message.compareTo("") != 0) { messageField.setText(""); network.send(message); } } }