"Ajout: fermeture des sessions de clavardage."
This commit is contained in:
parent
9959697a46
commit
a60d2e2222
4 changed files with 59 additions and 11 deletions
|
@ -30,7 +30,8 @@ public class gestionnaireClavardage implements Runnable{
|
|||
//Remplacer par un singleton
|
||||
private gestionnaireClavardage(int backlog) {
|
||||
GestionnaireNom gn = GestionnaireNom.instance();
|
||||
this.requestServer = new TCPServer("localhost", backlog, PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.getId()));
|
||||
System.out.print(gn.getIp());
|
||||
this.requestServer = new TCPServer(gn.getIp(), backlog, PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.getId()));
|
||||
this.thread = new Thread(this);
|
||||
this.thread.start();
|
||||
}
|
||||
|
@ -56,6 +57,11 @@ public class gestionnaireClavardage implements Runnable{
|
|||
});
|
||||
}
|
||||
|
||||
public void deleteSession(SessionClavardage session) {
|
||||
session.stop();
|
||||
this.sessions.remove(session);
|
||||
}
|
||||
|
||||
public ArrayList<SessionClavardage> getSessions() {
|
||||
return this.sessions;
|
||||
}
|
||||
|
@ -105,6 +111,7 @@ public class gestionnaireClavardage implements Runnable{
|
|||
this.sessions.add(session);
|
||||
clientEnvoi.send(gn.getId()+"\n");
|
||||
System.out.print("Fin de la configuration de " + gn.getId() + "\n");
|
||||
System.out.println("Il y a actuellement " + sessions.size() + " session(s) ouverte(s).");
|
||||
|
||||
//Lancement de la fenêtre de session
|
||||
EventQueue.invokeLater(new Runnable() {
|
||||
|
@ -123,6 +130,7 @@ public class gestionnaireClavardage implements Runnable{
|
|||
//il existe une session entre les deux utilisateurs, mais la phase de configuration n'est pas terminée
|
||||
this.sessions.get(i).setClientReception(client);
|
||||
System.out.print("Fin de la configuration de " + gn.getId() + "\n");
|
||||
System.out.println("Il y a actuellement " + sessions.size() + " session(s) ouverte(s).");
|
||||
}
|
||||
|
||||
else {
|
||||
|
|
|
@ -130,14 +130,14 @@ public class GestionnaireNom{
|
|||
//check la disponibilité est asocie un nom à l'utilisateur si c'est bon, et prévient les autres.
|
||||
public void nommer(String nom) {
|
||||
setNom(nom);
|
||||
GestionnaireListeUtilisateur.instance().envoie("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + "LocalHost");
|
||||
GestionnaireListeUtilisateur.instance().envoie("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + GestionnaireNom.instance().getIp());
|
||||
|
||||
}
|
||||
|
||||
//debug
|
||||
public void nommer2(String nom) {
|
||||
setNom(nom);
|
||||
GestionnaireListeUtilisateur.instance().envoie2("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + "LocalHost");
|
||||
GestionnaireListeUtilisateur.instance().envoie2("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + GestionnaireNom.instance().getIp());
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -57,11 +57,17 @@ public class TCPServerThread extends TCPClient implements Runnable{
|
|||
try {
|
||||
String message = this.receive();
|
||||
setMessages(message);
|
||||
System.out.print("Status : " + terminé + ", message reçu : " + message + "\n");
|
||||
if (message != null) {
|
||||
System.out.print("Status : " + terminé + ", message reçu : " + message + "\n");
|
||||
}
|
||||
else {
|
||||
//La connexion a été interrompue
|
||||
this.terminé = true;
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
this.terminé = true;
|
||||
System.out.print("Connection sur le port " + this.port + " interrompue par " + this.adresseCible +"\n");
|
||||
System.out.print("Connection sur le port " + this.port + " vers " + this.adresseCible +" interrompue.\n");
|
||||
}
|
||||
catch (Exception e) {
|
||||
this.terminé = true;
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.awt.BorderLayout;
|
|||
import java.awt.EventQueue;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.JScrollPane;
|
||||
|
@ -17,6 +18,7 @@ import java.util.List;
|
|||
import java.awt.event.ActionEvent;
|
||||
import javax.swing.JScrollBar;
|
||||
import clavardage.*;
|
||||
import nom.GestionnaireNom;
|
||||
|
||||
public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
||||
|
||||
|
@ -43,17 +45,37 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
|||
*/
|
||||
|
||||
|
||||
public void setSession(SessionClavardage session) {
|
||||
this.session = session;
|
||||
}
|
||||
|
||||
public void propertyChange(PropertyChangeEvent evt) {
|
||||
List<String> list = ((List<String>) evt.getNewValue());
|
||||
historicField.setText(historicField.getText() + (list.get(list.size()-1)) + "\n");
|
||||
|
||||
String message = list.get(list.size()-1);
|
||||
if (message != null) {
|
||||
historicField.setText(historicField.getText() + message + "\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
historicField.setText(historicField.getText() + GestionnaireNom.instance().nomFromId(session.getIdDestination()) + " s'est déconnecté(e).\n");
|
||||
this.finDeSession(0);
|
||||
}
|
||||
}
|
||||
|
||||
public void finDeSession(int i) {
|
||||
System.out.println(i);
|
||||
gestionnaireClavardage.instance().deleteSession(session);
|
||||
this.setSession(null);
|
||||
System.out.println(this.session);
|
||||
}
|
||||
|
||||
private void sendMessage() {
|
||||
String message = textField.getText();
|
||||
textField.setText("");
|
||||
historicField.setText(historicField.getText() + session.getIdSource() +": " + message + "\n");
|
||||
session.send(session.getIdSource() + ": " + message+"\n");
|
||||
if (!message.isEmpty() && this.session != null) {
|
||||
textField.setText("");
|
||||
historicField.setText(historicField.getText() + GestionnaireNom.instance().nomFromId(session.getIdSource()) +": " + message + "\n");
|
||||
session.send(GestionnaireNom.instance().nomFromId(session.getIdSource()) + ": " + message+"\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -66,7 +88,8 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
|||
this.session.getClientReception().addPropertyChangeListener(this);;
|
||||
|
||||
setTitle("Discussion");
|
||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
|
||||
setBounds(100, 100, 450, 300);
|
||||
contentPane = new JPanel();
|
||||
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
|
@ -101,5 +124,16 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
|||
});
|
||||
sendButton.setBounds(335, 207, 89, 23);
|
||||
contentPane.add(sendButton);
|
||||
|
||||
this.addWindowListener(new java.awt.event.WindowAdapter() {
|
||||
@Override
|
||||
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
|
||||
DiscussionUI window = (DiscussionUI) windowEvent.getSource();
|
||||
if (window.session != null) {
|
||||
System.out.println(window.session);
|
||||
window.finDeSession(1);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue