"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
|
//Remplacer par un singleton
|
||||||
private gestionnaireClavardage(int backlog) {
|
private gestionnaireClavardage(int backlog) {
|
||||||
GestionnaireNom gn = GestionnaireNom.instance();
|
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 = new Thread(this);
|
||||||
this.thread.start();
|
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() {
|
public ArrayList<SessionClavardage> getSessions() {
|
||||||
return this.sessions;
|
return this.sessions;
|
||||||
}
|
}
|
||||||
|
@ -105,6 +111,7 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
this.sessions.add(session);
|
this.sessions.add(session);
|
||||||
clientEnvoi.send(gn.getId()+"\n");
|
clientEnvoi.send(gn.getId()+"\n");
|
||||||
System.out.print("Fin de la configuration de " + 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
|
//Lancement de la fenêtre de session
|
||||||
EventQueue.invokeLater(new Runnable() {
|
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
|
//il existe une session entre les deux utilisateurs, mais la phase de configuration n'est pas terminée
|
||||||
this.sessions.get(i).setClientReception(client);
|
this.sessions.get(i).setClientReception(client);
|
||||||
System.out.print("Fin de la configuration de " + 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).");
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
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.
|
//check la disponibilité est asocie un nom à l'utilisateur si c'est bon, et prévient les autres.
|
||||||
public void nommer(String nom) {
|
public void nommer(String nom) {
|
||||||
setNom(nom);
|
setNom(nom);
|
||||||
GestionnaireListeUtilisateur.instance().envoie("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + "LocalHost");
|
GestionnaireListeUtilisateur.instance().envoie("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + GestionnaireNom.instance().getIp());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//debug
|
//debug
|
||||||
public void nommer2(String nom) {
|
public void nommer2(String nom) {
|
||||||
setNom(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 {
|
try {
|
||||||
String message = this.receive();
|
String message = this.receive();
|
||||||
setMessages(message);
|
setMessages(message);
|
||||||
|
if (message != null) {
|
||||||
System.out.print("Status : " + terminé + ", message reçu : " + message + "\n");
|
System.out.print("Status : " + terminé + ", message reçu : " + message + "\n");
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
//La connexion a été interrompue
|
||||||
|
this.terminé = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
catch (IOException e) {
|
catch (IOException e) {
|
||||||
this.terminé = true;
|
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) {
|
catch (Exception e) {
|
||||||
this.terminé = true;
|
this.terminé = true;
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.awt.BorderLayout;
|
||||||
import java.awt.EventQueue;
|
import java.awt.EventQueue;
|
||||||
|
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.border.EmptyBorder;
|
import javax.swing.border.EmptyBorder;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
|
@ -17,6 +18,7 @@ import java.util.List;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import javax.swing.JScrollBar;
|
import javax.swing.JScrollBar;
|
||||||
import clavardage.*;
|
import clavardage.*;
|
||||||
|
import nom.GestionnaireNom;
|
||||||
|
|
||||||
public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
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) {
|
public void propertyChange(PropertyChangeEvent evt) {
|
||||||
List<String> list = ((List<String>) evt.getNewValue());
|
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() {
|
private void sendMessage() {
|
||||||
String message = textField.getText();
|
String message = textField.getText();
|
||||||
|
if (!message.isEmpty() && this.session != null) {
|
||||||
textField.setText("");
|
textField.setText("");
|
||||||
historicField.setText(historicField.getText() + session.getIdSource() +": " + message + "\n");
|
historicField.setText(historicField.getText() + GestionnaireNom.instance().nomFromId(session.getIdSource()) +": " + message + "\n");
|
||||||
session.send(session.getIdSource() + ": " + message+"\n");
|
session.send(GestionnaireNom.instance().nomFromId(session.getIdSource()) + ": " + message+"\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,6 +89,7 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
||||||
|
|
||||||
setTitle("Discussion");
|
setTitle("Discussion");
|
||||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||||
|
|
||||||
setBounds(100, 100, 450, 300);
|
setBounds(100, 100, 450, 300);
|
||||||
contentPane = new JPanel();
|
contentPane = new JPanel();
|
||||||
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
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);
|
sendButton.setBounds(335, 207, 89, 23);
|
||||||
contentPane.add(sendButton);
|
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