Subversion Repositories eFlore/Applications.cel

Rev

Rev 5 | Go to most recent revision | Blame | Compare with Previous | 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.core.EventObject;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.KeyListener;
import com.gwtext.client.widgets.form.TextField;

/**
 * Fenêtre de recherche pour les mots clés, contenant un champ texte, 
 * et un bouton cliquable
 * @author aurelien
 *
 */
public class BarreRechercheFiltreVue extends Panel implements Rafraichissable, Filtrable {

        /**
         * Médiateur associé à la vue
         */
        private ImageMediateur iMediateur = null ;
        
        /**
         * Barre de recherche 
         * 
         */
        private TextField champRecherche = null ;
        
        /**
         * Booleen d'etat du filtre
         */
        private boolean filtreModifie = false ;
        
        /**
         * mot(s) à chercher
         */
        private String motsAChercher = "" ;
        
        /**
         * Constructeur sans argument (privé car ne doit pas être utilisé)
         */
        @SuppressWarnings("unused")
        private BarreRechercheFiltreVue()
        {
                super() ;
        }
        
        /**
         * Constructeur avec médiateur 
         * @param im
         */
        public BarreRechercheFiltreVue(ImageMediateur im)
        {
                super() ;
                iMediateur = im ;
                
                Label labelRecherche = new Label("Commentaires :") ;
                champRecherche = new TextField() ;
                
                add(labelRecherche) ;
                add(champRecherche) ;
                
                setPaddings(5) ;
                setBorder(false) ;
                setAutoWidth(true) ;
                setCollapsible(true) ;
                
                ajouterListeners() ;
        }
        
        /**
         * ajoute des listeners
         */
        private void ajouterListeners()
        {
                
                // gestion de la touche entrée
                champRecherche.addKeyListener(EventObject.ENTER, new KeyListener() {

                        public void onKey(int key, EventObject e) {
                                
                                valider() ;
                                getIMediateur().obtenirPhotoGalerie(getIMediateur().getFiltreCommentaires()) ;
                        }
                        
                        
                }) ;
        }
        
        /**
         * Fonction héritée de l'interface rafraichissable
         */
        public void rafraichir(Object nouvelleDonnees,
                        boolean repandreRaffraichissement) {
                
                filtreModifie = false ;
                
        }

        /**
         * renvoie l'état du filtre (modifié ou non)
         * @return l'état du filtre
         */
        public boolean renvoyerEtatFiltre() {
                
                return filtreModifie ;
        }

        /**
         * Renvoie le nom du filtre
         * @return le nom du filtre
         */
        public String renvoyerNomFiltre() {
                
                return "Recherche Commentaires" ;
        }
        
        /**
         * Renvoie un tableau contenant le nom du champ à filtrer et la valeur
         * @return un tableau contenant le nom du champ à filtrer et sa valeur
         */
        public String[] renvoyerValeursAFiltrer() {
                
                String[] valeurFiltre = {"ci_meta_comment" , motsAChercher } ;
                return valeurFiltre ;
        }
        
        /**
         * Accesseur pour le médiateur
         * @return le médiateur associé 
         */
        public ImageMediateur getIMediateur()
        {
                return iMediateur ;
        }
        
        /**
         * Effectue quelque opérations dans la classe et envoie une requête de données
         * au médiateur  
         */
        public void valider()
        {
                filtreModifie = true ;
                motsAChercher = champRecherche.getText() ;
        }
        
        /**
         * Affiche la fenetre
         */
        public void afficherFiltre() {
                
                champRecherche.setValue(motsAChercher) ;
        }

}