Date: Wed, 9 Dec 2020 09:42:54 +0100
Subject: [PATCH] JOption pane pcq Swing c'est dur + jolis
---
Application/Clavardage/src/User.java | 170 +++++++++++++++------------
1 file changed, 92 insertions(+), 78 deletions(-)
diff --git a/Application/Clavardage/src/User.java b/Application/Clavardage/src/User.java
index 54df13f..412451a 100644
--- a/Application/Clavardage/src/User.java
+++ b/Application/Clavardage/src/User.java
@@ -1,3 +1,8 @@
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -6,7 +11,8 @@ import java.net.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import java.util.Scanner; // Import the Scanner class
+import javax.swing.JOptionPane;
+
import java.util.ArrayList; // import the ArrayList class
@@ -30,22 +36,25 @@ public class User{
protected UserListeningThreadUDP threadListeningUDP; // UDP listening thread (pour répondre aux nouveaux utilisateurs)
protected UserListeningThreadTCP threadListeningTCP; // TCP listening thread (pour commencer une nouvelle conversation)
- /* Constructor of User (local)
+ /**
+ * Constructor of User (local)
* $parametres
* * portUDPsend : int => le numéro de port pour envoyé ces informations lors d'un changements ou d'une nouvelle connexion
* * portUDPlistening : int => le numéro de port pour recevoir les informations des nouveaux utilisateurs ou les changements
* * portTCP : int => le numéro de port pour commencer une nouvelle conversation
- *
- * $description : On récupère l'adresse de la machine, le numéro de port à utiliser, on demande un pseudo à l'utilisateur
+ *
+ * On récupère l'adresse de la machine, le numéro de port à utiliser, on demande un pseudo à l'utilisateur
* que l'on vérifie, une fois validé, l'utilisateur devient actif (Début de l'écoute UDP pour les pseudos et notification aux autres utilisateurs actifs)
+ *
*/
+
public User(int portUDPsend,int portUDPlistening,int portTCP) throws IOException{
try
{
this.addIP = InetAddress.getLocalHost();
}
catch(UnknownHostException e) {
- System.out.println("Could not find local address!");
+ JOptionPane.showMessageDialog(null ,"Could not find local address!");
}
this.portUDPsend = portUDPsend;
@@ -55,18 +64,20 @@ public class User{
this.initPseudo();
this.active();
-
}
- /*
+
+ /**
* Constructor of User (simulation of remote user)
* $parametres
* * portUDPsend : int => le numéro de port pour envoyé ces informations lors d'un changements ou d'une nouvelle connexion
* * portUDPlistening : int => le numéro de port pour recevoir les informations des nouveaux utilisateurs ou les changements
* * portTCP : int => le numéro de port pour commencer une nouvelle conversation
* * pseudo : String => le pseudo avec lequel on initie l'utilisateur distant (! pas de vérification)
- *
- * $description : On récupère l'adresse de la machine, le numéro de port à utiliser, on demande un pseudo à l'utilisateur
- * que l'on vérifie, une fois validé, l'utilisateur devient actif (Début de l'écoute UDP pour les pseudos et notification aux autres utilisateurs actifs)
+ *
+ * On récupère l'adresse de la machine, le numéro de port à utiliser, on demande un pseudo à l'utilisateur
+ * que l'on vérifie, une fois validé, l'utilisateur devient actif (Début de l'écoute UDP pour les pseudos
+ * et notification aux autres utilisateurs actifs)
+ *
*/
public User(int portUDPsend,int portUDPlistening, int portTCP,String pseudo) {
try
@@ -74,7 +85,7 @@ public class User{
this.addIP = InetAddress.getLocalHost();
}
catch(UnknownHostException e) {
- System.out.println("Could not find local address!");
+ JOptionPane.showMessageDialog(null ,"Could not find local address!");
}
this.portUDPsend = portUDPsend;
this.portUDPlistening = portUDPlistening;
@@ -119,58 +130,51 @@ public class User{
public void setPortUDPsend(int portUDPsend) {
this.portUDPsend = portUDPsend;
}
- /*setPseudo
- * $description
- * Demande à l'utilisateur de rentrer un pseudo et validation de ce dernier en demandant aux utilisateurs distants leurs informations
+
+ /**
+ *
+ * Demande à l'utilisateur de rentrer un pseudo et valide de ce dernier en demandant aux
+ * utilisateurs distants leurs informations.
* On regarde si le pseudo est bien différent de l'ancien
+ *
*/
-
-
-
private void setPseudo() throws IOException {
String oldPseudo = this.pseudo; //Saves the old one for comparison
- Scanner sc3 = new Scanner(System.in); // Create a Scanner object
- System.out.println("Enter new nickname :");
- String tmpPseudo = sc3.nextLine(); // Read user input
+ String tmpPseudo = JOptionPane.showInputDialog(null, "Enter nickname:"); // Read user input
while(!(this.validatePseudo(tmpPseudo)) || tmpPseudo.equals(oldPseudo)) {
- System.out.println("Already exist, enter another nickname :");
- tmpPseudo = sc3.nextLine(); // Read user input
+ tmpPseudo = JOptionPane.showInputDialog(null, "Already exist, enter another nickname :"); // Read user input
}
this.pseudo = tmpPseudo;
//myObj.close();
- System.out.println("Your new nickname : " + tmpPseudo + " is valid !");
+ JOptionPane.showMessageDialog(null ,"Your new nickname : " + tmpPseudo + " is valid !");
notify_remote_user();
}
-
-
- /*** PROCEDURES ***/
-
- /*initPseudo
- * $description
- * Demande à l'utilisateur de rentrer un pseudo et validation de ce dernier en demandant aux utilisateurs distants leurs informations
+ /**
+ *
+ * Demande à l'utilisateur de rentrer un pseudo et valide de ce dernier en demandant aux
+ * utilisateurs distants leurs informations
+ *
*/
public void initPseudo() throws IOException {
- Scanner sc1 = new Scanner(System.in); // Create a Scanner object
- System.out.println("Enter nickname :");
- String tmpPseudo = sc1.nextLine(); // Read user input
+ String tmpPseudo = JOptionPane.showInputDialog(null, "Enter nickname:"); // Read user input
while(!(this.validatePseudo(tmpPseudo))) { // On demande aux autres utilisateurs de nous envoyer leurs informations et on test si le pseudo est déjà utilisé
- System.out.println("Enter another nickname :");
- tmpPseudo = sc1.nextLine(); // Read user input
+ tmpPseudo = JOptionPane.showInputDialog(null, "Enter another nickname:"); // Read user input
}
this.pseudo = tmpPseudo;
//sc1.close();
- System.out.println("Your nickname : " + tmpPseudo + " is valid !");
+ JOptionPane.showMessageDialog(null ,"Your nickname : " + tmpPseudo + " is valid !");
}
public void TCPmessage(int index) throws IOException {
Socket link=null;
+ String s1;
try {
link=new Socket(this.userChatList.get(index).addIP,this.userChatList.get(index).portTCP);
@@ -194,7 +198,7 @@ public class User{
e.printStackTrace();
}
String input;
- System.out.println(this.getPseudo()+" reçoit un message");
+ String s2 = (this.getPseudo()+" reçoit un message");
try {
while (!(input=in.readLine()).equals("end")) {
System.out.print("client_recoit:"+input);
@@ -217,14 +221,18 @@ public class User{
}
- /* validatePseudo
- * $parametres
+ /**
+ *
* *tmpPseudo : String => Le pseudo à valider
- * $description
- * On envoi en broadcast (pour l'instant envoi sur les ports de notre ordinateur) d'une demande d'information
- * On attends les réponses pendant 5 secondes
+ *
+ * Envoi en broadcast (pour l'instant envoi sur les ports de notre ordinateur) d'une demande d'information
+ *
+ * On attend les réponses pendant 5 secondes
+ *
* On valide le pseudo en fonction des pseudos reçu
- * On en profites pour ajouter les utilisateurs répondant à notre liste d'utilisateur distant (RemoteUser)
+ *
+ * On en profite pour ajouter les utilisateurs répondant à notre liste d'utilisateur distant (RemoteUser)
+ *
*/
public Boolean validatePseudo(String tmpPseudo) throws IOException {
@@ -279,10 +287,10 @@ public class User{
tabresponse = response.split(":");
// Affichage de la réponse
- System.out.println("Remote user n°"+nbReponse);
- System.out.println("\tIP : "+tabresponse[0]);
- System.out.println("\tn°Port : "+tabresponse[1]);
- System.out.println("\tpseudo : "+tabresponse[2]);
+ System.out.println("Remote user n°"+nbReponse+
+ "\nIP : "+tabresponse[0]+
+ "\nn°Port : "+tabresponse[1]+
+ "\npseudo : "+tabresponse[2]);
// Si reception on ajoute l'utilisateur à notre liste d'utilisateur distant
this.addRemoteUser(InetAddress.getByName(tabresponse[0].split("/")[1]),Integer.parseInt(tabresponse[1]),tabresponse[2]);
@@ -295,19 +303,22 @@ public class User{
dgramSocket.close();
if(!valid) {
- System.out.println("Nickname : "+tmpPseudo +" is taken !");
+ JOptionPane.showMessageDialog(null ,"Nickname : "+tmpPseudo +" is taken !");
}
return valid;
}
- /*addRemoteUser
- * $parametres
+ /**
+ *
* *remoteUserIP : InetAddress => l'adresse IP de l'utilisateur distant
+ *
* *remoteUserPortTCP : int => le numéro de port TCP d'écoute de l'utilisateur distant
+ *
* *remoteUserPseudo : String => le pseudo de l'utilisateur distant
- * $description
- * On ajoute ou mise à jour l'utilisateur distant dans notre liste d'utilisateur distant
+ *
+ * Ajout ou mise à jour l'utilisateur distant dans notre liste d'utilisateur distant
+ *
*/
public void addRemoteUser(InetAddress remoteUserIP, int remoteUserPortTCP,String remoteUserPseudo) {
RemoteUser tmpRemoteUser = new RemoteUser(remoteUserIP,remoteUserPortTCP,remoteUserPseudo);
@@ -322,9 +333,10 @@ public class User{
}
}
- /* notify_remote_user
- * $description
- * En utilisant le port UDP d'envoi, on envoi en broadcast les informations nous concernant
+ /**
+ *
+ * En utilisant le port UDP d'envoi, on envoie en broadcast les informations nous concernant
+ *
*/
public void notify_remote_user() {
// Création du socket d'envoi d'information
@@ -364,11 +376,14 @@ public class User{
dgramSocket.close();
}
- /*active
- * $ description
- * On démarre un thread d'écoute UDP pour répondre au nouveaux utilisateurs
- * On démarre un thread d'écoute TCP pour commencer une conversation avec les utilisateurs actifs
- * On notifie les utilisateurs distants actifs de notre passage en mode actif (envoi de nos informations)
+ /**
+ *
+ * On démarre un thread d'écoute UDP pour répondre au nouveaux utilisateurs,
+ *
+ * On démarre un thread d'écoute TCP pour commencer une conversation avec les utilisateurs actifs,
+ *
+ * On notifie les utilisateurs distants actifs de notre passage en mode actif (envoi de nos informations)
+ *
*/
private void active() {
this.threadListeningUDP = new UserListeningThreadUDP("UDP Listening thread",this);
@@ -382,47 +397,46 @@ public class User{
this.actif=true;
}
- /*printRemoteUserList
- * $descrition
- * Affichage de la liste d'utilisateur actif avec leurs index dans la liste
+ /**
+ *
+ * Affichage de la liste d'utilisateurs actifs avec leurs index dans la liste
+ *
*/
public void printRemoteUserList() {
- System.out.println("\nInternal list of active remote users:");
-
+ System.out.println("Internal list of active remote users:");
+
for(int i=0; i
+ * Laisse l'utilisateur choisir parmis la liste d'utilisateurs actifs celui avec lequel il souhaite échanger via un chat
+ *