Subversion Repositories eFlore/Archives.cel-v2

Rev

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.core.client.JavaScriptObject;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Window;
import com.gwtext.client.widgets.event.ButtonListener;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.event.KeyListener;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.layout.BorderLayout;
import com.gwtext.client.widgets.menu.Menu;

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

        /**
         * Médiateur associé à la vue
         */
        private ImageMediateur iMediateur = null ;
        
        /**
         * Barre de recherche 
         * 
         */
        private TextField champRecherche = null ;
        
        /**
         * Bouton rechercher
         */
        private Button rechercher = 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é)
         */
        private BarreRechercheFiltreVue()
        {
                super() ;
        }
        
        /**
         * Constructeur avec médiateur 
         * @param im
         */
        public BarreRechercheFiltreVue(ImageMediateur im)
        {
                super("Recherche dans les commentaires") ;
                iMediateur = im ;
                
                champRecherche = new TextField() ;
                rechercher = new Button("Rechercher") ;
                
                add(champRecherche) ;
                add(rechercher) ;
                
                setSize(250, 100) ;
                setCollapsible(true) ;
                this.setCloseAction(HIDE) ;
                
                ajouterListeners() ;
        }
        
        /**
         * ajoute des listeners
         */
        private void ajouterListeners()
        {
                // gestion du clic sur le bouton
                rechercher.addListener(new ButtonListenerAdapter() {

                        public void onClick(Button button, EventObject e) {
                                
                                validationEtRequete() ;
                        }
                        
                }) ;
                
                // gestion de la touche entrée
                champRecherche.addKeyListener(EventObject.ENTER, new KeyListener() {

                        public void onKey(int key, EventObject e) {
                                
                                validationEtRequete() ;
                        }
                        
                        
                }) ;
        }
        
        /**
         * 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 validationEtRequete()
        {
                filtreModifie = true ;
                motsAChercher = champRecherche.getText() ;
                getIMediateur().obtenirPhotoGalerie(getIMediateur().getFiltreCommentaires()) ;
        }
        
        /**
         * Affiche la fenetre
         */
        public void afficherFiltre() {
                
                show() ;
                champRecherche.setValue(motsAChercher) ;
        }

}