Subversion Repositories eFlore/Applications.cel

Rev

Rev 2757 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues.image.filtres;

import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.Filtrable;
import org.tela_botanica.client.interfaces.Rafraichissable;

import com.gwtext.client.core.EventCallback;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.layout.HorizontalLayout;

/**
 * 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;
        
        private Button boutonRechercher = null;

        /**
         * mot(s) à chercher
         */
        private String motsAChercher = "";
        
        private final int KEY_ENTER = 13;

        /**
         * 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();
                setLayout(new HorizontalLayout(3));
                iMediateur = im;

                champRecherche = new TextField();
                
                boutonRechercher = new Button(Msg.get("ok"));

                add(champRecherche);
                add(boutonRechercher);

                setPaddings(5);
                setBorder(false);
                setAutoWidth(true);
                setCollapsible(true);
                
                ajouterListeners();
        }

        /**
         * ajoute des listeners
         */
        public void ajouterListeners() {
                
                        boutonRechercher.addListener(new ButtonListenerAdapter() {
        
                                @Override
                                public void onClick(Button button, EventObject e) {
                                        valider();
                                        iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());
                                }
                        });
                        
                        champRecherche.addKeyPressListener(new EventCallback()  {
                        
                    @Override
                                public void execute(EventObject e) {
                                          
                                switch(e.getKey()) {
                                        case KEY_ENTER:
                                                valider();
                                                iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());
                                        break;
                                }
                    }
                        });
        }

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

                filtreModifie = false;

        }

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

                return filtreModifie;
        }

        /**
         * Renvoie le nom du filtre
         * 
         * @return le nom du filtre
         */
        @Override
        public String renvoyerNomFiltre() {

                return "Recherche ";
        }

        /**
         * Renvoie un tableau contenant le nom du champ à filtrer et la valeur
         * 
         * @return un tableau contenant le nom du champ à filtrer et sa valeur
         */
        @Override
        public String[] renvoyerValeursAFiltrer() {

                valider() ;
                String[] valeurFiltre = { "recherche", 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
         */
        @Override
        public void valider() {
                filtreModifie = true;
                motsAChercher = champRecherche.getText();
        }

        /**
         * Affiche la fenetre
         */
        public void afficherFiltre() {

                champRecherche.setValue(motsAChercher);
        }

        @Override
        public void viderFiltre() {
                champRecherche.setValue("");
        }

}