Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 8 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.observation;




import org.tela_botanica.client.CarnetEnLigneMediateur;
import org.tela_botanica.client.interfaces.iMediateur;
import org.tela_botanica.client.interfaces.iRetourObservation;
import org.tela_botanica.client.modeles.Observation;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

public class ObservationMediateur implements iMediateur{


        // Evenenements
        final static public  int NOMBRE_OBSERVATION=1;

        final static public  int LISTE_OBSERVATION=2;
        
        
        private CarnetEnLigneMediateur carnetEnLigneMediateur=null;  // Mediateur General
        private final ObservationModele observationModele=new ObservationModele();

        private Observation observation=null; 

        // Variable interne 
        private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica"; 

        // Composants graphiques
        
        private EtatConnexionVue etatConnexionVue=null; // Vue Etat de la connexion utilisateur
        private FormulaireDeConnexionVue formulaireDeConnexionVue=null; // Formulaire de connexion utilisateur
        private ListeObservationsVue listeObservationsVue = null;  // Liste de releves

    // 
                
        
        public ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur) {
                

                this.carnetEnLigneMediateur=carnetEnLigneMediateur;
                
                etatConnexionVue=new EtatConnexionVue(this);
                listeObservationsVue=new ListeObservationsVue(this);
                
                VerticalPanel panel=new VerticalPanel();
                
                panel.add(etatConnexionVue);
        
                panel.add(listeObservationsVue);
        

                RootPanel.get().add(panel);
                
                onInitialisation();
                
        }

        
        /// Methodes privees 

        /**
         * 
         * Initialisations
         * 
         */
        
        private void onInitialisation() {
        
        
                afficheEtatConnexion();
                onFiltrageListeObservation("all","all","all");
                
        
        }
        
        // Filtre  selection lieu
        
        /**
         * Action sur selection d'un lieu : affichage de la liste des taxons correspondants au filtrage
         */
        
        public void onFiltrageListeObservation(String id_loc, String loc,String lieu) {

                // Positionnement Filtre affichage
                listeObservationsVue.setIdLocation(id_loc);
                listeObservationsVue.setLocalite(loc);
                listeObservationsVue.setLieudit(lieu);
                listeObservationsVue.initialiser();

                // Affichage des filtres
                listeObservationsVue.displayFilter();

                
        }
        



        
        /// UTILISATEUR

        
        /**
         *  Affichage etat de la connexion
         */
        
        
        private void afficheEtatConnexion() {
                 if (!carnetEnLigneMediateur.getUtilisateur().isIdentifie()) {
                            etatConnexionVue.setEtat(texteDeconnexion,false);
                 }
                 else {
                    etatConnexionVue.setEtat(carnetEnLigneMediateur.getUtilisateur().getIdentifiant()+ " (deconnexion)",true);
                 }
                
        }

        
        /**
         * 
         * Affichage boite de connexion
         *
         */
        
        public void afficherDialogueConnexion() {
                
                  // TODO : singleton ? 
                  formulaireDeConnexionVue = new FormulaireDeConnexionVue(this);

                  // Position it roughly in the middle of the screen.
                  int left = (Window.getClientWidth() - 512) / 2;
                  int top = (Window.getClientHeight() - 256) / 2;
                  formulaireDeConnexionVue.setPopupPosition(left, top);
                  formulaireDeConnexionVue.show();
                
        }

        
        /**
         * Deconnexion de l'utilisateur en cours 
         */
        
        public void deconnecterUtilisateur() {
                
        //      carnetEnLigneMediateur.addListener(CarnetEnLigneMediateur.DECONNEXION,this);
                carnetEnLigneMediateur.deconnecterUtilisateur();
        
        }


        /**
         * Tentative de connexion utilisateur
         * @param login
         * @param password
         */
        
        
        public void connecterUtilisateur(String login, String password) {
                
        //      carnetEnLigneMediateur.addListener(CarnetEnLigneMediateur.CONNEXION,this);
                carnetEnLigneMediateur.connecterUtilisateur(login, password);

        }
 


        /// OBSERVATION
        
        /**
         * Recherche nombre d'enregistrement pour l'utilisateur et la localite en cours
         * 
         */
        
        
        public void getNombreObservation (String identifiantLocalite, String localite, String annee,  String mois,  String jour, String lieudit, String rechercheLibre ) {
                

                observationModele.getNombreObservation(
                                new iRetourObservation() {
                                        public void onRetour(Observation obs) {
                                                observation=obs;
                                                //fireEvent(NOMBRE_OBSERVATION); 
                                        }

                                        
                                }, carnetEnLigneMediateur.getUtilisateur().getIdentifiant(), identifiantLocalite, localite , annee, mois, jour, lieudit ,rechercheLibre
                                
                );
                
                
                  
        }

         public void getListeObservation (String identifiantLocalite, String localite, String annee, String mois, String jour, String lieudit, String rechercheLibre, int debut, int longueur) {

                        
                        observationModele.getListeObservation(
                                        new iRetourObservation() {
                                                public void onRetour(Observation obs) {
                                                        observation=obs;
                                                        //fireEvent(LISTE_OBSERVATION); 
                                                }

                                                
                                        }, carnetEnLigneMediateur.getUtilisateur().getIdentifiant(), identifiantLocalite, localite , annee, mois, jour, lieudit ,rechercheLibre, debut, longueur
                                        
                        );

        }


                        
         public Observation getObservation() {
                        return observation;
        }


        

        /// EVENEMENTS 
        
/**
 * Evenements
 * 
 */     
        /*
        public void handleEvent(BaseEvent be) {
                switch (be.type) {
                        case CarnetEnLigneMediateur.DECONNEXION:
                                afficheEtatConnexion();
                                break;
                        case CarnetEnLigneMediateur.CONNEXION:
                                if (carnetEnLigneMediateur.getUtilisateur().isIdentifie()) {
                                        formulaireDeConnexionVue.hide(); 
                                        afficheEtatConnexion();
                                }
                                else {
                                        formulaireDeConnexionVue.afficherMessageAlerte(); // Erreur identification
                                }
                                break;
                }
        }

*/





                        

}