/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cnam.nsy208.sudoku.view;
import cnam.nsy208.sudoku.main.Sudoku;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;
/**
*
* @author Martial
*/
public class ClientServerView implements CommandListener , ViewInterface {
// Menu
private final String[] MENU_LABELS = {"Client", "Serveur" , "Aide" , "A propos de..." };
private final Command NEW_GAME = new Command("Sélectionner", Command.SCREEN, 1);
private final Command EXIT_GAME = new Command("Sortie", Command.EXIT, 1);
private final Command BACK_CMD = new Command("Retour", Command.BACK, 2);
private Display _display;
private Sudoku _controler ;
private ViewInterface _parent ;
private ViewInterface _child ;
private String _helpText = "Serveur : Le mode serveur permet de faire un tournoi." +
" Ce mode est bloquant, un serveur ne peux faire que serveur.\n\n" +
"Client : Le mode client permet de joueur suivant 3 types de partie" +
"\n - Jeu rapide (jeu simple)" +
"\n - Aracade (jeu simple avec sauvegarde du temps)" +
"\n - Tournoi (permet de faire une course sur la résolution d'une même grille entre plusieurs joueurs." +
" Pour ce type de jeu, il est obligatoire d'avoir un serveur)" ;
private Alert _helpScreen = new Alert("Aide");
private String _aboutText = "Programme développé par :" +
"\n - M. Laurent Carrera" +
"\n - M. Martial Déga" +
"\n - Mlle Isabelle Ousset" +
"\n\nProgramme développé en 2009 dans le cadre l'UE NSY208 à l'IPST-CNAM.";
private Alert _aboutScreen = new Alert("A propos de ...");
/**
* Permet d'initialiser les variables de la vue
* @param d : Afficheur
* @param c : Controleur
* @return
*/
public ClientServerView( Display d , Sudoku c ) {
System.out.println("VueClientServeur : constructeur");
_display = d ;
_controler = c ;
// prepare help screen
_helpScreen.addCommand(BACK_CMD);
_helpScreen.setTimeout(Alert.FOREVER);
_helpScreen.setString(_helpText);
_helpScreen.setCommandListener(this);
// prepare about screen
_aboutScreen.addCommand(BACK_CMD);
_aboutScreen.setTimeout(Alert.FOREVER);
_aboutScreen.setString(_aboutText);
_aboutScreen.setCommandListener(this);
}
/**
* Permet d'affecter un prédecesseur et un successeur à la vue
* @param p : Prédecesseur
* @param c : Successeur
* @return
*/
public void setParentAndChild( ViewInterface p , ViewInterface c ) {
_parent = p ;
_child = c ;
}
/**
* Permet d'afficher la vue
* @return
*/
public void display() {
List list = new List("Role?", List.IMPLICIT, MENU_LABELS, null);
list.addCommand(EXIT_GAME);
list.addCommand(NEW_GAME);
list.setCommandListener(this);
_display.setCurrent(list);
System.out.println("VueClientServeur : paint");
}
/**
* Permet de gérer les événements associés à des commandes
* @param c : Commande executer
* @param d : Objet affichage liée à la commande
* @return
*/
public void commandAction(Command c, Displayable d) {
if ( c == EXIT_GAME ) {
_controler.notifyDestroyed();
System.out.println("VueClientServeur : EXIT");
} else if( (c == List.SELECT_COMMAND) || (c == NEW_GAME) ) {
if (((List) d).getString(((List) d).getSelectedIndex()).equals("Client")) {
System.out.println("VueClientServeur : Choix du mode Client");
_controler.setClientServerMode( Sudoku.TYPE_CLIENT ) ;
_child.display() ;
} else if (((List) d).getString(((List) d).getSelectedIndex()).equals("Serveur")) {
System.out.println("VueClientServeur : Choix du mode Serveur");
_controler.setClientServerMode( Sudoku.TYPE_SERVER ) ;
_child.display() ;
} else if (((List) d).getString(((List) d).getSelectedIndex()).equals("Aide")) {
System.out.println("VueClientServeur : Choix du mode Aide");
_display.setCurrent(_helpScreen);
} else if (((List) d).getString(((List) d).getSelectedIndex()).equals("A propos de...")) {
System.out.println("VueClientServeur : Choix du mode A propos de...");
_display.setCurrent(_aboutScreen);
}
} else if ( (c == BACK_CMD) && ( (d == _helpScreen) || (d == _aboutScreen) ) ) {
this.display();
}
}
}