package client;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.rmi.RemoteException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ChatUI {
private Commande unregister;
private Commande postMessage;
private ChatUser u = null;
private String title = "Logiciel de discussion en ligne";
private JFrame window = new JFrame(this.title);
private JTextArea txtOutput = new JTextArea();
private JTextField txtMessage = new JTextField();
private JButton btnSend = new JButton("Envoyer");
public ChatUI(ChatUser u,Commande post, Commande unregister) {
this.postMessage = post;
this.unregister = unregister;
JPanel panel = (JPanel) this.window.getContentPane();
JScrollPane sclPane = new JScrollPane(txtOutput);
panel.add(sclPane, BorderLayout.CENTER);
JPanel southPanel = new JPanel(new BorderLayout());
southPanel.add(this.txtMessage, BorderLayout.CENTER);
southPanel.add(this.btnSend, BorderLayout.EAST);
panel.add(southPanel, BorderLayout.SOUTH);
// Gestion des évènements
window.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
window_windowClosing(e);
}
});
btnSend.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
btnSend_actionPerformed(e);
}
});
txtMessage.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent event) {
if (event.getKeyChar() == '\n')
btnSend_actionPerformed(null);
}
});
// Initialisation des attributs
this.txtOutput.setBackground(new Color(220, 220, 220));
this.txtOutput.setEditable(false);
this.window.setSize(500, 400);
this.window.setVisible(true);
this.txtMessage.requestFocus();
}
public void window_windowClosing(WindowEvent e) {
try {
unregister.execute();
} catch (Exception exc) {
System.err.println("Desinscription impossible");
}
System.exit(-1);
}
protected String message = null;
public void btnSend_actionPerformed(ActionEvent e) {
try {
message = this.txtMessage.getText();
postMessage.execute();
} catch (Exception exception) {
System.err.println("Envoie message impossible");
}
this.txtMessage.setText("");
this.txtMessage.requestFocus();
}
public void displayMessage(String message){
this.txtOutput.append(message + "\n");
this.txtOutput.moveCaretPosition(this.txtOutput.getText().length());
}
public String requestPseudo() {
String pseudo = JOptionPane.showInputDialog(
this.window, "Entrez votre pseudo : ",
this.title, JOptionPane.OK_OPTION
);
if (pseudo == null) System.exit(0);
return pseudo;
}
public String getMessage() {
return message;
}
}