Subversion Repositories eFlore/Applications.cel

Rev

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

package org.tela_botanica.client.vues;


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 aimge 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("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 ;
                
        }

}