Subversion Repositories eFlore/Applications.cel

Rev

Rev 168 | Rev 638 | Go to most recent revision | Blame | Compare with Previous | 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.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("Par 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() {

                valider() ;
                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);
        }

}