Debogage GUI
This commit is contained in:
parent
f9fa379fc3
commit
508a1b89e8
28 changed files with 106 additions and 470 deletions
84
Implementation/.gitignore
vendored
84
Implementation/.gitignore
vendored
|
@ -1 +1,85 @@
|
||||||
|
##############################
|
||||||
|
## Java
|
||||||
|
##############################
|
||||||
|
.mtj.tmp/
|
||||||
|
*.class
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
||||||
|
*.nar
|
||||||
|
hs_err_pid*
|
||||||
|
|
||||||
|
##############################
|
||||||
|
## Maven
|
||||||
|
##############################
|
||||||
|
target/
|
||||||
|
pom.xml.tag
|
||||||
|
pom.xml.releaseBackup
|
||||||
|
pom.xml.versionsBackup
|
||||||
|
pom.xml.next
|
||||||
|
pom.xml.bak
|
||||||
|
release.properties
|
||||||
|
dependency-reduced-pom.xml
|
||||||
|
buildNumber.properties
|
||||||
|
.mvn/timing.properties
|
||||||
|
.mvn/wrapper/maven-wrapper.jar
|
||||||
|
|
||||||
|
##############################
|
||||||
|
## Gradle
|
||||||
|
##############################
|
||||||
/bin/
|
/bin/
|
||||||
|
bin/
|
||||||
|
build/
|
||||||
|
.gradle
|
||||||
|
.gradletasknamecache
|
||||||
|
gradle-app.setting
|
||||||
|
!gradle-wrapper.jar
|
||||||
|
|
||||||
|
##############################
|
||||||
|
## IntelliJ
|
||||||
|
##############################
|
||||||
|
out/
|
||||||
|
.idea/
|
||||||
|
.idea_modules/
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
##############################
|
||||||
|
## Eclipse
|
||||||
|
##############################
|
||||||
|
.settings/
|
||||||
|
bin/
|
||||||
|
tmp/
|
||||||
|
.metadata
|
||||||
|
.classpath
|
||||||
|
.project
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.swp
|
||||||
|
*~.nib
|
||||||
|
local.properties
|
||||||
|
.loadpath
|
||||||
|
.factorypath
|
||||||
|
|
||||||
|
##############################
|
||||||
|
## NetBeans
|
||||||
|
##############################
|
||||||
|
nbproject/private/
|
||||||
|
build/
|
||||||
|
nbbuild/
|
||||||
|
dist/
|
||||||
|
nbdist/
|
||||||
|
nbactions.xml
|
||||||
|
nb-configuration.xml
|
||||||
|
|
||||||
|
##############################
|
||||||
|
## Visual Studio Code
|
||||||
|
##############################
|
||||||
|
.vscode/
|
||||||
|
.code-workspace
|
||||||
|
|
||||||
|
##############################
|
||||||
|
## OS X
|
||||||
|
##############################
|
||||||
|
.DS_Store
|
||||||
|
|
Binary file not shown.
|
@ -16,6 +16,7 @@ import java.util.Objects;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import src.Protocoles.*;
|
import src.Protocoles.*;
|
||||||
|
import src.Model.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -23,7 +24,7 @@ import src.Protocoles.*;
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class ChatApp {
|
public class ChatApp extends Thread{
|
||||||
|
|
||||||
/* Liste des utilisateurs actifs */
|
/* Liste des utilisateurs actifs */
|
||||||
private ListUtilisateurs actifUsers ;
|
private ListUtilisateurs actifUsers ;
|
||||||
|
@ -196,7 +197,6 @@ public class ChatApp {
|
||||||
return h ;
|
return h ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String[] args) throws IOException {
|
public static void main (String[] args) throws IOException {
|
||||||
ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ;
|
ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ;
|
||||||
System.out.println("On lance le chatapp");
|
System.out.println("On lance le chatapp");
|
||||||
|
|
Binary file not shown.
|
@ -1,63 +0,0 @@
|
||||||
package src.Controller;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Classe permettant de sauvegarder les échanges entre deux utilisateurs
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
public class Historique {
|
|
||||||
private Utilisateur User1;
|
|
||||||
private Utilisateur User2;
|
|
||||||
// Liste conservant les differents échanges
|
|
||||||
private ArrayList<MessageHorodate> HistoriqueHorodate ;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Constructeur : un historique sauvegarde les echanges entre
|
|
||||||
* User1 et User2
|
|
||||||
* @param User1 - un utilisateur
|
|
||||||
* @param User2 - un second utilisateur
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
public Historique(Utilisateur User1, Utilisateur User2) {
|
|
||||||
this.User1 = User1;
|
|
||||||
this.User2 = User2;
|
|
||||||
this.HistoriqueHorodate = new ArrayList<MessageHorodate>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* On ajoute un message échangé dans la liste 'HistoriqueHorodate'
|
|
||||||
*
|
|
||||||
* @param mh - le message horodate échangé
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
public void addMessage(MessageHorodate mh) {
|
|
||||||
this.HistoriqueHorodate.add(mh);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* getter pour recuperer le second utilisateur
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
public Utilisateur getUser2() {
|
|
||||||
return User2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void afficher10derniers() {
|
|
||||||
System.out.println("Demarrage de l'affichage partiel de l'historique");
|
|
||||||
System.out.println("Il y a actuellement " + HistoriqueHorodate.size() +" elements dans l'historique");
|
|
||||||
int n =10;
|
|
||||||
if(HistoriqueHorodate.size()<=10) {
|
|
||||||
n = HistoriqueHorodate.size();
|
|
||||||
}
|
|
||||||
for(int i = 0; i<n;i++) {
|
|
||||||
String exp = HistoriqueHorodate.get(i).getSource().getPseudo();
|
|
||||||
String payload = HistoriqueHorodate.get(i).getMessage();
|
|
||||||
System.out.println(exp+" : "+payload);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,125 +0,0 @@
|
||||||
package src.Controller;
|
|
||||||
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
public class ListUtilisateurs {
|
|
||||||
|
|
||||||
private ArrayList<Utilisateur> actifUsers ;
|
|
||||||
|
|
||||||
public ListUtilisateurs() {
|
|
||||||
this.actifUsers = new ArrayList<Utilisateur>() ;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Ajouter des utilisateurs actifs dans l'attribut liste 'actifUsers'
|
|
||||||
*
|
|
||||||
* @param u on va rajouter cet utilisateur dans la liste
|
|
||||||
*/
|
|
||||||
public void addList(Utilisateur u) {
|
|
||||||
if((verifierUnicite(u.getPseudo()))) {
|
|
||||||
this.actifUsers.add(u);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Recuperer un utilisateur à partir de son pseudo
|
|
||||||
*
|
|
||||||
* @param pseudo Pseudo de l'utilisateur que l'on souhaite retrouver
|
|
||||||
*/
|
|
||||||
public Utilisateur getPseudoList(String pseudo) {
|
|
||||||
for(Utilisateur elem: this.actifUsers)
|
|
||||||
{
|
|
||||||
if (elem.getPseudo().equals(pseudo) ) {
|
|
||||||
return elem ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null ;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Utilisateur getIPList(InetAddress ip) throws Exception {
|
|
||||||
for(Utilisateur elem: this.actifUsers)
|
|
||||||
{
|
|
||||||
if (elem.getIp().equals(ip) ) {
|
|
||||||
return elem ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw new Exception("No such user with this IP address") ;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Supprimer de la liste des utilisateurs actifs 'actifUsers' un certain utilisateur
|
|
||||||
*
|
|
||||||
* @param u on va supprimer cet utilisateur dans la liste
|
|
||||||
*/
|
|
||||||
public void supprimerList(Utilisateur u) {
|
|
||||||
Boolean Sup = false ;
|
|
||||||
for(Utilisateur elem: this.actifUsers)
|
|
||||||
{
|
|
||||||
if (elem.equals(u) ) {
|
|
||||||
this.actifUsers.remove(elem);
|
|
||||||
Sup = true ;
|
|
||||||
this.afficherListeUtilisateurs();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!Sup) {
|
|
||||||
System.out.println("Tentative de retirer un objet non contenu dans la liste");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Modifie le nom d'un utilisateur dans la liste des utilisateurs actifs 'actifUsers'
|
|
||||||
*
|
|
||||||
* @param ancien correspond au pseudo remplacer
|
|
||||||
* @param nouveau correspond au nouveau pseudo
|
|
||||||
*/
|
|
||||||
public void modifierList(String ancien , String nouveau) {
|
|
||||||
for(Utilisateur elem: this.actifUsers)
|
|
||||||
{
|
|
||||||
if (ancien.equals( elem.getPseudo() ) ) {
|
|
||||||
this.actifUsers.remove(elem);
|
|
||||||
elem.setPseudo(nouveau);;
|
|
||||||
this.addList(elem);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.afficherListeUtilisateurs();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean appartient(Utilisateur u) {
|
|
||||||
return this.actifUsers.contains(u);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verifie qu'aucun autre utilisateur ne possède le même pseudo
|
|
||||||
*
|
|
||||||
* @param u on va supprimer cet utilisateur dans la liste
|
|
||||||
*/
|
|
||||||
public Boolean verifierUnicite(String pseudo) {
|
|
||||||
for(Utilisateur elem: this.actifUsers)
|
|
||||||
{
|
|
||||||
if (pseudo.equals( elem.getPseudo() ) ) {
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Méthode affichant la liste des utilisateurs actifs
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public String afficherListeUtilisateurs() {
|
|
||||||
System.out.println ("Liste des utilisateurs actifs : ");
|
|
||||||
String Utilisateur = "" ;
|
|
||||||
for(Utilisateur elem: this.actifUsers)
|
|
||||||
{
|
|
||||||
System.out.println (elem.toString());
|
|
||||||
Utilisateur += (elem + "\n");
|
|
||||||
}
|
|
||||||
return Utilisateur;
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,142 +0,0 @@
|
||||||
package src.Controller;
|
|
||||||
|
|
||||||
import java.text.DateFormat;
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.io.Serializable;
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Classe representant les messages envoyés en TCP lors d'une session de clavardage
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
public class MessageHorodate implements Serializable {
|
|
||||||
private Utilisateur destinataire ;
|
|
||||||
private Utilisateur source ;
|
|
||||||
private Date dateHorodatage ;
|
|
||||||
private int type; // 0 = debut de la communication, 1= message de communication, 2 = fin de la communicataion
|
|
||||||
private String Message;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Constructeur , le message va etre horodate
|
|
||||||
* @param destinataire - Destinataire du message
|
|
||||||
* @param source - Source du message
|
|
||||||
* @param Message - Message envoye
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
public MessageHorodate(Utilisateur destinataire, Utilisateur source, String Message, int type) {
|
|
||||||
this.setDestinataire(destinataire) ;
|
|
||||||
this.setSource(source) ;
|
|
||||||
this.setMessage(Message) ;
|
|
||||||
this.setDateHorodatage(new Date());
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDate(Date d) {
|
|
||||||
this.setDateHorodatage(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* permet de creer une representation string du message
|
|
||||||
* @return Les differents attributs de la classe sous forme de string
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
String Msg = "";
|
|
||||||
Msg += ("Destinataire::" + this.getDestinataire() + "\n") ;
|
|
||||||
Msg += ("Source::" + this.getSource()+ "\n") ;
|
|
||||||
Msg += ("Type::"+ this.type+ "\n");
|
|
||||||
Msg += ("Date::" + this.dateToString() + "\n") ;
|
|
||||||
Msg += ("Message::" + this.getMessage() + "\n" );
|
|
||||||
return Msg ;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* permet de creer une representation string de la date d'horodatage
|
|
||||||
* @return La date d'horodatage du message en format yyyy/MM/dd HH:mm:ss
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
public String dateToString() {
|
|
||||||
DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
|
||||||
return format.format(this.getDateHorodatage());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Permet de re creer un message horodate a partir d'un string
|
|
||||||
* @return un messageHorodate
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
public static MessageHorodate stringToMessageHorodate(String s) {
|
|
||||||
|
|
||||||
String mots[] = s.split("\n");
|
|
||||||
Utilisateur destinataire = Utilisateur.stringToUtilisateur(mots[0].split("::")[1]);
|
|
||||||
Utilisateur source = Utilisateur.stringToUtilisateur(mots[1].split("::")[1]);
|
|
||||||
int type = Integer.parseInt(mots[2].split("::")[1]);
|
|
||||||
DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
|
||||||
Date date = new Date();
|
|
||||||
/*try {
|
|
||||||
date = format.parse(mots[3].split("::")[1]);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}*/
|
|
||||||
String payload = "";
|
|
||||||
for(int i=4; i< mots.length; i++) {
|
|
||||||
if(mots[i].startsWith("Message::")) {
|
|
||||||
mots[i]=mots[i].split("::")[1];
|
|
||||||
}
|
|
||||||
payload += mots[i]+"\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageHorodate mh = new MessageHorodate(destinataire, source, payload, type);
|
|
||||||
//mh.setDate(date);
|
|
||||||
|
|
||||||
return mh ;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Utilisateur getSource() {
|
|
||||||
return source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSource(Utilisateur source) {
|
|
||||||
this.source = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Utilisateur getDestinataire() {
|
|
||||||
return destinataire;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDestinataire(Utilisateur destinataire) {
|
|
||||||
this.destinataire = destinataire;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage() {
|
|
||||||
return Message;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMessage(String message) {
|
|
||||||
Message = message;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setType(int Type) {
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDateHorodatage() {
|
|
||||||
return dateHorodatage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDateHorodatage(Date dateHorodatage) {
|
|
||||||
this.dateHorodatage = dateHorodatage;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,51 +0,0 @@
|
||||||
package src.Controller;
|
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import javax.swing.ImageIcon;
|
|
||||||
import javax.swing.JButton;
|
|
||||||
import javax.swing.JFrame;
|
|
||||||
import javax.swing.JLabel;
|
|
||||||
import javax.swing.JOptionPane;
|
|
||||||
import javax.swing.JPanel;
|
|
||||||
import javax.swing.JTextField;
|
|
||||||
import javax.swing.SwingConstants;
|
|
||||||
|
|
||||||
public class Modification_Pseudo extends JPanel{
|
|
||||||
ChatApp app;
|
|
||||||
public Modification_Pseudo(String name, ChatApp app) {
|
|
||||||
this.app = app ;
|
|
||||||
JLabel Text = new JLabel("Entrez un nouveau nom d'utilisateur!", SwingConstants.CENTER);
|
|
||||||
JTextField pseudofield = new JTextField(2); // Zone d'insertion de texte
|
|
||||||
JButton home = new JButton(new ImageIcon("/Users/auriane/Desktop/ChatApp-AL-NM/Implementation/src/images/Home.png"));
|
|
||||||
//Ajout d'un bouton Valider
|
|
||||||
JButton Valider = new JButton("Valider");
|
|
||||||
this.getRootPane().setDefaultButton(Valider);
|
|
||||||
//Listen to events from the Valider button.
|
|
||||||
Valider.addActionListener(new ActionListener(){
|
|
||||||
public void actionPerformed(ActionEvent event) {
|
|
||||||
String nouveau = pseudofield.getText();
|
|
||||||
try {
|
|
||||||
Boolean resultat = app.modifierPseudo(nouveau);
|
|
||||||
if(resultat) {
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//JOptionPane.showMessageDialog(this, "Echec de modification de pseudo, " + nouveau +" deja pris", JOptionPane.WARNING_MESSAGE);
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.add(home);
|
|
||||||
this.add(Text);
|
|
||||||
this.add(BorderLayout.CENTER,pseudofield);
|
|
||||||
this.add(BorderLayout.SOUTH,Valider);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,77 +0,0 @@
|
||||||
package src.Controller;
|
|
||||||
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.UnknownHostException;
|
|
||||||
|
|
||||||
public class Utilisateur extends Object {
|
|
||||||
|
|
||||||
private String pseudo ;
|
|
||||||
private Integer port;
|
|
||||||
private InetAddress ip ;
|
|
||||||
private String id ;
|
|
||||||
|
|
||||||
public Utilisateur(String pseudo,Integer port, InetAddress ip ){
|
|
||||||
this.setPseudo(pseudo) ;
|
|
||||||
this.setPort(port);
|
|
||||||
this.ip = ip ;
|
|
||||||
this.id = ip.getHostName() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPseudo() {
|
|
||||||
return pseudo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPseudo(String pseudo) {
|
|
||||||
this.pseudo = pseudo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getPort() {
|
|
||||||
return port;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPort(Integer port) {
|
|
||||||
this.port = port;
|
|
||||||
}
|
|
||||||
|
|
||||||
public InetAddress getIp() {
|
|
||||||
return ip;
|
|
||||||
}
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString(){
|
|
||||||
String s = "";
|
|
||||||
s+="pseudo " + this.pseudo + " | ";
|
|
||||||
s+="port " + (this.port).toString() + " | ";
|
|
||||||
s+="ip " + (this.ip).toString() + " | ";
|
|
||||||
s+="id " + (this.id).toString() + " | ";
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Utilisateur stringToUtilisateur(String s) {
|
|
||||||
String name = "";
|
|
||||||
Integer port = 0;
|
|
||||||
String ip = "" ;
|
|
||||||
String id = "";
|
|
||||||
String mots[] = s.split(" ");
|
|
||||||
name=mots[1];
|
|
||||||
port=Integer.parseInt(mots[4]);
|
|
||||||
ip=mots[7];
|
|
||||||
id=mots[10];
|
|
||||||
Utilisateur user = null;
|
|
||||||
try {
|
|
||||||
user = new Utilisateur(name,port,InetAddress.getByName(ip.split("/")[1]));
|
|
||||||
} catch (UnknownHostException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return user;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Boolean equals(Utilisateur u) {
|
|
||||||
return this.getId().equals( u.getId() ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Binary file not shown.
|
@ -10,13 +10,14 @@ import java.util.ArrayList;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
public class RunnerEcouteTCP implements Runnable {
|
public class RunnerEcouteTCP extends Thread {
|
||||||
public ChatApp app ;
|
public ChatApp app ;
|
||||||
private PropertyChangeSupport pcs;
|
private PropertyChangeSupport pcs;
|
||||||
private ArrayList<SessionClavardage> ListeSessions = new ArrayList<SessionClavardage>();
|
private ArrayList<SessionClavardage> ListeSessions = new ArrayList<SessionClavardage>();
|
||||||
public RunnerEcouteTCP(ChatApp app) {
|
public RunnerEcouteTCP(ChatApp app) {
|
||||||
this.app = app ;
|
this.app = app ;
|
||||||
this.pcs = new PropertyChangeSupport(this);
|
this.pcs = new PropertyChangeSupport(this);
|
||||||
|
this.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -11,8 +11,8 @@ import java.net.Socket;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import src.Controller.ChatApp;
|
import src.Controller.ChatApp;
|
||||||
import src.Controller.MessageHorodate;
|
import src.Model.MessageHorodate;
|
||||||
import src.Controller.Utilisateur;
|
import src.Model.Utilisateur;
|
||||||
|
|
||||||
public class SessionClavardage extends Thread {
|
public class SessionClavardage extends Thread {
|
||||||
private Socket link;
|
private Socket link;
|
||||||
|
@ -47,7 +47,7 @@ public class SessionClavardage extends Thread {
|
||||||
this.setIn(new ObjectInputStream(s.getInputStream()));
|
this.setIn(new ObjectInputStream(s.getInputStream()));
|
||||||
this.setLink(s);
|
this.setLink(s);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
this.derniersMsg = new ArrayList<MessageHorodate>();
|
this.derniersMsg = new ArrayList<MessageHorodate>();
|
||||||
|
|
Binary file not shown.
|
@ -14,6 +14,7 @@ import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
import src.Controller.*;
|
import src.Controller.*;
|
||||||
|
import src.Model.*;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
Binary file not shown.
|
@ -16,6 +16,7 @@ import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
import src.Controller.*;
|
import src.Controller.*;
|
||||||
|
import src.Model.*;
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Classe representant les echanges UDP entre utilisateurs.
|
* Classe representant les echanges UDP entre utilisateurs.
|
||||||
|
|
|
@ -21,6 +21,8 @@ import javax.swing.JTextArea;
|
||||||
import javax.swing.SwingConstants;
|
import javax.swing.SwingConstants;
|
||||||
|
|
||||||
import src.Controller.*;
|
import src.Controller.*;
|
||||||
|
import src.Model.MessageHorodate;
|
||||||
|
import src.Model.Utilisateur;
|
||||||
import src.Protocoles.SessionClavardage;
|
import src.Protocoles.SessionClavardage;
|
||||||
|
|
||||||
import java.awt.GridBagLayout;
|
import java.awt.GridBagLayout;
|
||||||
|
|
|
@ -94,9 +94,9 @@ public class View_Accueil implements ActionListener{
|
||||||
ExecutorService execUDP = Executors.newFixedThreadPool(1000);
|
ExecutorService execUDP = Executors.newFixedThreadPool(1000);
|
||||||
System.out.println("Lancement de UDP");
|
System.out.println("Lancement de UDP");
|
||||||
execUDP.submit(new RunnerEcouteUDP(app));
|
execUDP.submit(new RunnerEcouteUDP(app));
|
||||||
ExecutorService execTCP = Executors.newFixedThreadPool(1000);
|
/*ExecutorService execTCP = Executors.newFixedThreadPool(1000);
|
||||||
System.out.println("On lance l'écoute TCP de chatapp");
|
System.out.println("On lance l'écoute TCP de chatapp");
|
||||||
execTCP.submit(new RunnerEcouteTCP(app));
|
execTCP.submit(new RunnerEcouteTCP(app));*/
|
||||||
Boolean connexion = false ;
|
Boolean connexion = false ;
|
||||||
try {
|
try {
|
||||||
// on tente une connexion avec ce pseudo
|
// on tente une connexion avec ce pseudo
|
||||||
|
|
|
@ -19,6 +19,7 @@ import javax.swing.JTextArea;
|
||||||
import javax.swing.SwingConstants;
|
import javax.swing.SwingConstants;
|
||||||
|
|
||||||
import src.Controller.*;
|
import src.Controller.*;
|
||||||
|
import src.Model.Utilisateur;
|
||||||
|
|
||||||
import java.awt.GridBagLayout;
|
import java.awt.GridBagLayout;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
|
|
|
@ -37,6 +37,7 @@ import javax.swing.JTextField;
|
||||||
import javax.swing.SwingConstants;
|
import javax.swing.SwingConstants;
|
||||||
|
|
||||||
import src.Controller.*;
|
import src.Controller.*;
|
||||||
|
import src.Model.Utilisateur;
|
||||||
import src.Protocoles.RunnerEcouteTCP;
|
import src.Protocoles.RunnerEcouteTCP;
|
||||||
import src.Protocoles.SessionClavardage;
|
import src.Protocoles.SessionClavardage;
|
||||||
|
|
||||||
|
@ -56,7 +57,7 @@ public class View_Menu implements PropertyChangeListener{
|
||||||
JLabel jlabel;
|
JLabel jlabel;
|
||||||
JLabel Txt;
|
JLabel Txt;
|
||||||
WindowAdapter wa ;
|
WindowAdapter wa ;
|
||||||
|
private RunnerEcouteTCP ecouteTCP;
|
||||||
/*
|
/*
|
||||||
* Constructeur d'une fenetre de menu apres la connexion d'un utilisateur.
|
* Constructeur d'une fenetre de menu apres la connexion d'un utilisateur.
|
||||||
* @param app Un objet de type ChatApp pour posseder toutes les informations de l'utilisateur
|
* @param app Un objet de type ChatApp pour posseder toutes les informations de l'utilisateur
|
||||||
|
@ -96,10 +97,11 @@ public class View_Menu implements PropertyChangeListener{
|
||||||
// Afficher la fenetre
|
// Afficher la fenetre
|
||||||
frame.pack();
|
frame.pack();
|
||||||
frame.setVisible(true);
|
frame.setVisible(true);
|
||||||
RunnerEcouteTCP.addPropertyChangeListener(this);
|
ecouteTCP.start();
|
||||||
|
this.ecouteTCP.addPropertyChangeListener(this); //TODO Problem
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Methode static creant un pop-up demandant a l'utilisateur si il souhaite vraiment quitter.
|
* Methode static creant un pop-up demandant a l'utilisateur si il souhaite vraiment quitter.
|
||||||
|
@ -264,7 +266,9 @@ public class View_Menu implements PropertyChangeListener{
|
||||||
public void propertyChange(PropertyChangeEvent pce) {
|
public void propertyChange(PropertyChangeEvent pce) {
|
||||||
switch(pce.getPropertyName()) {
|
switch(pce.getPropertyName()) {
|
||||||
case "NouvelleSession":
|
case "NouvelleSession":
|
||||||
|
SessionClavardage session = this.ecouteTCP.getSessionClavardage();
|
||||||
|
session.addPropertyChangeListener(this);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue