améloration user friendly + liste dynamic (a ameliorer)

This commit is contained in:
basti 2020-12-11 11:38:09 +01:00
parent c5d00ea88f
commit 761fff9101
7 changed files with 137 additions and 70 deletions

View file

@ -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");

View file

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.concurrent.Semaphore;
import nom.GestionnaireNom;
import ui.ListUI;
public class TraitementCmdListe implements Runnable{
@ -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<TypeListeUtilisateur> listeUtilisateur, String id, String nom, String ip) {
private void ajouteUtilisateur(ArrayList<TypeListeUtilisateur> 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;
}
}

View file

@ -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) {
public void nommer(String nom) {
setNom(nom);
GestionnaireListeUtilisateur.instance().envoie("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + "LocalHost");
if (verifierDisponibiliteNom(nom)) {
setNom(nom);
GestionnaireListeUtilisateur.instance().envoie("add"+ "$$$" + getId() + "$$$" + getNom() + "$$$" + "LocalHost");
return true;
}
return false;
}
//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;
}

View file

@ -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<String> list = new JList<String>();
//private JList<TypeListeUtilisateur> list2;
/**
@ -71,24 +76,37 @@ public class ListUI extends JFrame implements Runnable{
//JScrollPane
//On extrait les nom de la liste des Utilisateurs
ArrayList<TypeListeUtilisateur> listeUtilisateur = GestionnaireListeUtilisateur.instance().getListeUtilisateur();
ArrayList<String> liste = new ArrayList<String>();
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<String>();
list.setModel(new AbstractListModel<String>() {
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);
*/
listeInitial();
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrollPane.setViewportView(list);
//JTable
table = new JTable();
scrollPane.setViewportView(table);
table.setModel(dtm);
// Bouton Rename
JButton renameButton = new JButton("Rename");
@ -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<String> 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<TypeListeUtilisateur> listeUtilisateur = GestionnaireListeUtilisateur.instance().getListeUtilisateur();
DefaultListModel<String> defaultListModel = new DefaultListModel<String>();
for (int i=0; i<listeUtilisateur.size(); i++){
if(!listeUtilisateur.get(i).nom.equals(GestionnaireNom.instance().getNom())) {
defaultListModel.addElement(listeUtilisateur.get(i).nom);
}
}
list.setModel(defaultListModel);
}
// mise à jour des graphismes
public static void update() { //TODO à refaire un plus jolie (observer ou autre)
ArrayList<TypeListeUtilisateur> listeUtilisateur = GestionnaireListeUtilisateur.instance().getListeUtilisateur();
DefaultListModel<String> defaultListModel = new DefaultListModel<String>();
for (int i=0; i<listeUtilisateur.size(); i++){
if(!listeUtilisateur.get(i).nom.equals(GestionnaireNom.instance().getNom())) {
defaultListModel.addElement(listeUtilisateur.get(i).nom);
}
}
list.setModel(defaultListModel);
}
}

View file

@ -5,36 +5,32 @@ import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.border.EmptyBorder;
import bdd.Liaison;
import clavardage.gestionnaireClavardage;
import liste.GestionnaireListeUtilisateur;
import liste.TypeListeUtilisateur;
import nom.GestionnaireNom;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import javax.swing.JTextField;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import bdd.Liaison;
import clavardage.gestionnaireClavardage;
import nom.GestionnaireNom;
public class Login_RegisterUI extends JFrame implements Runnable{
@ -43,7 +39,7 @@ public class Login_RegisterUI extends JFrame implements Runnable{
private JPanel contentPane;
private JTextField idField;
private JTextField passwordField;
private JPasswordField passwordField;
@ -133,7 +129,8 @@ public class Login_RegisterUI extends JFrame implements Runnable{
idField.setColumns(10);
//passwordField
passwordField = new JTextField();
passwordField = new JPasswordField();
passwordField.setEchoChar((char) 0);
passwordField.addKeyListener(new KeyAdapter() { //Presser Entrer
@Override
public void keyPressed(KeyEvent e) {
@ -146,16 +143,18 @@ public class Login_RegisterUI extends JFrame implements Runnable{
passwordField.addFocusListener(new FocusAdapter() { //Focus
@Override
public void focusGained(FocusEvent e) {
String s = passwordField.getText();
String s = String.valueOf(passwordField.getPassword());
if ( s.equals("Password") ) {
passwordField.setText("");
passwordField.setEchoChar((char) 8226);
}
}
@Override
public void focusLost(FocusEvent e) {
String s = passwordField.getText();
String s = String.valueOf(passwordField.getPassword());
if ( s.equals("") ) {
passwordField.setText("Password");
passwordField.setEchoChar((char) 0);
}
}
});
@ -210,7 +209,7 @@ public class Login_RegisterUI extends JFrame implements Runnable{
// Teste la validité des champs.
public void enter2() {
String id = idField.getText();
String pwd = passwordField.getText();
String pwd = String.valueOf(passwordField.getPassword());
//debug --> 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("");
}

View file

@ -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

View file

@ -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);
}
}