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 } /** *
Interface graphique pour se connecter a une base de donnees.
* 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.
Retourne en contrepartie un objet Connexion qui a tout les parametres de l'utilisateur et qui permet de se connecter.
*L'objet Connexion provient du paquet fr.blankoworld.connexionBDD.Connexion
*/ 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); } } }