Subversion Repositories eFlore/Applications.cel

Rev

Rev 195 | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues.image;

import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;

import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.layout.VerticalLayout;

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

        /**
         * Le médiateur associé
         */
        private ImageMediateur iMediateur = null;

        /**
         * L'arbre pour la recherche par mots clés
         */
        private ArbreMotsClesFiltreVue motsClesFiltres = null;
        /**
         * La barre de recherche par commentaires
         */
        private BarreRechercheFiltreVue commFiltresVues = null;

        /**
         * Recherche par date
         */
        private DateFiltreVue dateFiltreVues = null;

        /**
         * Recherche par contenu du tampon
         */
        private SelectionFiltreVue selectionFiltreVue = null;

        /**
         * Bouton de validation
         */
        private Button valider = null;

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

        /**
         * Constructeur avec arguments
         * 
         * @param im
         *            le médiateur à associer
         */
        public PanneauFiltresImagesVues(ImageMediateur im) {
                super("Filtres");
                iMediateur = im;
                
                this.setCollapsible(true);
                setLayout(new VerticalLayout());

                commFiltresVues = new BarreRechercheFiltreVue(im);
                add(commFiltresVues);

                dateFiltreVues = new DateFiltreVue(im);
                add(dateFiltreVues);

                selectionFiltreVue = new SelectionFiltreVue(im);
                add(selectionFiltreVue);

                motsClesFiltres = new ArbreMotsClesFiltreVue(im);
                add(motsClesFiltres);

                Panel panelValidation = new Panel();
                valider = new Button("Rechercher");
                panelValidation.add(valider);
                panelValidation.setBorder(false);
                add(panelValidation);

                valider.addListener(new ButtonListenerAdapter() {

                        public void onClick(Button button, EventObject e) {

                                iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());

                        }

                });
        }

        /**
         * Accesseur pour le filtre des mots clés
         * 
         * @return le filtre des mots clés
         */
        public ArbreMotsClesFiltreVue getMotsClesFiltre() {
                return motsClesFiltres;
        }

        /**
         * Accesseur pour le filtre par commentaire
         * 
         * @return le filtre des commentaires
         */
        public BarreRechercheFiltreVue getBarreRecherche() {
                return commFiltresVues;
        }

        /**
         * 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 (motsClesFiltres.renvoyerEtatFiltre()
                                || commFiltresVues.renvoyerEtatFiltre()
                                || dateFiltreVues.renvoyerEtatFiltre() 
                                || selectionFiltreVue.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 = { motsClesFiltres.renvoyerValeursAFiltrer(),
                                commFiltresVues.renvoyerValeursAFiltrer(),
                                dateFiltreVues.renvoyerValeursAFiltrer(),
                                selectionFiltreVue.renvoyerValeursAFiltrer() };
                
                return filtres;
        }

}