Browse Source

JOption pane pcq Swing c'est dur + jolis <p>

Theau Giraud 3 years ago
parent
commit
844ddcdc4d
1 changed files with 92 additions and 78 deletions
  1. 92
    78
      Application/Clavardage/src/User.java

+ 92
- 78
Application/Clavardage/src/User.java View File

@@ -1,3 +1,8 @@
1
+import java.awt.BorderLayout;
2
+import java.awt.Component;
3
+import java.awt.GridLayout;
4
+import java.awt.event.ActionEvent;
5
+import java.awt.event.ActionListener;
1 6
 import java.io.BufferedReader;
2 7
 import java.io.IOException;
3 8
 import java.io.InputStreamReader;
@@ -6,7 +11,8 @@ import java.net.*;
6 11
 import java.text.DateFormat;
7 12
 import java.text.SimpleDateFormat;
8 13
 import java.util.Date;
9
-import java.util.Scanner;  // Import the Scanner class
14
+import javax.swing.JOptionPane;
15
+
10 16
 import java.util.ArrayList; // import the ArrayList class
11 17
 
12 18
 
@@ -30,22 +36,25 @@ public class User{
30 36
 	protected UserListeningThreadUDP threadListeningUDP; // UDP listening thread (pour répondre aux nouveaux utilisateurs)
31 37
 	protected UserListeningThreadTCP threadListeningTCP; // TCP listening thread (pour commencer une nouvelle conversation)
32 38
 
33
-	/* Constructor of User (local)
39
+	/**
40
+	 *  Constructor of User (local)
34 41
 	 * $parametres
35 42
 	 * 		* portUDPsend : int => le numéro de port pour envoyé ces informations lors d'un changements ou d'une nouvelle connexion
36 43
 	 * 		* portUDPlistening : int => le numéro de port pour recevoir les informations des nouveaux utilisateurs ou les changements
37 44
 	 * 		* portTCP : int => le numéro de port pour commencer une nouvelle conversation
38
-	 * 
39
-	 * $description : On récupère l'adresse de la machine, le numéro de port à utiliser, on demande un pseudo à l'utilisateur
45
+	 * <p>
46
+	 * 		On récupère l'adresse de la machine, le numéro de port à utiliser, on demande un pseudo à l'utilisateur
40 47
 	 * 		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)
48
+	 * </p>
41 49
 	 */
50
+	
42 51
 	public User(int portUDPsend,int portUDPlistening,int portTCP) throws IOException{
43 52
 		try
44 53
 		{
45 54
 			this.addIP = InetAddress.getLocalHost();
46 55
 		}
47 56
 		catch(UnknownHostException e) {
48
-			System.out.println("Could not find local address!");
57
+			JOptionPane.showMessageDialog(null ,"Could not find local address!");
49 58
 		}
50 59
 		
51 60
 		this.portUDPsend = portUDPsend;
@@ -55,18 +64,20 @@ public class User{
55 64
 		this.initPseudo();
56 65
 		
57 66
 		this.active();
58
-		
59 67
 	}
60
-	/*
68
+	
69
+	/**
61 70
 	 * Constructor of User (simulation of remote user)
62 71
 	 * $parametres
63 72
 	 * 		* portUDPsend : int => le numéro de port pour envoyé ces informations lors d'un changements ou d'une nouvelle connexion
64 73
 	 * 		* portUDPlistening : int => le numéro de port pour recevoir les informations des nouveaux utilisateurs ou les changements
65 74
 	 * 		* portTCP : int => le numéro de port pour commencer une nouvelle conversation
66 75
 	 * 		* pseudo : String => le pseudo avec lequel on initie l'utilisateur distant (! pas de vérification)
67
-	 * 
68
-	 * $description : On récupère l'adresse de la machine, le numéro de port à utiliser, on demande un pseudo à l'utilisateur
69
-	 * 		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)
76
+	 * <p>
77
+	 * 		On récupère l'adresse de la machine, le numéro de port à utiliser, on demande un pseudo à l'utilisateur
78
+	 * 		que l'on vérifie, une fois validé, l'utilisateur devient actif (Début de l'écoute UDP pour les pseudos 
79
+	 * 		et notification aux autres utilisateurs actifs)
80
+	 * </p>
70 81
 	 */
71 82
 	public User(int portUDPsend,int portUDPlistening, int portTCP,String pseudo) {
72 83
 		try
@@ -74,7 +85,7 @@ public class User{
74 85
 			this.addIP = InetAddress.getLocalHost();
75 86
 		}
76 87
 		catch(UnknownHostException e) {
77
-			System.out.println("Could not find local address!");
88
+			JOptionPane.showMessageDialog(null ,"Could not find local address!");
78 89
 		}
79 90
 		this.portUDPsend = portUDPsend;
80 91
 		this.portUDPlistening = portUDPlistening;
@@ -119,58 +130,51 @@ public class User{
119 130
 	public void setPortUDPsend(int portUDPsend) {
120 131
 		this.portUDPsend = portUDPsend;
121 132
 	}
122
-	/*setPseudo
123
-	* $description
124
-	* 		Demande à l'utilisateur de rentrer un pseudo et validation de ce dernier en demandant aux utilisateurs distants leurs informations
133
+	
134
+	/**
135
+	 * <p>
136
+	* 		Demande à l'utilisateur de rentrer un pseudo et valide de ce dernier en demandant aux 
137
+	* 		utilisateurs distants leurs informations.
125 138
 	* 		On regarde si le pseudo est bien différent de l'ancien
139
+	* </p>
126 140
 	*/
127
-	
128
-	
129
-	
130 141
 	private void setPseudo() throws IOException { 
131 142
 		    String oldPseudo = this.pseudo; //Saves the old one for comparison
132 143
 
133
-		    Scanner sc3 = new Scanner(System.in);  // Create a Scanner object
134
-		    System.out.println("Enter new nickname :");
135
-		    String tmpPseudo = sc3.nextLine();  // Read user input
144
+		    String tmpPseudo = JOptionPane.showInputDialog(null, "Enter nickname:");  // Read user input
136 145
 
137 146
 		    while(!(this.validatePseudo(tmpPseudo)) || tmpPseudo.equals(oldPseudo)) {
138
-		        System.out.println("Already exist, enter another nickname :");
139
-		        tmpPseudo = sc3.nextLine();  // Read user input
147
+		        tmpPseudo = JOptionPane.showInputDialog(null, "Already exist, enter another nickname :");  // Read user input
140 148
 		    }
141 149
 
142 150
 		    this.pseudo = tmpPseudo;
143 151
 		    //myObj.close();
144
-		    System.out.println("Your new nickname : " + tmpPseudo + " is valid !");
152
+		    JOptionPane.showMessageDialog(null ,"Your new nickname : " + tmpPseudo + " is valid !");
145 153
 
146 154
 		    notify_remote_user();
147 155
 		}
148
-		
149
-	    
150
-	/*** PROCEDURES ***/ 
151
-	
152 156
 
153
-	/*initPseudo
154
-	 * $description 
155
-	 * 		Demande à l'utilisateur de rentrer un pseudo et validation de ce dernier en demandant aux utilisateurs distants leurs informations
157
+	/**
158
+	 * <p>
159
+	 * 		Demande à l'utilisateur de rentrer un pseudo et valide de ce dernier en demandant aux 
160
+	 * 		utilisateurs distants leurs informations
161
+	 * </p>
156 162
 	 */
157 163
 	public void initPseudo() throws IOException {
158
-	    Scanner sc1 = new Scanner(System.in);  // Create a Scanner object
159
-	    System.out.println("Enter nickname :");
160
-	    String tmpPseudo = sc1.nextLine();  // Read user input
164
+	    String tmpPseudo = JOptionPane.showInputDialog(null, "Enter nickname:");  // Read user input
161 165
 
162 166
 		while(!(this.validatePseudo(tmpPseudo))) { // On demande aux autres utilisateurs de nous envoyer leurs informations et on test si le pseudo est déjà utilisé
163
-			System.out.println("Enter another nickname :");
164
-		    tmpPseudo = sc1.nextLine();  // Read user input
167
+		    tmpPseudo = JOptionPane.showInputDialog(null, "Enter another nickname:");  // Read user input
165 168
 		}
166 169
 		
167 170
 		this.pseudo = tmpPseudo;
168 171
 		//sc1.close();
169
-		System.out.println("Your nickname : " + tmpPseudo + " is valid !");
172
+		JOptionPane.showMessageDialog(null ,"Your nickname : " + tmpPseudo + " is valid !");
170 173
 	}
171 174
 	
172 175
 	public void TCPmessage(int index) throws IOException {
173 176
 		Socket link=null;
177
+		String s1;
174 178
 		try {
175 179
 			link=new Socket(this.userChatList.get(index).addIP,this.userChatList.get(index).portTCP);
176 180
 
@@ -194,7 +198,7 @@ public class User{
194 198
 			e.printStackTrace();
195 199
 		}
196 200
 		String input;
197
-		System.out.println(this.getPseudo()+" reçoit un message");
201
+		String s2 = (this.getPseudo()+" reçoit un message");
198 202
 		try {
199 203
 			while (!(input=in.readLine()).equals("end")) {
200 204
 				System.out.print("client_recoit:"+input);
@@ -217,14 +221,18 @@ public class User{
217 221
 	}
218 222
 	
219 223
 	
220
-	/* validatePseudo
221
-	 * $parametres
224
+	/**
225
+	 * <p>
222 226
 	 * 		*tmpPseudo : String => Le pseudo à valider
223
-	 * $description
224
-	 * 		On envoi en broadcast (pour l'instant envoi sur les ports de notre ordinateur) d'une demande d'information 
225
-	 * 		On attends les réponses pendant 5 secondes
227
+	 *</p><p>
228
+	 * 		Envoi en broadcast (pour l'instant envoi sur les ports de notre ordinateur) d'une demande d'information 
229
+	 *</p><p>
230
+	 * 		On attend les réponses pendant 5 secondes
231
+	 *</p><p>
226 232
 	 * 		On valide le pseudo en fonction des pseudos reçu
227
-	 * 		On en profites pour ajouter les utilisateurs répondant à notre liste d'utilisateur distant (RemoteUser)
233
+	 *</p><p>
234
+	 * 		On en profite pour ajouter les utilisateurs répondant à notre liste d'utilisateur distant (RemoteUser)
235
+	 * </p>
228 236
 	 */
229 237
 	public Boolean validatePseudo(String tmpPseudo) throws IOException {
230 238
 
@@ -279,10 +287,10 @@ public class User{
279 287
 				tabresponse = response.split(":");
280 288
 				
281 289
 				// Affichage de la réponse
282
-				System.out.println("Remote user n°"+nbReponse);
283
-				System.out.println("\tIP : "+tabresponse[0]);
284
-				System.out.println("\tn°Port : "+tabresponse[1]);
285
-				System.out.println("\tpseudo : "+tabresponse[2]);
290
+				System.out.println("Remote user n°"+nbReponse+
291
+													"\nIP : "+tabresponse[0]+
292
+													"\nn°Port : "+tabresponse[1]+
293
+													"\npseudo : "+tabresponse[2]);
286 294
 				
287 295
 				// Si reception on ajoute l'utilisateur à notre liste d'utilisateur distant
288 296
 				this.addRemoteUser(InetAddress.getByName(tabresponse[0].split("/")[1]),Integer.parseInt(tabresponse[1]),tabresponse[2]);
@@ -295,19 +303,22 @@ public class User{
295 303
 		dgramSocket.close();
296 304
 		
297 305
 		if(!valid) {
298
-			System.out.println("Nickname : "+tmpPseudo +" is taken !");
306
+			JOptionPane.showMessageDialog(null ,"Nickname : "+tmpPseudo +" is taken !");
299 307
 		}
300 308
 		
301 309
 		return valid;
302 310
 	}
303 311
 
304
-	/*addRemoteUser
305
-	 * $parametres
312
+	/**
313
+	 * <p>
306 314
 	 * 		*remoteUserIP : InetAddress => l'adresse IP de l'utilisateur distant
315
+	 * </p><p>
307 316
 	 * 		*remoteUserPortTCP : int => le numéro de port TCP d'écoute de l'utilisateur distant
317
+	 * </p><p>
308 318
 	 * 		*remoteUserPseudo : String => le pseudo de l'utilisateur distant
309
-	 * $description
310
-	 * 		On ajoute ou mise à jour l'utilisateur distant dans notre liste d'utilisateur distant
319
+	 * </p><p>
320
+	 * 		Ajout ou mise à jour l'utilisateur distant dans notre liste d'utilisateur distant
321
+	 * </p>
311 322
 	 */
312 323
 	public void addRemoteUser(InetAddress remoteUserIP, int remoteUserPortTCP,String remoteUserPseudo) {
313 324
 		RemoteUser tmpRemoteUser = new RemoteUser(remoteUserIP,remoteUserPortTCP,remoteUserPseudo);
@@ -322,9 +333,10 @@ public class User{
322 333
 		}
323 334
 	}
324 335
 	
325
-	/* notify_remote_user
326
-	 * $description
327
-	 * 		En utilisant le port UDP d'envoi, on envoi en broadcast les informations nous concernant
336
+	/**
337
+	 * <p>
338
+	 * 		En utilisant le port UDP d'envoi, on envoie en broadcast les informations nous concernant
339
+	 * </p>
328 340
 	 */
329 341
 	public void notify_remote_user() {
330 342
 		// Création du socket d'envoi d'information
@@ -364,11 +376,14 @@ public class User{
364 376
         dgramSocket.close();
365 377
 	}
366 378
 
367
-	/*active
368
-	 * $ description
369
-	 * 		On démarre un thread d'écoute UDP pour répondre au nouveaux utilisateurs
370
-	 * 		On démarre un thread d'écoute TCP pour commencer une conversation avec les utilisateurs actifs
371
-	 * 		On notifie les utilisateurs distants actifs de notre passage en mode actif (envoi de nos informations)
379
+	/**
380
+	 * <p>
381
+	 * 	On démarre un thread d'écoute UDP pour répondre au nouveaux utilisateurs,
382
+	 * </p><p>
383
+	 * 	On démarre un thread d'écoute TCP pour commencer une conversation avec les utilisateurs actifs,
384
+	 * </p><p>
385
+	 * 	On notifie les utilisateurs distants actifs de notre passage en mode actif (envoi de nos informations)
386
+	 * </p>
372 387
 	 */
373 388
 	private void active() {
374 389
 		this.threadListeningUDP = new UserListeningThreadUDP("UDP Listening thread",this);
@@ -382,47 +397,46 @@ public class User{
382 397
 		this.actif=true;
383 398
 	}
384 399
 	
385
-	/*printRemoteUserList
386
-	 * $descrition
387
-	 * 		Affichage de la liste d'utilisateur actif avec leurs index dans la liste
400
+	/**
401
+	 * <p>
402
+	 * Affichage de la liste d'utilisateurs actifs avec leurs index dans la liste
403
+	 * </p>
388 404
 	 */
389 405
 	public void printRemoteUserList() {
390
-        System.out.println("\nInternal list of active remote users:");
391
-
406
+		System.out.println("Internal list of active remote users:");
407
+		
392 408
         for(int i=0; i<this.remoteUserList.size(); i++) {
393
-            System.out.println("- ("+i+") Username: " + this.remoteUserList.get(i).getPseudo());
409
+        	System.out.println("- ("+i+") Username: " + this.remoteUserList.get(i).getPseudo());
394 410
         }
395 411
     }
396 412
 	
397
-	/*getOneActiveUser
398
-	 * $description
399
-	 * 		Laisse l'utilisateur choisir parmis la liste d'utilisateur actif celui avec lequel il souhaite échangé via un chat
413
+	/**
414
+	 * <p>
415
+	 * Laisse l'utilisateur choisir parmis la liste d'utilisateurs actifs celui avec lequel il souhaite échanger via un chat
416
+	 *</p> 
400 417
 	 */
401 418
 	public void getOneActiveUser() throws IOException {
402 419
 		this.printRemoteUserList();
403
-		Scanner sc2= new Scanner(System.in);
404
-        System.out.println("Please, enter index of one active user that you saw on the list to start a conversation with:");
405
-        int index=Integer.parseInt(sc2.nextLine());
420
+        int index=Integer.parseInt(JOptionPane.showInputDialog(null, "Please, enter index of one active user that you saw on the list to start a conversation with:"));
406 421
         
407 422
         if (index >= 0 && index<remoteUserList.size()) {
408 423
             if(userChatList.contains(remoteUserList.get(index))) {
409
-            	System.out.println("User "+remoteUserList.get(index).getPseudo()+" is already in chat with you");
424
+            	JOptionPane.showMessageDialog(null ,"User "+remoteUserList.get(index).getPseudo()+" is already in chat with you");
410 425
             }
411 426
             else {
412 427
                 userChatList.add(remoteUserList.get(index));
413
-            	System.out.println("New chat with "+remoteUserList.get(index).getPseudo());
428
+                JOptionPane.showMessageDialog(null ,"New chat with "+remoteUserList.get(index).getPseudo());
414 429
             }
415 430
         }
416 431
         else {
417
-        	System.out.println("Wrong index (no active at index number "+index+" )");
432
+        	JOptionPane.showMessageDialog(null ,"Wrong index (no active at index number "+index+" )");
418 433
         }
419 434
         
420 435
         this.TCPmessage(index);
421 436
         //sc2.close();
422 437
     }
423
-
438
+	
424 439
 	public static void main(String[] args) throws IOException, InterruptedException {
425
-		
426 440
 			// Création des utilisateurs
427 441
 			User usr2 = new User(12226,portUDPlistening_remoteUsr2,22222,"Mike");  // simulation d'un utilisateur distant n1
428 442
 			User usr3 = new User(12224,portUDPlistening_remoteUsr3,22223,"Alice"); // simulation d'un utilisateur distant n2
@@ -446,7 +460,7 @@ public class User{
446 460
 		    usr1.threadListeningTCP.close();
447 461
 		    usr2.threadListeningTCP.close();
448 462
 		    usr3.threadListeningTCP.close();
449
-			System.out.println("End");
463
+		    JOptionPane.showMessageDialog(null ,"End");
450 464
 
451 465
 		    
452 466
 	}

Loading…
Cancel
Save