Package

Source Code of FenetreAccueil$ActionVisiter

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Desktop;
import java.awt.FlowLayout;
import java.awt.Toolkit;



import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.swing.BorderFactory;
import javax.swing.Box;
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;
import javax.swing.border.TitledBorder;



public class FenetreAccueil extends JFrame implements Vue {
 
  private static final long serialVersionUID = 1L;
  //  
  //Barre de menu

  //Contenu de la fenetre
 
  private JTextField login = new JTextField(10);
  private JPasswordField mdp = new JPasswordField(10);
 
  private JButton connec = new JButton("Se connecter");
 
  private JButton visiter = new JButton("Visite le site du jeu !");
 
  private JLabel info = new JLabel();
 
  private JButton quitter = new JButton("Quitter le jeu");
 
  private JButton inscription = new JButton("S'inscrire");
 
  private JButton apropos = new JButton("A propos...");
 

  /**
   * Creation de la fen�tre d'accueil
   */
  public FenetreAccueil()
  {
    // IMPOSSIBLE DE LANCER LE JEU
    if (!estExecutable())
    {
      JOptionPane.showMessageDialog(null, "Fichiers internes introuvables !");
      System.exit(0); // on quitte
    }
    build();
  }
  /**
   * Teste si il manque au moins un fichier dans la base embarquee
   * @return
   */
  public boolean estExecutable()
  {
    return new File(".fichiers/joueur").exists()
        && new File(".fichiers/niveau").exists()
        && new File(".fichiers/termine").exists();
  }
 
  public void build()
  {
    this.setTitle("Jeu - Wallcat"); /* Titre de la fen�tre */
    this.setSize(750, 200); /* Largeur et hauteur */
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* Click sur la croix rouge */
    this.setResizable(false); /* Non redimensionnable */
    this.setLocationRelativeTo(null); /* Apparait au centre de l'�cran */
    buildContentPane(); /* Construit le panel */
    doAllActions(); /* Affecte toutes les actions */
    setVisible(true); /* Devient visible */
  }
 
 
  /**
   * Construction du panel
   */
  public void buildContentPane()
  {
    /* On affecte un layout de type BorderLayout*/
    /* Ce layout permet de placer des composants
     � des points cardinaux pr�cis
     */
    /* NORTH, WEST, EAST, SOUTH ou CENTER */
    getContentPane().setLayout(new BorderLayout());
    /* Formulaire de connexion centrale */
    buildFormulaire();
    /* Panel d'actions � l'est */
    buildActions();
  }
 

  /**
   * Construction du contenu central
   */
  public void buildFormulaire()
  {
    JPanel formulaire = new JPanel(new FlowLayout(FlowLayout.LEFT));
    formulaire.add(new JLabel("Pseudo"));
    formulaire.add(login);
    formulaire.add(new JLabel("Mot de passe"));
    formulaire.add(mdp);
    formulaire.add(connec);
    formulaire.add(new JLabel("Pas encore inscrit ?"));
    formulaire.add(inscription);
    formulaire.add(visiter);
    formulaire.add(info);
    info.setOpaque(true); // le rend opaque pour pouvoir changer sa couleur
    info.setForeground(Color.RED);
    formulaire.setBorder(BorderFactory.createTitledBorder(null,"",TitledBorder.DEFAULT_POSITION, TitledBorder.LEFT));
    getContentPane().add(formulaire,BorderLayout.CENTER);
    getContentPane().add(new JLabel("<html><b>WallCat tous droits reserves</b></html>"),BorderLayout.SOUTH);
   
   
  }
 
  public void buildActions()
  {
    Box action = Box.createVerticalBox();
    action.add(quitter);
    action.add(apropos);
    action.setBorder(new TitledBorder(null,null,TitledBorder.CENTER,TitledBorder.DEFAULT_POSITION));
    getContentPane().add(action,BorderLayout.EAST);
  }
  /**
   * Verifie si le pseudo appartient � un joueru
   * @param pseudo
   * @return
   */
  public boolean bonPseudo(final String pseudo)
  {
    for (Joueur j : PlayerFactory.getAllJoueurs())
    {
      if (j.getPseudo().equals(pseudo.toLowerCase()))
        return true;
    }
   
    return false;
  }
 
  public static String getEncodedPassword(final String key) {
      byte[] uniqueKey = key.getBytes();
      byte[] hash = null;
      try {
      hash = MessageDigest.getInstance("MD5").digest(uniqueKey);
      } catch (NoSuchAlgorithmException e) {
        JOptionPane.showMessageDialog(null,
            "Encodement non supporte par votre systeme",
            "Erreur",
            JOptionPane.ERROR_MESSAGE);
      }
      StringBuffer hashString = new StringBuffer();
      for ( int i = 0; i < hash.length; ++i ) {
      String hex = Integer.toHexString(hash[i]);
      if ( hex.length() == 1 ) {
        hashString.append('0');
        hashString.append(hex.charAt(hex.length()-1));
      } else {
        hashString.append(hex.substring(hex.length()-2));
      }
      }
      return hashString.toString();
    }
 
  public String getInformationsJoueur(String pseudo)
  {
    BufferedReader reader = null;
    String ligne;
    try {
      reader = new BufferedReader(new FileReader(new File(".fichiers/joueur")));
      ligne = reader.readLine();
      while (ligne != null)
      {
        if (ligne.startsWith(pseudo.toLowerCase()))
        {
          return ligne;
        }
        ligne = reader.readLine();
      }
      reader.close();
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      JOptionPane.showMessageDialog(null, "Erreur dans la lecture du fichier","Erreur",
          JOptionPane.ERROR_MESSAGE);
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
   
    return null;
  }
 
  /**
   * Retourne vrai si le mot de passe du pseudo login correspondant au mot de passe donn� en param�tre
   * @param login
   * @param mot
   * @return
   */
  public boolean verifieMotDePasse(final String login, final String mot)
  {
    return getEncodedPassword(mot).equals(this.getInformationsJoueur(login.toLowerCase()).split(",")[1]);
  }
 
  /**
   * Ajout de toutes les actions dans les boutons du panel
   */
  public void doAllActions()
  {
    // listener pour se connecter
    connec.addActionListener(new ActionConnection());
    // listener pour visiter le site web
    visiter.addActionListener(new ActionVisiter());
    // listener pour quitter le jeu
    quitter.addActionListener(new ActionQuitter());
    // listener qui affiche une pop-up avec un mot pour les joueurs
    apropos.addActionListener(new ActionAPropos());
    // listener qui ouvre le formulaire d'inscription
    inscription.addActionListener(new ActionInscription());
  }
  /**
   * Se connecte au jeu
   */
  public void connection()
  {
    // si il a oubli� un champ...
    if (login.getText().isEmpty()||mdp.getPassword().length==0)
    {
      JOptionPane.showMessageDialog(null, "Vous avez oublie un champ","Erreur",JOptionPane.ERROR_MESSAGE);
      return;
    }
   
    // verification des mots de passe
    if (!bonPseudo(login.getText())||!verifieMotDePasse(login.getText(), new String(mdp.getPassword())))
    {
    info.setText("Le pseudo ou le mot de passe ne correspondent pas !");
    }
   
    else
    {
      dispose();
      new FenetrePanelCompte(PlayerFactory.getJoueur(login.getText()));
    }
  }
 
  private class ActionConnection implements ActionListener
  {

    @Override
    public void actionPerformed(ActionEvent arg0) {
      connection();
     
    }
  }
 
  public void erreurOuvertureBrower()
  {
    JOptionPane.showMessageDialog(null, "Une erreur s'est produite lors de l'ouverture du navigateur !","Erreur",JOptionPane.ERROR_MESSAGE);
    return;
  }
 
  private class ActionVisiter implements ActionListener
  {

    @Override
    public void actionPerformed(ActionEvent e) {
      // TODO Auto-generated method stub
      // ouvrir le site web sur le navigateur par d�faut
            if ( Desktop.isDesktopSupported() ) {
              // On r�cup�re l'instance du desktop :
              Desktop desktop = Desktop.getDesktop();
             
              // On v�rifie que la fonction browse est bien support�e :
              if (desktop.isSupported(Desktop.Action.BROWSE)) {
               
                // Et on lance l'application associ� au protocole :
                try {
                  desktop.browse(new URI("http://www.wallcat-lejeu.com"));
                } catch (IOException e1) {
                  // TODO Auto-generated catch block
                  erreurOuvertureBrower();
                } catch (URISyntaxException e1) {
                  // TODO Auto-generated catch block
                  erreurOuvertureBrower();
                }
              }
              else
              {
                JOptionPane.showMessageDialog(null,
                    "Votre syst�me ne supporte pas l'ouverture",
                    "Erreur",
                    JOptionPane.ERROR_MESSAGE);
              }
            }
          }
    }

   
   
 
 
  private class ActionQuitter implements ActionListener
  {

    @Override
    public void actionPerformed(ActionEvent e) {
      // TODO Auto-generated method stub
      int res = JOptionPane.showConfirmDialog(null,
          "Voulez-vous vraiment quitter ?","Confirmation",
          JOptionPane.YES_NO_OPTION);
      if (res == JOptionPane.YES_OPTION)
      {
      dispose();
      System.exit(0);
      }
    }
   
  }
 
  private class ActionInscription implements ActionListener
  {

    @Override
    public void actionPerformed(ActionEvent arg0) {
      // TODO Auto-generated method stub
      new FenetreInscription();
    }
   
  }
 
  private class ActionAPropos implements ActionListener
  {

    @Override
    public void actionPerformed(ActionEvent e) {
      // TODO Auto-generated method stub
      JOptionPane.showMessageDialog(null, "<html>" +
        "Ce jeu a ete realise par 2 personnes actuellement en stage de fin de diplome<br>" +
        "Il a pour but de vous faire reflechir et de vous montrer nos competences<br>" +
        "Il a ete realise par : <ul>" +
        "<li>Mathieu Freville</li>" +
        "<li>Baptiste Quide</li>" +
        "</ul>" +
        "Le principe est simple : il vous suffit de pousser les tapettes en direction des souris.<br>" +
        "Attention, vous devez attraper toutes les souris ! Soyez inventif...<br>" +
        "Enjoy ! </html>","A propos",JOptionPane.INFORMATION_MESSAGE);
    }
   
  }
 
 
}
TOP

Related Classes of FenetreAccueil$ActionVisiter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.