début branche réunion

This commit is contained in:
m-gues 2020-12-09 11:04:43 +01:00
parent 5fd722d95b
commit f6b86d7aea
2 changed files with 180 additions and 0 deletions

View file

@ -0,0 +1,101 @@
package main;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.UnknownHostException;
import communication.*;
public class ControleurConnexion implements ActionListener {
private enum Etat {DEBUT, ID_OK};
private VueConnexion vue;
private Etat etat;
private CommunicationUDP comUDP;
private String id;
private String pseudo;
public ControleurConnexion(VueConnexion vue) {
this.vue = vue;
this.etat = Etat.DEBUT;
this.id="";
//Pour les tests, changer pour un truc plus général quand on change CommunicationUDP
try {
this.comUDP = new CommunicationUDP(2208, 2209, new int[] {2906});
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
boolean inputOK = false;
if (this.etat == Etat.DEBUT) {
id=vue.getValeurTextField();
//Recherche dans la liste des utilisateurs enregistres, report sur inputOK
inputOK = id.contentEquals("idvalide");
if (inputOK) {
this.etat=Etat.ID_OK;
//Envoi broadcast du message "JeSuisActif" et, attente du retour de la liste des utilisateurs actifs
try {
comUDP.sendMessageConnecte();
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Thread.sleep(2);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//Mise en place de la demande du pseudo
vue.setTexteLabelInput("Veuillez entrer votre nom");
vue.resetValeurTextField();
inputOK=false;
}
else vue.setTexteLabelInput("Identifiant invalide, veuillez réessayer");
}
else {
pseudo=vue.getValeurTextField();
//Recherche dans la liste locale des utilisateurs connectes, report sur inputOK
inputOK = !Communication.containsUserFromPseudo(pseudo);
if (inputOK) {
//Reglage de l'utilisateur
try {
Utilisateur.setSelf(id, pseudo, "localhost");
} catch (UnknownHostException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
//Broadcast du pseudo
try {
comUDP.sendMessageInfoPseudo();
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//Creation de la vue principale
vue.setTexteLabelInput("Congrations you done it");
}
else vue.setTexteLabelInput("Ce nom est déjà utilisé, veuillez en choisir un autre");
}
}
}

View file

@ -0,0 +1,79 @@
package main;
//Importe les librairies
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class VueConnexion extends Vue {
//Penser à regler la taille de la fenetre et a la centrer !
//Elements vue
private JFrame frame;
private JPanel panel;
private JButton boutonValider;
private JTextField input;
private JLabel labelInput;
//Controleur
ControleurConnexion controle;
public VueConnexion() {
super();
controle = new ControleurConnexion(this);
//Creation fenetre
frame = new JFrame("Connexion");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 100);
frame.setLocationRelativeTo(null);
//Creation panel
panel = new JPanel(new GridLayout(3,1));
//Ajout elements
ajouterElements();
//Regle le bouton par défaut
frame.getRootPane().setDefaultButton(boutonValider);
//Ajoute le panel a la fenetre
frame.getContentPane().add(panel, BorderLayout.CENTER);
//Affiche la fenetre
frame.setVisible(true);
}
private void ajouterElements() {
//Cree les elements
input = new JTextField();
labelInput = new JLabel("Veuillez entrer votre identifiant unique");
boutonValider = new JButton("Valider");
//Le controleur guette les evenements du bouton
boutonValider.addActionListener(controle);
//Ajoute les elements
panel.add(labelInput);
panel.add(input);
panel.add(boutonValider);
labelInput.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
}
//Getters et setters
public void setTexteLabelInput(String text) {
labelInput.setText(text);
}
public String getValeurTextField() {
return input.getText();
}
public void resetValeurTextField() {
input.setText("");
}
}