COO-farina-vincent/src/chat/ClientWindow.java
2021-01-12 18:08:16 +01:00

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);
}
}
}