Subversion Repositories eFlore/Applications.del

Rev

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

package org.tela_botanica.del.client.composants.motsclesimages.propositions;

import org.tela_botanica.del.client.composants.presenteur.Presenteur;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;

public class MotClePropositionPresenteur extends Presenteur{

        public interface Vue extends IsWidget {
                public void setMotCle(String motcle);
                public HasClickHandlers getLienMotCle();
                public void toggleCb();
                public boolean estAAjouter();
                public void setEstAAjouter();
                public HasClickHandlers getAjouterMotCle();
        }
        
        private Vue vue;
        private String motcle;
        
        public MotClePropositionPresenteur(Vue vue, String motCle) {
                this.vue = vue;
                this.motcle = motCle;
                vue.setMotCle(motCle);
        }
        @Override
        public void go(HasWidgets composite) {
                composite.add(vue.asWidget());
                gererEvenements();
        }

        @Override
        protected void gererEvenements() {
                
                /* Attention : dans la gestion des évènements, comme la case à cocher est contenu dans 
                 * le lien Mot Cle, lorsque je clique sur la case directement, l'application :
                 * - change la valeur de la case suite à l'évènement sur la case
                 * - rechange la valeur de la case suite à l'évènement sur le lien
                 * Il est donc impossible de changer la valeur de la case !
                 * 
                 *  La solution consiste à ajouter un changement de valeur lorsqu'on clique sur la case :
                 */
                vue.getAjouterMotCle().addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                vue.toggleCb();                 
                                event.stopPropagation();
                        }
                });
                
                // Ajout du changement de valeur de la case lors du clic sur la case
                vue.getLienMotCle().addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                vue.toggleCb(); 
                                event.stopPropagation();
                        }
                });
                
        }

        public boolean estAAjouter() {
                return vue.estAAjouter();
        }
        
        public void setEstAAjouter() {
                vue.setEstAAjouter();
        }
        
        public String getTag() {
                return this.motcle;
        }
        
        
}