Package client.gui

Source Code of client.gui.JXoFrame

package client.gui;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.prefs.Preferences;

import javax.swing.JFrame;
import javax.swing.ToolTipManager;

import client.JxoClient;
import client.gui.dialogs.ConnexionDialog;
import client.gui.misc.GU;
import client.gui.panels.GrillePanel;

import com.jgoodies.looks.plastic.theme.ExperienceBlue;
import common.Conteneur;
import common.Point;
import common.TypeConteneur;

/**
*
* Classe graphique principale du projet.
* La classe contenant le point d'entrée
* (méthode main)
*
* @author Ait Elhaj Brahim
*
*/
public class JXoFrame  extends JFrame{
 
  /** La version du software */
  public final static String VERSION = "1.0";
 
  public final static int DIMENSION = 3;
 
  protected static Preferences pref = Preferences.userRoot();
 
  /** Dialogue de Connexion */
  private ConnexionDialog cx;
 
  /** Le panel central, principal */
  private GrillePanel main = null;
 
  private StatusBarGUI barreStatus;
 
  /** Nom/adresse du serveur */
  private String hostName = "";
  /** Nom de joueur */
  private String userName = "";
 
  /**
   * Instance de client de jeu
   * initialisee a la creation du gui lors de la confirmation du
   * dialogue de connexion.
   */
  private JxoClient leClient;

  // type de symbole qu'on joue.
  private String symbole;
 
  /** action de connexion a entreprendre
   * 1 = connexion */
  private int CONNECT_ACTION = 1;
 
 
  /**
   * Crée les objets graphiques et lance l'interface principale du projet.
   *
   */
  public JXoFrame(){
    super("jXo - Morpion 2007");
   
    //On change le skin
    GU.changeUiSkin(new ExperienceBlue(),this);
   

    Container cp = getContentPane();

    // Préférences
    ToolTipManager.sharedInstance().setEnabled(
        pref.getBoolean("tooltips", true));
    ToolTipManager.sharedInstance().setInitialDelay(1500);
    ToolTipManager.sharedInstance().setReshowDelay(1500);

    /* ajout du menu principal
     * en haut de la fenetre
     */
    this.setJMenuBar(new MenuBarGUI(this));
   
   
//    this.setMain(getDefaultView());

    // La vue principale (panel avec la grille de jeu)
    this.main = getDefaultView();
    // bloquer tous les boutons au demarrage.
    // debloques des qu'une partie commence
    this.main.blockAllButtons();
   
    // Un border pour toolbar (en haut), statusbar (en bas), main (central)
    cp.setLayout(new BorderLayout());
    cp.add(main, BorderLayout.CENTER);
   
    this.barreStatus = new StatusBarGUI(this);
    cp.add(this.barreStatus, BorderLayout.SOUTH);

    // Une taille raisonnable au départ (dans un fichier de config après
    // sans doute) Mode maximisé ?
    setSize(new Dimension(480, 480));
    GU.center(this);
   
   
   
   
    // action par defaut lors de la fermeture.
    setDefaultCloseOperation(this.shutdown());
    setVisible(true);
   
    /*
     * Affichage du dialogue de connexion au demarrage de
     * l'appli
     */
    this.cx = new ConnexionDialog(this, true);
    this.cx.setVisible(true);
  }
 
  /**
   * Créer et renvoie le panel principal de l'inteface du projet.
   * @return Le panel principal contenant la grille de jeu.
   */
  private GrillePanel getDefaultView() {
    /* Creation d'un panel grille de jeu */
    GrillePanel defaultView = new GrillePanel(this, this.DIMENSION);
    return defaultView;
  }
 
 
  /**
   * Créer et renvoie le panel principal de l'inteface du projet.
   * @param size Taille de la grille a creer
   * @return Le panel principal contenant la grille de jeu.
   */
//  private JPanel getDefaultView(int size) {
//    /* Creation d'un panel grille de jeu */
//    JPanel defaultView = new GrillePanel(this, size);
//    return defaultView;
//  }
 
 
 
  public void resetMainPanel() {
    this.main.resetGrille();
  }
 
  public void enableMainPanel(){
    this.main.enableAllButtons();
  }
 
  public void setStatusBarText(String s){
    this.barreStatus.setStatusBarText(s);
  }
 
  public void setDefaultStatusBarText(){
    this.barreStatus.setDefaultLabel();
  }
 
 

 
  /**
   * Actions a declencher lors de la fermeture de la fenetre graphique.
   * @return
   */
  private int shutdown(){
    // fermer le socket client !!!
//    this.leClient.disconnect();
    return JFrame.EXIT_ON_CLOSE;
  }
 
 
 
//  public void setGridSize(int size){
//    this.main = this.getDefaultView(size);
//    // redraw
//    this.displayScreen(this.main);
//  }
 
 
  /**
   * Affiche un composant particulier à la place de l'actuel.
   * @param c Le composant à afficher
   */
//  public void displayScreen(Component c) {
//    this.getContentPane().removeAll();
//    this.getContentPane().add(c);
//    this.pack();
//   
////    this.getOwner().repaint();
////    this.validate();
//  }

 
  /* Methodes concernant le client jXo */
 
  /**
   * Recuperation du nom d'hote ou on se connecte.
   * @return the hostName
   */
  public String getHostName() {
    return this.hostName;
  }

  /**
   * Renseignement du nom d'hote ou on se connecte
   * @param hostName the hostName to set
   */
  public void setHostName(String hostName) {
    this.hostName = hostName;
  }

  /**
   * Recuperation Nom d'utilisateur local
   * @return the userName
   */
  public String getUserName() {
    return this.userName;
  }

  /**
   * Renseignement du nom d'utilisateur local.
   * @param userName the userName to set
   */
  public void setUserName(String userName) {
    this.userName = userName;
  }
 
 
  /**
   * Renseignement du client de jeu
   * @param jc Instance de Client de Jeu associee au programme en execution.
   */
  public synchronized void setJxoClient(JxoClient jc){
    this.leClient = jc;
  }

  /**
   * Envoyer un point au serveur, pour dire qu'on a joue un
   * tour.
   * @param i Abscisse du point a envoyer
   * @param j Ordonnee du point a envoyer
   * @throws IOException Si quelque chose tourne mal.
   */
  public void envoyerPoint(int i, int j) throws IOException{
    Point p = new Point(i,j, this.symbole);
    Conteneur c1 = new Conteneur(TypeConteneur.POINT, p);
    c1.setPseudo(this.userName);
    this.leClient.envoyerConteneur(c1);
  }


  /**
   * Renseignement du symbole (x,o) que va jouer le joueur
   * @param type
   */
  public void setTypeSymbole2Gui(String type){
    this.symbole = type;
    this.main.unblockAllButtons();
  }
 
  /**
   * Recuperation du type de symbole que joue le joueur
   * @return String symbole joue par le joueur.
   */
  public String getTypeSymbole(){
    return this.symbole;
  }
 
 

 
  /**
   * Reaffichage du dialogue de connexion
   *
   */
  public void reshowConnexionDialog(){
    this.cx.setModal(true);
    this.cx.setVisible(true);
  }
 
 
 
 

 
 
  /**
   * Affichage d'un point venant de l'adversaire.
   * @param p Point joue par l'adversaire.
   */
  public void showPointAdversaire(Point p) {
    this.main.showPointAdversaire(p);
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  /**
   * Affichage d'un dialogue de confirmation
   * Informations
   * @param s
   */
  public void info(String s){
    GU.info(s);
  }
 
  /**
   * Affichage d'un dialogue d'avertissement.
   * @param s
   */
  public void warning(String s){
    GU.warn(s);
  }






 
 




  /**
   * Desactivation des boutons de la grille:
   * * en cas de fin de partie
   * * en cas de coupure de connexion
   */
  public void desactiverTousChamps(){
    // bloquage de tous les boutons
    this.main.blockAllButtons();
    // reactivation (degrisage)
//    this.main.enableAllButtons();
  }
 


 
  /**
   * Dialogue de demande : Rejouer une partie ou pas
   */
  public boolean rejouer(){
    return GU.confirm("Souhaitez-vous rejouer une nouvelle partie ?");
  }



  /**
   * @return the cONNECT_ACTION
   */
  public int getCONNECT_ACTION() {
    return this.CONNECT_ACTION;
  }

  /**
   * @param connect_action the cONNECT_ACTION to set
   */
  public void setCONNECT_ACTION(int connect_action) {
    this.CONNECT_ACTION = connect_action;
  }

  /**
   * @param hostN
   * @param userN
   * @throws IOException
   * @throws UnknownHostException
   */
  public void reconnect()
    throws UnknownHostException, IOException {
    // TODO Auto-generated method stub
    this.leClient.reconnect();
   
  }

  /**
   * Deconnexion du client du serveur.
   */
  public void disconnect(){
    this.leClient.disconnect();
    this.CONNECT_ACTION = ConnexionDialog.RECONNECT;
    this.setStatusBarText("Deconnecte...");
  }

}

TOP

Related Classes of client.gui.JXoFrame

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.