From f6b86d7aea47332d1aeac2800dd88e0cbd979cab Mon Sep 17 00:00:00 2001 From: m-gues Date: Wed, 9 Dec 2020 11:04:43 +0100 Subject: [PATCH] =?UTF-8?q?d=C3=A9but=20branche=20r=C3=A9union?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- POO/src/main/ControleurConnexion.java | 101 ++++++++++++++++++++++++++ POO/src/main/VueConnexion.java | 79 ++++++++++++++++++++ 2 files changed, 180 insertions(+) create mode 100644 POO/src/main/ControleurConnexion.java create mode 100644 POO/src/main/VueConnexion.java diff --git a/POO/src/main/ControleurConnexion.java b/POO/src/main/ControleurConnexion.java new file mode 100644 index 0000000..af65f9d --- /dev/null +++ b/POO/src/main/ControleurConnexion.java @@ -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"); + } + } + +} diff --git a/POO/src/main/VueConnexion.java b/POO/src/main/VueConnexion.java new file mode 100644 index 0000000..ac9e150 --- /dev/null +++ b/POO/src/main/VueConnexion.java @@ -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(""); + } +}