114 lines
3.1 KiB
Java
114 lines
3.1 KiB
Java
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);
|
|
}
|
|
}
|
|
}
|