Subversion Repositories eFlore/Applications.cel

Rev

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

package org.tela_botanica.client.vues.observation;

import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.interfaces.Filtrable;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.observation.ObservationMediateur;

import com.google.gwt.user.client.ui.Label;
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.event.KeyListener;
import com.gwtext.client.widgets.form.TextField;

public class MotsClesObsVue extends Panel implements Filtrable, Rafraichissable {
        
        private ObservationMediateur oMediateur = null ; 
        
        /**
         * Barre de recherche
         * 
         */
        private TextField champRecherche = null;

        /**
         * Booleen d'etat du filtre
         */
        private boolean filtreModifie = false;

        /**
         * mot(s) à chercher
         */
        private String motsAChercher = "";
        
        /**
         * bouton de validation
         */
        private Button ok = null ;
        
        private Button afficherNuage = null;
        
        /**
         * Constructeur sans argument (privé car ne doit pas être utilisé)
         */
        @SuppressWarnings("unused")
        private MotsClesObsVue() {
                super();
        }

        /**
         * Constructeur avec médiateur
         * 
         * @param im
         */
        public MotsClesObsVue(ObservationMediateur om) {
                super();
                oMediateur = om;

                Label labelRecherche = new Label(Msg.Get("mots-cles") + " :");
                champRecherche = new TextField();
                ok = new Button(Msg.get("rechercher"));
                afficherNuage = new Button(Msg.get("voir-mots-cles"));

                add(labelRecherche);
                add(champRecherche);
                add(ok);
                add(afficherNuage);

                setPaddings(5);
                setBorder(false);
                setCollapsible(true);

                ajouterListeners();
        }

        /**
         * ajoute des listeners
         */
        private void ajouterListeners() {

                // gestion de la touche entrée
                champRecherche.addKeyListener(EventObject.ENTER, new KeyListener() {

                        @Override
                        public void onKey(int key, EventObject e) {

                                valider();
                        }

                });
                
                ok.addListener(new ButtonListenerAdapter() {

                        @Override
                        public void onClick(Button button, EventObject e) {
                                valider();
                        }
                });
                
                afficherNuage.addListener(new ButtonListenerAdapter() {

                        @Override
                        public void onClick(Button button, EventObject e) {
                //              oMediateur.afficherNuageMotsCles();
                        }
                });
        }

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

                if(nouvelleDonnees instanceof String) {
                        
                        champRecherche.setValue(champRecherche.getValueAsString()+" "+(String)nouvelleDonnees);
                }
                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 Mots clés";
        }

        /**
         * 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() {

                String[] valeurFiltre = new String[0];
                if(!motsAChercher.equals("")) {
                        valeurFiltre = new String[2];
                        valeurFiltre[0] = "mots_cles";
                        valeurFiltre[1] = motsAChercher;
                }
                return valeurFiltre;
        }

        /**
         * Accesseur pour le médiateur
         * 
         * @return le médiateur associé
         */
        public ObservationMediateur getIMediateur() {
                return oMediateur;
        }

        /**
         * 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();
                oMediateur.obtenirNombreObservation();
        }

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

                champRecherche.setValue(motsAChercher);
        }

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