Subversion Repositories eFlore/Applications.cel

Rev

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

package org.tela_botanica.client.vues.observation;

import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.observation.ObservationMediateur;
import org.tela_botanica.client.vues.observation.filtres.ArbreDateObservationFiltreVue;
import org.tela_botanica.client.vues.observation.filtres.ArbreEntiteGeographiqueObservationFiltreVue;
import org.tela_botanica.client.vues.observation.filtres.ArbreMotsClesObservationVue;
import org.tela_botanica.client.vues.observation.filtres.RechercheLibreVue;

import com.gwtext.client.core.Ext;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.layout.RowLayout;
import com.gwtext.client.widgets.layout.RowLayoutData;

/**
 * Panneau contenant les filtres qu'on peut appliquer aux images
 * 
 * @author aurelien
 * 
 */
public class PanneauFiltresObservationVues extends Panel {

        /**
         * Le médiateur associé
         */
        private ObservationMediateur observationMediateur = null;
        
        /**
         * L'arbre pour la recherche entite geographique
         * 
         */
        private ArbreEntiteGeographiqueObservationFiltreVue arbreEntiteGeographiqueObservationFiltreVue = null;
        
        /**
         * L'arbre pour la recherche date
         * 
         */
        private ArbreDateObservationFiltreVue arbreDateObservationFiltreVue = null;
        
        private ArbreMotsClesObservationVue arbreMotsClesObservationVue = null ;
        
        private RechercheLibreVue rechercheLibreVue = null;
        
        
        

        /**
         * Construcuteur sans argument (privé car on ne doit pas l'utiliser)
         */
        @SuppressWarnings("unused")
        private PanneauFiltresObservationVues() {
                super();
        }

        /**
         * Constructeur avec arguments
         * 
         * @param im
         *            le médiateur à associer
         */
        public PanneauFiltresObservationVues(ObservationMediateur obs) {
                
                super(Msg.get("filtres"));
                
                observationMediateur = obs;
                
                this.setCollapsible(true);
                //this.setLayout(new AnchorLayout()) ;
                this.setLayout(new RowLayout());
                
                rechercheLibreVue = new RechercheLibreVue(observationMediateur);
                
                if(Ext.isIE()) {
                        add(rechercheLibreVue);
                        rechercheLibreVue.setHeight(110);
                } else {
                        add(rechercheLibreVue,new RowLayoutData(100));
                }
                rechercheLibreVue.setWidth("100%") ;
                rechercheLibreVue.setBorder(false);
                
                arbreEntiteGeographiqueObservationFiltreVue = new ArbreEntiteGeographiqueObservationFiltreVue(observationMediateur);
                add(arbreEntiteGeographiqueObservationFiltreVue,new RowLayoutData());
                //arbreEntiteGeographiqueObservationFiltreVue.setHeight(300) ;
                arbreEntiteGeographiqueObservationFiltreVue.setWidth("100%") ;
                arbreEntiteGeographiqueObservationFiltreVue.setBorder(false);
                
                arbreDateObservationFiltreVue = new ArbreDateObservationFiltreVue(observationMediateur) ;
                //arbreDateObservationFiltreVue.setHeight(300) ;
                add(arbreDateObservationFiltreVue, new RowLayoutData());
                arbreDateObservationFiltreVue.setWidth("100%") ;
                arbreDateObservationFiltreVue.setBorder(false);
                
                arbreMotsClesObservationVue = new ArbreMotsClesObservationVue(observationMediateur);
                add(arbreMotsClesObservationVue, new RowLayoutData());
                arbreMotsClesObservationVue.setWidth("100%") ;
                arbreMotsClesObservationVue.setTitle(Msg.get("projets"));
                arbreMotsClesObservationVue.setTitleCollapse(true);
                arbreMotsClesObservationVue.setCollapsible(true);
                arbreMotsClesObservationVue.setBorder(false);
                
        }

        /**
         * Accesseur pour le filtre des mots clés
         * 
         * @return le filtre des mots clés
         */
        
        public ArbreEntiteGeographiqueObservationFiltreVue getArbreEntiteGeographiqueObservationFiltreVue() {
                return arbreEntiteGeographiqueObservationFiltreVue;
        }
        
        public ArbreDateObservationFiltreVue getArbreDateObservationFiltreVue() {
                return arbreDateObservationFiltreVue;
        }
        
        public ArbreMotsClesObservationVue getArbreMotsClesObservationVue() {
                return arbreMotsClesObservationVue;
        }
        
        public RechercheLibreVue getRechercheLibreVue() {
                return rechercheLibreVue;
        }
        
        /**
         * Renvoie un booléen indiquant si un des filtres a été modifié
         * 
         * @return true sur un des filtres est modifié, false sinon
         */
        public boolean renvoyerEtatFiltre() {

                return (arbreEntiteGeographiqueObservationFiltreVue.renvoyerEtatFiltre() || arbreDateObservationFiltreVue.renvoyerEtatFiltre() || rechercheLibreVue.renvoyerEtatFiltre());
                                
        }

        /**
         * Renvoie un tableau à 2 niveaux contenant des paires "nom_de_filtre",
         * "valeur"
         * 
         * @return un tableau contenant les noms et les valeurs à filtrer
         */
        public String[][] renvoyerValeursAFiltrer() {
                String[][] filtres = { arbreEntiteGeographiqueObservationFiltreVue.renvoyerValeursAFiltrer(),
                                                                arbreDateObservationFiltreVue.renvoyerValeursAFiltrer(),
                                                                arbreMotsClesObservationVue.renvoyerValeursAFiltrer(),
                                                                rechercheLibreVue.renvoyerValeursAFiltrer()
                                 };
                
                return filtres;
        }
        
        public void viderFiltres() {
                arbreEntiteGeographiqueObservationFiltreVue.viderFiltre();
                arbreDateObservationFiltreVue.viderFiltre();
                arbreMotsClesObservationVue.viderFiltre();
                rechercheLibreVue.viderFiltre();
        }
        
        public void viderFiltres(String nom) {
                
                if(nom.equals("id_mots_cles")) {
                        arbreMotsClesObservationVue.viderFiltre();
                }
                
                if(nom.equals("recherche")) {
                        rechercheLibreVue.viderFiltre();
                }
                
                if(nom.equals("annee") || nom.equals("mois") || nom.equals("jour")) {
                        arbreDateObservationFiltreVue.viderFiltre(nom);
                }
                
                if(nom.equals("pays") || nom.equals("station") || nom.equals("lieudit") || nom.equals("departement") || nom.equals("localite")) {
                        arbreEntiteGeographiqueObservationFiltreVue.viderFiltre(nom);
                }

        }

}