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(); } }