Subversion Repositories eFlore/Applications.cel

Rev

Rev 2 | Go to most recent revision | Blame | 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; } }
         * 
         */

}