Subversion Repositories eFlore/Applications.cel

Rev

Rev 41 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client.observation;


import java.util.Iterator;
import org.tela_botanica.client.CarnetEnLigneMediateur;
import org.tela_botanica.client.interfaces.FournisseurListe;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.ListeObservation;
import org.tela_botanica.client.modeles.Observation;
import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;
import org.tela_botanica.client.vues.ListeObservationVue;

import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.MemoryProxy;
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.TabPanel;

/**
 * Mediateur gérant les interactions entre vues et les echanges de données
 * C'est un singleton. 
 * @author aurelien
 *
 */
public class ObservationMediateur {
        
        /**
         * booleen qui verifie l'unicite de l'instance (donc static)
         */
        private static boolean estInstancie = false ;

        /**
         * pointeur sur le médiateur (pour le pattern singleton)
         */
        private static ObservationMediateur thisMediateur = null ;  
        
        /** Mediateur general de l'application carnet en ligne
         * 
         * 
         */
        
        private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
        
        
        /**
         * modele de données
         */
        private ObservationModele observationModele = null ;
        
        
        /**
         * panneau principal des Observation (onglet "observation")
         */
        private final Panel panneauPrincipalObservation = new Panel("Observation");
        
        /**
         * panneau a onglet pour la liste
         */ 
        private TabPanel ongletsObservation = null ;
        
        /**
         * conteneur du panneau a onglets
         */
        private Panel panneauMenuEtOngletsObservation = null ;
        
        /**
         * liste détaillée des Observations
         */
        private ListeObservationVue listeObservation = null ;
        
        /**
         * Saisie des Observations
         */
        
        private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
        /**
         * l'indice du dernier onglet sélectionné
         */
        private int dernierIndexOnglet = 0 ; 
        
        /**
         * booleen explicitant s'il y a une selection en cours
         */
        private boolean selection = false ;

        
        
        /**
         * Le store contenant les données à afficher, que le modèle transmet au médiateur quand il le demande
         */
        private Store st = null ;
        
        
        
        
        /**
         * La liste des observations affichées en cours (verifier utilité)
         */
        
        private ListeObservation cacheObservation = new ListeObservation(0) ;
        /**
        
        
        
        /**
         * constructeur privé (on accède a la classe par la méthode getInstance
         */
        
        
        private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
        {
                this.carnetEnLigneMediateur=carnetEnLigneMediateur;
                
                // on crée un modèle
                observationModele = ObservationModele.Instance(this);
                
                
                // on gère la mise en page du panneau principal
                //panneauPrincipalObservation.setLayout(new BorderLayout());
                
                // on crée le panneau qui contient les differentes onglets ainsi que le menu supérieur
        //      panneauMenuEtOngletsObservation = new Panel("gg") ;
        //      panneauMenuEtOngletsObservation.setLayout(new BorderLayout()) ;
                
                // le panneau à onglet qui contient la vue
                //ongletsObservation = new TabPanel();
                
                
                // la liste des observations
                
                //Panel panneauListeObservation = new Panel("Liste");
                
                listeObservation = new ListeObservationVue(this);
                
                
                // Le formulaire de saisie / modification d'observation
                
                formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);

                
                //panneauListeObservation.setLayout(new FitLayout());
                //panneauListeObservation.setSize(600,600);
                //panneauListeObservation.add(listeObservation);
                
                
                // on ajoute les panneaux au panneau à onglets
                //ongletsObservation.add(panneauListeObservation);
                
                
                // les onglets au centre
//              panneauMenuEtOngletsObservation.add(ongletsObservation,regionCentre);
                
                // on ajoute le panneau qui contient le menu et les onglets d'images au centre
                //panneauPrincipalObservation.add(panneauMenuEtOngletsObservation,regionCentre);
                
                panneauPrincipalObservation.add(formulaireSaisieObservationVue);
        
                panneauPrincipalObservation.add(listeObservation);
                
        
        

        }


        /**
         * Retourne une instance de manière unique
         * @return l'instance unique du médiateur
         */
        public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
        {
                        if(!estInstancie || thisMediateur == null)
                        {
                                estInstancie = true ;
                                thisMediateur = new ObservationMediateur(carnetEnLigneMediateur) ;
                        }
                        
                        return thisMediateur ;  
        }
        
        
        
        /**
         * envoie au modèle une demande de mise a jour
         */


        public void obtenirNombreObservation() {
                
        
                        listeObservation.masquerChargement();
                    observationModele.obtenirNombreObservation(listeObservation) ;
                
        }
        
        /**
         * envoie au modèle une demande de mise a jour
         */


        public void obtenirListeObservation() {
                

                        observationModele.obtenirListeObservation(listeObservation,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;
                        
                        
        }       
        
        /**
         * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
         * sous forme de tableau [nom, valeur]
         * @return Les noms et valeurs des filtres
         */
        public String[][] renvoyerFiltres()
        {
                String[][] valeursFiltres = { {"",""} } ;
                
                
                return valeursFiltres ;
        }


        public String getIdentifiant() {
                
                return carnetEnLigneMediateur.getUtilisateur().getIdentifiant();
        
        }


        public Panel getPanneauPrincipalObservation() {
                return panneauPrincipalObservation;
        }
        
        
        
        
        
        /**
         * Met à jour les barre d'outils avec des nouvelles valeurs
         * @param pageMax le nombre de pages
         * @param pageEncours la page en cours
         * @param taillePage la taille de page
         * @param nbElement le nombre d'élements par page
         */
        public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) 
        {
                                
                int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
                listeObservation.getToolBarVue().rafraichir(pages, false) ;
                
        }
        
        


        /**
         *  
         * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne 
         * @param r : la vue demandeuse de donnee
         * @param critere : les criteres de selection
         */
        
        public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
                
                observationModele.obtenirListeReferentielCommune(r,critere) ;

                
        }
        
        /**
         *  
         * Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne 
         * @param r : la vue demandeuse de donnee
         * @param critere : les criteres de selection
         */
        
        public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
                
                observationModele.obtenirListeReferentielNom(r,critere) ;

                
        }

        
        /**
         *  
         * Lance la creation d'une observation  
         * @param r : la vue demandeuse de donnee
         * @param critere : les criteres de selection
         */
        
        public void ajouterObservation(Observation obs) {
                
        //      observationModele.ajouterObservation(this, obs) ;
                
        }
        
        public void clicListeObservation(int rowIndex) {
                
        }


        public void montrerContextMenu(EventObject e) {
                
                
                
        }

        public void doubleClicListeObservation(int rowIndex) {
                
                
        }

        
        

        
        
}