cours0708/P51/ihm/IHMConnexion.java

212 lines
7.0 KiB
Java

package fr.blankoworld.ihm;
import fr.blankoworld.connexionBDD.Connexion;
import fr.blankoworld.ihm.IHMPrincipale;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
* @author 3dossmanno
*/
public class IHMConnexion extends JFrame {
private static final long serialVersionUID = 1L;
// Donnees privees
// Creation des champs textes
private JTextField jtextServeur;
private JTextField jtextPort;
private JTextField jtextBase;
private JTextField jtextIdentifiant;
private JPasswordField jtextMdp;
private JButton jOk;
// Creation d'un principal, pour utiliser ses methodes
private IHMPrincipale pr;
// Creation de la classe permettant la connexion a la base de donnees
private Connexion connexionToBdd;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
/**
* <h3>IHMConnexion</h3>
* <p>Interface graphique pour se connecter a une base de donnees.<br />
* Demande en parametre une IHMPrincipale, de type IHMPrincipale, et 5 parametres : Le serveur, le port, la base de donnees, l'identifiant
* et le mot de passe par defaut.</p>
* <p>Retourne en contrepartie un objet Connexion qui a tout les parametres de l'utilisateur et qui permet de se connecter.</p>
* <p>L'objet Connexion provient du paquet fr.blankoworld.connexionBDD.Connexion</p>
*/
public IHMConnexion(IHMPrincipale pr, String defaultServer, String defaultPort, String defaultDatabase, String defaultLogin, String defaultMdp) {
this.pr = pr;
connexionToBdd = new Connexion(defaultServer, defaultPort, defaultDatabase, defaultLogin, defaultMdp);
// Creation des etiquettes
JLabel jlabelServeur = new JLabel(" Serveur: ");
JLabel jlabelPort = new JLabel(" Port: ");
JLabel jlabelBase = new JLabel(" Base de donnees: ");
JLabel jlabelIdentifiant = new JLabel(" Identifiant: ");
JLabel jlabelMdp = new JLabel(" Mot de passe: ");
// Creation des champs textes
jtextServeur = new JTextField(connexionToBdd.getServer());
jtextPort = new JTextField(connexionToBdd.getPort());
jtextBase = new JTextField(connexionToBdd.getDatabase());
jtextIdentifiant = new JTextField(connexionToBdd.getLogin());
jtextMdp = new JPasswordField(connexionToBdd.getPassword());
jtextMdp.setEchoChar('*');
// Creation des boutons
jOk = new JButton("OK");
JButton jAnnuler = new JButton("Annuler");
//** Creation des panneaux **//
// Panneau au centre
JPanel Panneau_Centre = new JPanel();
Panneau_Centre.setLayout(new GridLayout(1,2));
// Donner un titre a notre panneau
//Panneau_Centre.setBorder(BorderFactory.createTitledBorder("Salut"));
// Panneau a gauche du panneau centre
JPanel Panneau_Centre_Gauche = new JPanel();
Panneau_Centre_Gauche.setLayout(new GridLayout(5,1));
// Panneau a droite du panneau centre
JPanel Panneau_Centre_Droite = new JPanel();
Panneau_Centre_Droite.setLayout(new GridLayout(5,1));
// Panneau en bas
JPanel Panneau_Bas = new JPanel();
// Ajout des etiquettes au panneau centre a gauche
Panneau_Centre_Gauche.add(jlabelServeur);
Panneau_Centre_Gauche.add(jlabelBase);
Panneau_Centre_Gauche.add(jlabelPort);
Panneau_Centre_Gauche.add(jlabelBase);
Panneau_Centre_Gauche.add(jlabelIdentifiant);
Panneau_Centre_Gauche.add(jlabelMdp);
// Ajout des champs textes au panneau centre droit
Panneau_Centre_Droite.add(jtextServeur);
Panneau_Centre_Droite.add(jtextBase);
Panneau_Centre_Droite.add(jtextPort);
Panneau_Centre_Droite.add(jtextBase);
Panneau_Centre_Droite.add(jtextIdentifiant);
Panneau_Centre_Droite.add(jtextMdp);
// Ajout des boutons au panneau bas
Panneau_Bas.add(jOk);
Panneau_Bas.add(jAnnuler);
// Ajout des panneaux droits et gauche au panneau centre
Panneau_Centre.add(Panneau_Centre_Gauche);
Panneau_Centre.add(Panneau_Centre_Droite);
// Ajout des panneaux a la fenetre
this.getContentPane().setLayout(new BorderLayout());
this.add(Panneau_Centre, BorderLayout.CENTER);
this.add(Panneau_Bas, BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setSize(350,200);
this.setLocation(200,200);
this.setResizable(false);
this.setTitle("Connexion a une base de donnees");
// ********************************************** //
jOk.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
valider();
}
});
jAnnuler.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
annuler();
}
});
}
private void valider(){
String message;
int resultatConfirmation;
// Recuperation des valeurs entrees dans les champs textes
message = "La connexion va etre etablie, les valeurs suivantes sont - elles exactes ? : \n\n";
message += "Serveur : " + this.jtextServeur.getText() + "\n";
message += "Port : " + this.jtextPort.getText() + "\n";
message += "Base de donnees : " + this.jtextBase.getText() + "\n";
message += "Identifiant : " + this.jtextIdentifiant.getText() + "\n";
message += "Mot de passe (crypte) : " + this.jtextMdp.getPassword().toString() + "\n";
// Affichage du message de confirmation
resultatConfirmation = JOptionPane.showConfirmDialog(this, message, "Confirmation", JOptionPane.YES_NO_OPTION);
// Nous confirmons ou pas ?
if(resultatConfirmation == 0){
String rose = new String(this.jtextMdp.getPassword());
// Si oui nous enregistrons les valeurs dans notre objet connexion
connexionToBdd.setServer(this.jtextServeur.getText());
connexionToBdd.setPort(this.jtextPort.getText());
connexionToBdd.setDatabase(this.jtextBase.getText());
connexionToBdd.setLogin(this.jtextIdentifiant.getText());
connexionToBdd.setPassword(rose);
// Puis nous recuperons la main et affichons a nouveau la fenetre principale en lui passant l'objet de connexion
this.dispose();
this.pr.setVisible(true);
this.pr.confirmationConnexion(connexionToBdd);
this.invalidate();
}
else{
// Sinon aucun traitement n'est effectue
}
}
private void annuler(){
this.dispose();
}
public void driverExist(){
// On verifie la presence du pilote JDBC, et de sa fonctionnalite
if(Integer.parseInt(connexionToBdd.driverPresent()[0]) == 1){
// Si pilote non present on desactive le bouton ok et autres boutons attaches
this.jtextServeur.setEnabled(false);
this.jtextPort.setEnabled(false);
this.jtextBase.setEnabled(false);
this.jtextIdentifiant.setEnabled(false);
this.jtextMdp.setEnabled(false);
this.jOk.setEnabled(false);
JOptionPane.showMessageDialog(this, "Pilote introuvable ou non fonctionnel.", "Avertissement", JOptionPane.ERROR_MESSAGE);
}
else{
JOptionPane.showMessageDialog(this, "Pilote trouve.", "Information", JOptionPane.INFORMATION_MESSAGE);
}
}
}