diff --git a/chatGit/.classpath b/chatGit/.classpath
index 6742989..ad95e25 100644
--- a/chatGit/.classpath
+++ b/chatGit/.classpath
@@ -11,7 +11,7 @@
-
+
diff --git a/chatGit/bin/controller/Agent.class b/chatGit/bin/controller/Agent.class
index 1b40841..ccd221c 100644
Binary files a/chatGit/bin/controller/Agent.class and b/chatGit/bin/controller/Agent.class differ
diff --git a/chatGit/bin/gui/FenetreChat$1.class b/chatGit/bin/gui/FenetreChat$1.class
index 628cefd..9c7a202 100644
Binary files a/chatGit/bin/gui/FenetreChat$1.class and b/chatGit/bin/gui/FenetreChat$1.class differ
diff --git a/chatGit/bin/gui/FenetreChat$2.class b/chatGit/bin/gui/FenetreChat$2.class
index f3e3295..fad6ecd 100644
Binary files a/chatGit/bin/gui/FenetreChat$2.class and b/chatGit/bin/gui/FenetreChat$2.class differ
diff --git a/chatGit/bin/gui/FenetreChat.class b/chatGit/bin/gui/FenetreChat.class
index 695691c..20f2310 100644
Binary files a/chatGit/bin/gui/FenetreChat.class and b/chatGit/bin/gui/FenetreChat.class differ
diff --git a/chatGit/bin/gui/FenetreMenu$3.class b/chatGit/bin/gui/FenetreMenu$3.class
index a22200e..eb88b59 100644
Binary files a/chatGit/bin/gui/FenetreMenu$3.class and b/chatGit/bin/gui/FenetreMenu$3.class differ
diff --git a/chatGit/bin/gui/FenetreMenu$4.class b/chatGit/bin/gui/FenetreMenu$4.class
index 2b7293d..ef5b0bb 100644
Binary files a/chatGit/bin/gui/FenetreMenu$4.class and b/chatGit/bin/gui/FenetreMenu$4.class differ
diff --git a/chatGit/bin/gui/FenetreMenu$5.class b/chatGit/bin/gui/FenetreMenu$5.class
index dea5fae..2f8fef0 100644
Binary files a/chatGit/bin/gui/FenetreMenu$5.class and b/chatGit/bin/gui/FenetreMenu$5.class differ
diff --git a/chatGit/bin/gui/FenetreMenu.class b/chatGit/bin/gui/FenetreMenu.class
index 6e26d3d..2dd51e3 100644
Binary files a/chatGit/bin/gui/FenetreMenu.class and b/chatGit/bin/gui/FenetreMenu.class differ
diff --git a/chatGit/bin/model/MessageChat.class b/chatGit/bin/model/MessageChat.class
index 703a25d..dd19d37 100644
Binary files a/chatGit/bin/model/MessageChat.class and b/chatGit/bin/model/MessageChat.class differ
diff --git a/chatGit/bin/network/TCPChat.class b/chatGit/bin/network/TCPChat.class
index 822d426..e383195 100644
Binary files a/chatGit/bin/network/TCPChat.class and b/chatGit/bin/network/TCPChat.class differ
diff --git a/chatGit/lib/java-json.jar b/chatGit/lib/java-json.jar
new file mode 100644
index 0000000..2f211e3
Binary files /dev/null and b/chatGit/lib/java-json.jar differ
diff --git a/chatGit/src/controller/Agent.java b/chatGit/src/controller/Agent.java
index 27cc05a..709b8c3 100644
--- a/chatGit/src/controller/Agent.java
+++ b/chatGit/src/controller/Agent.java
@@ -6,6 +6,7 @@ import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.IOException;
import java.net.InetAddress;
+import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
@@ -139,9 +140,9 @@ public class Agent implements PropertyChangeListener{
case 1 :
MessagePseudo msgPseudo = (MessagePseudo) msg;
boolean pseudoExist = Request.sendPseudo(msgPseudo.getPseudo(), "pseudoOK");
- if(pseudoExist) {
+ if(!pseudoExist) {
Contact newUser = new Contact(msgPseudo.getPseudo(), msgPseudo.getAddressSrc(), msgPseudo.getPortSrc());
- Request.sendUser(msgPseudo.getPseudo(), msgPseudo.getAddressSrc().toString(), Integer.toString(msgPseudo.getPortSrc()), "addUser");
+ //Request.sendUser(msgPseudo.getPseudo(), msgPseudo.getAddressSrc().toString(), Integer.toString(msgPseudo.getPortSrc()), "addUser");
//list.addContact(newUser);
if(FenetreMenu.ouvert) {
FenetreMenu.getCb().addItem(newUser.getPseudo());
@@ -154,7 +155,16 @@ public class Agent implements PropertyChangeListener{
if(!pseudoExiste){
Request.sendDeconnexion(Integer.toString(messageDeconnexion.getId()),messageDeconnexion.getPseudo(), "deconnexion");
FenetreMenu.getCb().removeItem(messageDeconnexion.getPseudo());
+
}
+
+
+
+ //fermeture de la fenetre chat le user et la personne qui se deconnecte
+ if(FenetreChat.isOuvert()&&FenetreChat.getDest().getPseudo().equals(messageDeconnexion.getPseudo())) {
+ FenetreChat.fermer();
+ }
+
case 3 :
MessagePseudo messageNewPseudo = (MessagePseudo) msg;
//Contact contact = list.findContact(messageNewPseudo.getPseudo());
@@ -276,7 +286,7 @@ public class Agent implements PropertyChangeListener{
boolean isNotOnList = Request.sendPseudo(destPseudo, "pseudoOK");
if(!isNotOnList) {
Contact dest = Request.getUser(destPseudo, "getUser");
- TCPChat connexionTCP = new TCPChat(user, destId);
+ TCPChat connexionTCP = new TCPChat(dest, destId);
listTCPDeg.add(connexionTCP);
connexionTCP.addPropertyChangeListener(this);
}
diff --git a/chatGit/src/gui/FenetreChat.java b/chatGit/src/gui/FenetreChat.java
index 3e1d853..f1a550e 100644
--- a/chatGit/src/gui/FenetreChat.java
+++ b/chatGit/src/gui/FenetreChat.java
@@ -7,6 +7,7 @@ import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.IOException;
+import java.net.InetAddress;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -28,11 +29,11 @@ import server.Request;
import java.awt.*;
-public class FenetreChat extends JFrame {
+public class FenetreChat extends JFrame implements PropertyChangeListener{
- JFrame frame;
+ static JFrame frame;
Agent agent;
- Contact dest; //destinataire du message
+ static Contact dest; //destinataire du message
Contact user; //utilisateur
WindowAdapter wa;
@@ -45,11 +46,22 @@ public class FenetreChat extends JFrame {
public FenetreChat(Agent agent, String userString) throws IOException {
FenetreChat.ouvert=true;
+
this.frame = new JFrame("Fenetre Chat avec "+ userString);
this.agent = agent;
this.user = agent.getUser();
//this.dest = agent.getList().findContact(userString);
this.dest = Request.getUser(userString, "getUser");
+
+ InetAddress adr = dest.getAddress();
+ TCPChat t=null;
+ for(TCPChat tcp : agent.getListeTCPChat()) {
+ if(tcp.getSocket().getInetAddress().equals(adr)) {
+ t=tcp;
+ }
+ }
+ t.addPropertyChangeListener(this);
+
this.frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.frame.setSize(new Dimension(400, 400));
@@ -228,9 +240,40 @@ public class FenetreChat extends JFrame {
}
}
+ public void propertyChange(PropertyChangeEvent evt) {
+ switch(evt.getPropertyName()){
+ case "deconnexion" :
+ System.out.println("Je suis dans deconnexion");
+ InetAddress adr = dest.getAddress();
+ TCPChat t=null;
+ for(TCPChat tcp : agent.getListeTCPChat()) {
+ if(tcp.getSocket().getInetAddress().equals(adr)) {
+ t=tcp;
+ }
+ }
+ try {
+ t.getSocket().close();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ agent.getListeTCPChat().remove(t);
+ break;
+
+ }
+ }
+
public static boolean isOuvert() {
return ouvert;
}
+ public static void fermer() {
+ frame.dispose();
+ }
+
+ public static Contact getDest() {
+ return dest;
+ }
+
}
diff --git a/chatGit/src/gui/FenetreMenu.java b/chatGit/src/gui/FenetreMenu.java
index be1b46a..9436ede 100644
--- a/chatGit/src/gui/FenetreMenu.java
+++ b/chatGit/src/gui/FenetreMenu.java
@@ -142,9 +142,10 @@ public class FenetreMenu {
JScrollPane scrollPane = new JScrollPane(ta);
String users = Request.actifs("actifs");
+ String users2 = users.replaceAll("\\s", "\n");
//String users = agent.getList().actifUsers();
Vector v = new Vector();
- for(String pseudo : users.split("\n")) {
+ for(String pseudo : users2.split("\n")) {
v.add(pseudo);
}
diff --git a/chatGit/src/model/MessageChat.java b/chatGit/src/model/MessageChat.java
index 01200f3..075fc6e 100644
--- a/chatGit/src/model/MessageChat.java
+++ b/chatGit/src/model/MessageChat.java
@@ -30,8 +30,9 @@ public class MessageChat extends Message{
}
public String getMessage() {
- return message;
+ return message+" "+dateToString();
}
+
public void setMessage(String message) {
this.message = message;
diff --git a/chatGit/src/network/TCPChat.java b/chatGit/src/network/TCPChat.java
index c74821f..41c4960 100644
--- a/chatGit/src/network/TCPChat.java
+++ b/chatGit/src/network/TCPChat.java
@@ -48,6 +48,7 @@ public class TCPChat extends Thread{
public void addPropertyChangeListener(PropertyChangeListener pcl) {
this.support.addPropertyChangeListener("Msg TCP Recu", pcl);
+ this.support.addPropertyChangeListener("deconnexion",pcl);
}
@@ -59,17 +60,19 @@ public class TCPChat extends Thread{
while(true) {
try {
- String input = in.readLine();
- MessageChat msgRecu = new MessageChat(this.socket.getInetAddress(), this.socket.getLocalAddress(), this.socket.getPort(), this.socket.getLocalPort(), 0, input);
- listeMessagesRecu.add(msgRecu);
- //System.out.println("fire msg tcp recu");
- this.support.firePropertyChange("Msg TCP Recu", true, false);
- //if (!msgRecu.getMessage().equals(null)) {
+ String input = in.readLine();
+ MessageChat msgRecu = new MessageChat(this.socket.getInetAddress(), this.socket.getLocalAddress(), this.socket.getPort(), this.socket.getLocalPort(), 0, input);
+ listeMessagesRecu.add(msgRecu);
+ //System.out.println("fire msg tcp recu");
+ this.support.firePropertyChange("Msg TCP Recu", true, false);
+ //if (!msgRecu.getMessage().equals(null)) {
//System.out.println("Message reçu : "+msgRecu.getMessage() );
- //}
+ //}
} catch (IOException e) {
+ this.support.firePropertyChange("deconnexion",true,false);
System.out.println("Création et read du in impossible");
- e.printStackTrace();
+ break;
+ //e.printStackTrace();
}
}