Subversion Repositories eFlore/Applications.cel

Rev

Rev 168 | 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.interfaces.Filtrable;
import org.tela_botanica.client.interfaces.Rafraichissable;

import com.google.gwt.user.client.ui.Label;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.form.DateField;

/**
 * Classe implémentant un filtre qui permet de rechercher une image par rapport
 * à la date associée, des critères plus fins viendront compléter cela
 * 
 * @author aurelien
 * 
 */
public class DateFiltreVue extends Panel implements Rafraichissable, Filtrable {

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

        /**
         * Le widget calendrier
         */
        private DateField filtreDate = null;

        /**
         * Booleen d'état du filtre
         */
        private boolean filtreModifie = false;

        /**
         * Constructeur sans argument (privé car ne doit pas être utilisé)
         */
        @SuppressWarnings("unused")
        private DateFiltreVue() {
                super();
        }

        /**
         * Constructeur avec arguments
         * 
         * @param im
         *            le médiateur à associer
         */
        public DateFiltreVue(ImageMediateur im) {
                super();
                setPaddings(5);
                setCollapsible(true);
                setBorder(false);
                iMediateur = im;

                Label labelRecherche = new Label("Par date :");
                add(labelRecherche);

                // on crée le calendrier et on définit le format de la date "jj/mm/aaaa"
                filtreDate = new DateField();
                filtreDate.setAutoWidth(true);
                filtreDate.setFormat("d/m/Y");

                add(filtreDate);
                ajouterListeners();
        }

        /**
         * Ajoute les listeners
         */
        public void ajouterListeners() {

        }

        /**
         * Méthode héritée de l'interface rafraichissable
         */
        public void rafraichir(Object nouvelleDonnees,
                        boolean repandreRaffraichissement) {

                filtreModifie = false;

        }

        /**
         * Méthode héritée de l'interface filtrable
         */
        public void valider() {

                filtreModifie = true;

        }

        /**
         * Accesseur pour le médiateur
         * 
         * @return le médiateur associé à la vue
         */
        @SuppressWarnings("unused")
        private ImageMediateur getIMediateur() {

                return iMediateur;
        }

        /**
         * Méthode héritée de l'interface filtrable
         */
        public boolean renvoyerEtatFiltre() {

                return filtreModifie;
        }

        /**
         * Méthode héritée de l'interface filtrable
         */
        public String renvoyerNomFiltre() {

                return "Recherche par date";
        }

        /**
         * Méthode héritée de l'interface filtrable
         */
        public String[] renvoyerValeursAFiltrer() {

                // si la date est valide
                if (filtreDate.isValid()) {
                        // on en sépare les composants
                        String dt = filtreDate.getRawValue();
                        String[] dates = dt.split("/");
                        if (dates.length == 3) {
                                // qu'on réassemble dans un autre format (américain) pour la
                                // base de donnée "aaaa-mm-jj"
                                String dateFormatee = dates[2] + "-" + dates[1] + "-"
                                                + dates[0];
                                String[] valeursFiltres = { "ci_meta_date", dateFormatee };
                                return valeursFiltres;
                        }
                }

                // si la date n'estp as valide on renvoie une chaine vide (ce qui
                // correspond à n'importe qu'elle date)
                String dateFormatee = "";
                String[] valeursFiltres = { "ci_meta_date", dateFormatee };
                return valeursFiltres;

        }

}