133 lines
4.5 KiB
Java
133 lines
4.5 KiB
Java
package src.View;
|
||
|
||
import java.awt.BorderLayout;
|
||
import java.awt.Dimension;
|
||
import java.awt.GridLayout;
|
||
import java.awt.event.ActionEvent;
|
||
import java.awt.event.ActionListener;
|
||
import java.awt.event.WindowAdapter;
|
||
import java.awt.event.WindowEvent;
|
||
import java.io.IOException;
|
||
import java.util.concurrent.ExecutorService;
|
||
import java.util.concurrent.Executors;
|
||
|
||
import javax.swing.BorderFactory;
|
||
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;
|
||
|
||
import src.Controller.*;
|
||
import src.Protocoles.*;
|
||
|
||
|
||
/*
|
||
* Classe represenyant la fenetre d'accueil pour la connexion d'un utilisateur.
|
||
*/
|
||
public class View_Accueil implements ActionListener{
|
||
JFrame frame;
|
||
JPanel panel;
|
||
JTextField pseudofield;
|
||
JLabel Text;
|
||
JButton Connexion;
|
||
|
||
/*
|
||
* Constructeur d'une fenetre d'affichage pour la connexion d'un utilisateur.
|
||
* Cette fenetre sera munie d'un bouton de connexion et d'une zone de saisie de pseudo.
|
||
*/
|
||
public View_Accueil () {
|
||
//creer une instance JFrame
|
||
frame = new JFrame("ChatApp-AL-NM");
|
||
//sortir quand l’utilisateur ferme le frame
|
||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||
// fixer les dimensions de la fenetre
|
||
frame.setSize(new Dimension(120, 40));
|
||
//Creer le JPanel
|
||
panel = new JPanel(new GridLayout(3,1));
|
||
//Ajouter les elements
|
||
this.addWidgets();
|
||
//Set the default button.
|
||
frame.getRootPane().setDefaultButton(Connexion);
|
||
//Ajouter le panel a la window
|
||
frame.getContentPane().add(panel, BorderLayout.CENTER);
|
||
//L'utilisateur ne pourra pas aggrandir la fenetre
|
||
this.frame.setResizable(false);
|
||
//Afficher la fenetre
|
||
frame.pack();
|
||
frame.setVisible(true);
|
||
}
|
||
|
||
/**
|
||
* Creer et ajouter les outils de la fenetre
|
||
*/
|
||
private void addWidgets() {
|
||
// Créer Zone d'insertion de texte pour le pseudo
|
||
this.pseudofield = new JTextField(2);
|
||
// creation d'un label qui contiendra un txt au centre
|
||
this.Text = new JLabel("Bonjour, Entrez un nom d'utilisateur!", SwingConstants.CENTER);
|
||
//Ajout d'un bouton Connexion
|
||
this.Connexion = new JButton("Connexion");
|
||
//On associe au bouton Connexion des actions a realiser
|
||
this.Connexion.addActionListener(this);
|
||
// On ajouter les differents elements au panel
|
||
panel.add(pseudofield);
|
||
panel.add(Text);
|
||
panel.add(Connexion);
|
||
//ajouter un effet de bord transparent au composant Jlabel
|
||
Text.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
||
}
|
||
|
||
/*
|
||
* Definir des traitements en réponse à un clic sur le bouton connexion
|
||
* @param event Un clic sur le bouton connexion
|
||
*/
|
||
public void actionPerformed(ActionEvent event) {
|
||
// on recupere le texte entree dans la zone de saisie
|
||
String pseudo = pseudofield.getText();
|
||
// On crée un objet de type ChatApp
|
||
ChatApp app = new ChatApp(pseudo, 3000) ;
|
||
// on crée un thread qui va ecouter les connexions entrantes
|
||
ExecutorService execUDP = Executors.newFixedThreadPool(1000);
|
||
execUDP.submit(new RunnerEcouteUDP(app));
|
||
Boolean connexion = false ;
|
||
try {
|
||
// on tente une connexion avec ce pseudo
|
||
connexion = app.connexion();
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
// Dans les deux cas de figures (reussite ou echec) on affiche un pop-up pour expliquer la situation
|
||
if(connexion) {
|
||
// La connexion a reussi
|
||
JOptionPane.showMessageDialog(frame, "Bonjour " + pseudo) ;
|
||
frame.dispose();
|
||
// on lance une nouvelle fenetre de type View_Menu
|
||
View_Menu fenetreCourante= new View_Menu(app);
|
||
}
|
||
else {
|
||
// La connexion a echoue, il est possible de rentrer un nouveau pseudo
|
||
JOptionPane.showMessageDialog(frame, "Echec de Connexion , ce pseudo est deja pris !");
|
||
}
|
||
}
|
||
|
||
private static void createAndShowGUI() {
|
||
// Etre certain d'avoir une joli fenetre
|
||
JFrame.setDefaultLookAndFeelDecorated(true);
|
||
// On crée une fentre d'acceuil
|
||
View_Accueil fenetre = new View_Accueil();
|
||
}
|
||
|
||
public static void main(String[] args) {
|
||
//Schedule a job for the event-dispatching thread:
|
||
//creating and showing this application's GUI.
|
||
javax.swing.SwingUtilities.invokeLater(new Runnable() {
|
||
public void run() {
|
||
createAndShowGUI();
|
||
}
|
||
});
|
||
}
|
||
|
||
}
|