144 行
4 KiB
Java
144 行
4 KiB
Java
package gui;
|
|
|
|
import java.awt.BorderLayout;
|
|
import java.awt.Dimension;
|
|
import java.awt.GridLayout;
|
|
import java.awt.HeadlessException;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
|
|
import javax.swing.BorderFactory;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JTextField;
|
|
import javax.swing.SwingConstants;
|
|
import javax.swing.JOptionPane;
|
|
|
|
import java.io.IOException;
|
|
|
|
import controller.*;
|
|
|
|
public class FenetreModifPseudo implements ActionListener {
|
|
|
|
JFrame frame;
|
|
JPanel panel;
|
|
JTextField pseudofield;
|
|
JLabel Text;
|
|
JButton ok;
|
|
JButton Cancel;
|
|
Agent agent;
|
|
|
|
/*
|
|
* 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 FenetreModifPseudo(Agent agent) {
|
|
|
|
this.agent = agent;
|
|
|
|
//creer une instance JFrame
|
|
frame = new JFrame("Modification pseudo");
|
|
|
|
//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(4,1));
|
|
|
|
//Ajouter les elements
|
|
this.addWidgets();
|
|
|
|
//Set the default button.
|
|
frame.getRootPane().setDefaultButton(ok);
|
|
|
|
//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);
|
|
}
|
|
|
|
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("Type your new pseudo", SwingConstants.CENTER);
|
|
|
|
//Ajout d'un bouton Connexion
|
|
this.ok = new JButton("Continue");
|
|
this.Cancel = new JButton("Cancel");
|
|
this.ok.addActionListener(this);
|
|
this.ok.setSelected(false);
|
|
this.Cancel.addActionListener(this);
|
|
|
|
//On associe au bouton Connexion des actions a realiser
|
|
this.ok.addActionListener(this);
|
|
|
|
// On ajoute les differents elements au panel
|
|
panel.add(pseudofield);
|
|
panel.add(Text);
|
|
panel.add(ok);
|
|
panel.add(Cancel);
|
|
|
|
//ajouter un effet de bord transparent au composant Jlabel
|
|
Text.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
|
}
|
|
|
|
public void actionPerformed(ActionEvent event) {
|
|
Object source = event.getSource();
|
|
if(source == ok){
|
|
|
|
//Récupération du nouveau pseudo
|
|
String newPseudo = pseudofield.getText();
|
|
try {
|
|
|
|
//Si le nouveau pseudo est acceptable
|
|
if(agent.changerPseudo(newPseudo)) {
|
|
//Affichage message
|
|
JOptionPane.showMessageDialog(frame, "Your new pseudo is "+newPseudo);
|
|
frame.dispose();
|
|
new FenetreMenu(agent);
|
|
//Sinon affichage message erreur
|
|
}else {
|
|
if(!ok.isSelected() && !FenetreMenu.ouvert) {
|
|
try {
|
|
Thread.sleep(1000);
|
|
} catch (InterruptedException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
JOptionPane.showMessageDialog(frame, "Pseudo already use, choose another one");
|
|
ok.setSelected(true);
|
|
frame.dispose();
|
|
new FenetreModifPseudo(agent);
|
|
}
|
|
}
|
|
|
|
} catch (HeadlessException e1) {
|
|
e1.printStackTrace();
|
|
} catch (IOException e1) {
|
|
e1.printStackTrace();
|
|
};
|
|
|
|
}else if(source == Cancel) {
|
|
frame.dispose();
|
|
try {
|
|
new FenetreMenu(agent);
|
|
} catch (IOException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|