package fr.cnam.clientihm;

import java.rmi.*;
import java.rmi.registry.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

import fr.cnam.espacetore.*;
import fr.cnam.grille.*;
import fr.cnam.clientihm.*;
import fr.cnam.util.*;
import fr.cnam.ihm.*;

// Classe de visualisation de la grille de jeu
// Mode de communication entre l'espace de tore et cette IHM : Push
// Cette IHM utilise un DP Observer/Observable pour etre notifier
//  des mouvements des Agents
//
public class IHMVisuJeuPush implements FormulaireInt
{
    public static void main(String... args) throws Exception
    {
        new IHMVisuJeuPush(args);
    }

    public IHMVisuJeuPush(String... args) throws Exception
    {
        // Port du serveur de socket RMI car pour etre notifie on cree un objet distribue
        // Si on cree plusieurs client sur la meme machine, il faut que ce port soit
        //  different
        // 
        Parametres params = new Parametres(args);

        // Host de l'espace de tore
        String hostEspaceTore = params.getString("host_espace_tore","localhost");

        // Port de l'espace de tore
        int portEspaceTore = params.getInt("port_annuaire",9100);

        // Port RMI des agents
        int portRMI = params.getInt("port_od",9103);


        String name = "rmi://"+hostEspaceTore+":"+
            portEspaceTore+"/"+
            EspaceToreOD.NOM_ESPACE_TORE;
        System.out.println(name);
        EspaceToreODInt espace = (EspaceToreODInt)(Naming.lookup(name));
        
        // récrupération des tailles de la grille
        int nbX=espace.getNbX();
        int nbY=espace.getNbY();
        int tailleCellule=espace.getTailleCellule();
        int tailleCase = 15;

        // On crée le formulaire
        Formulaire form = new Formulaire("GRILLE",this,nbX*tailleCase+20,nbY*tailleCase+20);

        // On y ajoute la grille
        CanvasIHM  grilleihm = form.addGrilleIHM(nbX,nbY,tailleCase,null);
        form.afficher(50,50);

        // ==================================
        // Observer qui est notifie en RMI
        new ObserverEspaceToreRMI(portRMI,new ObserverGrille(grilleihm),espace);

    }

    public void     submit(Formulaire form,String nom)
    {
    }
}
