From 761fff9101584b536e64e552ad01c0e1bed741ba Mon Sep 17 00:00:00 2001 From: basti Date: Fri, 11 Dec 2020 11:38:09 +0100 Subject: [PATCH] =?UTF-8?q?am=C3=A9loration=20user=20friendly=20+=20liste?= =?UTF-8?q?=20dynamic=20(a=20ameliorer)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projet_POO/src/defaut/Main.java | 2 +- Projet_POO/src/liste/TraitementCmdListe.java | 15 ++- Projet_POO/src/nom/GestionnaireNom.java | 21 ++-- Projet_POO/src/ui/ListUI.java | 107 ++++++++++++++----- Projet_POO/src/ui/Login_RegisterUI.java | 34 +++--- Projet_POO/src/ui/NomUI.java | 9 +- Projet_POO/src/ui/ToutUI.java | 19 ++++ 7 files changed, 137 insertions(+), 70 deletions(-) diff --git a/Projet_POO/src/defaut/Main.java b/Projet_POO/src/defaut/Main.java index 1ef3a93..b922a23 100644 --- a/Projet_POO/src/defaut/Main.java +++ b/Projet_POO/src/defaut/Main.java @@ -11,7 +11,7 @@ public class Main { //on lance le server d'écoute de cmd - GestionnaireListeUtilisateur.instance().ecoute2(2002); //enlever le 2, debug //TODO PORT = 2001 à 2009 + GestionnaireListeUtilisateur.instance().ecoute2(2001); //enlever le 2, debug //TODO PORT = 2001 à 2009 //on crée manuellement des utilisateurs GestionnaireListeUtilisateur.instance().envoie2("add$$$77$$$Moi$$$LocalHost"); diff --git a/Projet_POO/src/liste/TraitementCmdListe.java b/Projet_POO/src/liste/TraitementCmdListe.java index ce4e0d2..d6e0a7f 100644 --- a/Projet_POO/src/liste/TraitementCmdListe.java +++ b/Projet_POO/src/liste/TraitementCmdListe.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.concurrent.Semaphore; import nom.GestionnaireNom; +import ui.ListUI; public class TraitementCmdListe implements Runnable{ @@ -30,7 +31,7 @@ public class TraitementCmdListe implements Runnable{ String id = cmd[1]; String nom = cmd[2]; String ip = cmd[3]; - + if (ordre.equals("listRequest")) { for (int i = 2000; i<2010; i++) envoyerNom2(i); // à changer, debug //TODO //envoyerNom(); @@ -45,7 +46,7 @@ public class TraitementCmdListe implements Runnable{ if (ordre.equals("add") && !nom.equals("null")) { - ajouteUtilisateur(GestionnaireListeUtilisateur.instance().getListeUtilisateur(), id, nom, ip); + ajouteUtilisateur(GestionnaireListeUtilisateur.instance().getListeUtilisateur(), id, nom, ip, ordre); //debug @@ -56,9 +57,14 @@ public class TraitementCmdListe implements Runnable{ } } + + //mise à jour des graphismes + ListUI.update(); + System.out.println("libéré"); semaphore.release(); - + + } catch (Exception e) {} } @@ -84,7 +90,7 @@ public class TraitementCmdListe implements Runnable{ //Ajoute les utilisateurs à la listeUtilisateur - private void ajouteUtilisateur(ArrayList listeUtilisateur, String id, String nom, String ip) { + private void ajouteUtilisateur(ArrayList listeUtilisateur, String id, String nom, String ip, String ordre) { boolean inListe = false; @@ -94,6 +100,7 @@ public class TraitementCmdListe implements Runnable{ inListe = true; TypeListeUtilisateur utilisateur = listeUtilisateur.get(i); utilisateur.nom = nom; + } } diff --git a/Projet_POO/src/nom/GestionnaireNom.java b/Projet_POO/src/nom/GestionnaireNom.java index 10c3054..a839b40 100644 --- a/Projet_POO/src/nom/GestionnaireNom.java +++ b/Projet_POO/src/nom/GestionnaireNom.java @@ -115,26 +115,17 @@ public class GestionnaireNom{ //check la disponibilité est asocie un nom à l'utilisateur si c'est bon, et prévient les autres. - public boolean nommer(String nom) { - - if (verifierDisponibiliteNom(nom)) { - setNom(nom); - GestionnaireListeUtilisateur.instance().envoie("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + "LocalHost"); - - return true; - } - return false; + public void nommer(String nom) { + setNom(nom); + GestionnaireListeUtilisateur.instance().envoie("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + "LocalHost"); + } //debug - public boolean nommer2(String nom) { - - if (verifierDisponibiliteNom(nom)) { + public void nommer2(String nom) { setNom(nom); GestionnaireListeUtilisateur.instance().envoie2("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + "LocalHost"); - return true; - } - return false; + } diff --git a/Projet_POO/src/ui/ListUI.java b/Projet_POO/src/ui/ListUI.java index 2670b72..eca5893 100644 --- a/Projet_POO/src/ui/ListUI.java +++ b/Projet_POO/src/ui/ListUI.java @@ -7,29 +7,34 @@ import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; -import javax.swing.JTable; +import javax.swing.JButton; +import javax.swing.JScrollPane; +import javax.swing.JList; +import javax.swing.DefaultListModel; +import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; +//import javax.swing.AbstractListModel; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +import java.util.ArrayList; import clavardage.gestionnaireClavardage; import liste.GestionnaireListeUtilisateur; import nom.GestionnaireNom; import liste.TypeListeUtilisateur; -import java.util.ArrayList; -import javax.swing.JButton; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; -import javax.swing.JScrollPane; + public class ListUI extends JFrame implements Runnable{ private static final long serialVersionUID = 42L; private JPanel contentPane; - private JTable table; - private DefaultTableModel dtm = new DefaultTableModel(null, new String[] {"Name"}); - + public static JList list = new JList(); + //private JList list2; /** @@ -71,25 +76,38 @@ public class ListUI extends JFrame implements Runnable{ //JScrollPane - //On extrait les nom de la liste des Utilisateurs - ArrayList listeUtilisateur = GestionnaireListeUtilisateur.instance().getListeUtilisateur(); - ArrayList liste = new ArrayList(); - for (int i=0; i< listeUtilisateur.size(); i++) { - liste.add(listeUtilisateur.get(i).nom); - } - - ajouterNomListe(dtm, liste); - JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(67, 23, 303, 158); contentPane.add(scrollPane); + /* + + //list ? + list = new JList(); + list.setModel(new AbstractListModel() { + private static final long serialVersionUID = 41L; + + public String[] values = new String[] {"A", "B", "C"}; + public int getSize() { + return values.length; + } + public String getElementAt(int index) { + return values[index]; + } + }); + scrollPane.setViewportView(list); + */ - //JTable - table = new JTable(); - scrollPane.setViewportView(table); + listeInitial(); + + list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + scrollPane.setViewportView(list); - table.setModel(dtm); + + + + + // Bouton Rename JButton renameButton = new JButton("Rename"); renameButton.addActionListener(new ActionListener() { // Appuyer @@ -107,11 +125,7 @@ public class ListUI extends JFrame implements Runnable{ JButton connectButton = new JButton("Connect"); connectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //Appuyer - - int row = table.getSelectedRow(); - int col = table.getSelectedColumn(); - - connect(row, col); + connect(); } }); @@ -136,20 +150,23 @@ public class ListUI extends JFrame implements Runnable{ * Méthode */ + + // à améliorer ... (suppression ?) public void ajouterNomListe(DefaultTableModel dtm, ArrayList liste) { for (String t : liste) { if (!t.equals(GestionnaireNom.instance().getNom())) { dtm.addRow(new Object[] {t}); + } } } // Lance une communication avce l'Utilisateur voulu - public void connect(int row, int col) { + public void connect() { try{ - String nom = (String) table.getValueAt(row, col); + String nom = (String) list.getSelectedValue(); gestionnaireClavardage gc = gestionnaireClavardage.instance(); gc.createSession(nom); @@ -158,4 +175,36 @@ public class ListUI extends JFrame implements Runnable{ catch (Exception e) {} } + + //mise en place de la liste de base + public void listeInitial() { + + ArrayList listeUtilisateur = GestionnaireListeUtilisateur.instance().getListeUtilisateur(); + DefaultListModel defaultListModel = new DefaultListModel(); + for (int i=0; i listeUtilisateur = GestionnaireListeUtilisateur.instance().getListeUtilisateur(); + DefaultListModel defaultListModel = new DefaultListModel(); + for (int i=0; i utiliser pwd : admin et n'importe quel ID pour créer différents user (attention chaque user doit avoir un server (main)) if( pwd.equals("admin") || id.equals("0") ) { //remplaver || par && -> facilite debug //TODO ( à remplacer par BDD après ) @@ -239,7 +238,7 @@ public class Login_RegisterUI extends JFrame implements Runnable{ public void enter() { String id = idField.getText(); - String pwd = passwordField.getText(); + String pwd = String.valueOf(passwordField.getPassword()); PreparedStatement st; ResultSet rs; @@ -276,6 +275,7 @@ public class Login_RegisterUI extends JFrame implements Runnable{ else { System.out.println("BDD FAIL"); JOptionPane.showMessageDialog(null, "Invalid Id / Password", "Login error", 2); + passwordField.setText(""); } diff --git a/Projet_POO/src/ui/NomUI.java b/Projet_POO/src/ui/NomUI.java index 4cc8718..2402020 100644 --- a/Projet_POO/src/ui/NomUI.java +++ b/Projet_POO/src/ui/NomUI.java @@ -5,18 +5,19 @@ import java.awt.EventQueue; import java.awt.Toolkit; import java.awt.Dimension; -import nom.GestionnaireNom; - import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextField; import javax.swing.JLabel; + import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import nom.GestionnaireNom; + public class NomUI extends JFrame implements Runnable{ private static final long serialVersionUID = 42L; @@ -118,7 +119,7 @@ public class NomUI extends JFrame implements Runnable{ // On choisit son Username private void nommer(String nom) { // Si l'on se renomme on peut annuler en entrant rien ou Reprendre le même Username - if( (GestionnaireNom.instance().getNom() != null) && (nom.isBlank() || nom.toLowerCase().equals(GestionnaireNom.instance().getNom().toLowerCase()) ) ) { + if( (GestionnaireNom.instance().getNom() != null) && (nom.isBlank() || nom.equals(GestionnaireNom.instance().getNom()) ) ) { dispose(); Thread t = new Thread(new ListUI()); @@ -127,7 +128,7 @@ public class NomUI extends JFrame implements Runnable{ } else { //Sinon on essaye de prendre un nom - if (GestionnaireNom.instance().verifierDisponibiliteNom(nom) ) { + if (GestionnaireNom.instance().verifierDisponibiliteNom(nom) || nom.toLowerCase().equals(GestionnaireNom.instance().getNom().toLowerCase()) ) { //Celui-ci ne peut pas être "vide" if (!nom.isBlank()) { GestionnaireNom.instance().nommer2(nom); //enlever le 2 à la fin //TODO diff --git a/Projet_POO/src/ui/ToutUI.java b/Projet_POO/src/ui/ToutUI.java index 2769eb0..82c329e 100644 --- a/Projet_POO/src/ui/ToutUI.java +++ b/Projet_POO/src/ui/ToutUI.java @@ -34,6 +34,12 @@ import javax.swing.JProgressBar; import javax.swing.JScrollBar; import javax.swing.JSeparator; import javax.swing.JSlider; +import javax.swing.JList; +import javax.swing.AbstractListModel; + + + +// TEST ONLY public class ToutUI { @@ -210,5 +216,18 @@ public class ToutUI { JLabel lblNewLabel_1 = new JLabel("JList : updtae needed, JSeparator : non compris ...."); lblNewLabel_1.setBounds(23, 361, 316, 14); frmTitle.getContentPane().add(lblNewLabel_1); + + JList list = new JList(); + list.setModel(new AbstractListModel() { + String[] values = new String[] {"A", "B", "C"}; + public int getSize() { + return values.length; + } + public Object getElementAt(int index) { + return values[index]; + } + }); + list.setBounds(470, 140, 77, 76); + frmTitle.getContentPane().add(list); } }