Subversion Repositories eFlore/Applications.del

Rev

Rev 276 | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition;

import java.util.Date;

import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
import org.tela_botanica.del.client.utils.MockDatasource;

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.event.shared.HandlerRegistration;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.PushButton;

public class BarreRepartitionVotePresenteur {
        
        public interface Vue extends IsWidget {
                public void afficherVotes(int pourcentage, String NomTaxon);
                public IsWidget getBarreRepartitionHtmlBrut();
                public HasClickHandlers getBoutonOui();
                public HasClickHandlers getBoutonNon();
                public void setVoteOuiEffectue();
                public void setVoteNonEffectue();
        }
        
        private Vue vue;
        private MoyenneVote moyenneVote;
        
        public BarreRepartitionVotePresenteur(Vue vue) {
                this.vue = vue;
                gererEvenements();
        }
        
        public void go(HasWidgets container) {
                container.add(vue.asWidget());
        }

        public void afficherVotes(MoyenneVote moyenneVote) {
                this.moyenneVote = moyenneVote;
                vue.afficherVotes(moyenneVote.getScore(), moyenneVote.getIntituleAssocie());
        }
        
        public Vue getBarreRepartitionVoteVue() {
                return vue;
        }
        
        public MoyenneVote getMoyenneVote() {
                return moyenneVote;
        }
        
        public IsWidget getBarreRepartitionVoteVueHTML() {
                return vue.getBarreRepartitionHtmlBrut();
        }
        
        public void gererEvenements() {
                
                BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
                        
                        @Override
                        public void onVoteDetermination(VoteDetermination event) {
                                                                
                                if(event.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
                                        moyenneVote.getPropositionAssociee().ajouterVoteDetermination(event);
                                        moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
                                }
                                
                                afficherVotes(moyenneVote);     
                        }
                });
                
                vue.getBoutonOui().addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                voter(true);
                        }               
                });
                
                vue.getBoutonNon().addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                voter(false);
                                vue.setVoteNonEffectue();
                        }               
                });
        }
        
        public void voter(boolean oui) {
                
                VoteDetermination vd = new VoteDetermination();
                vd.setPropositionDetermination(moyenneVote.getPropositionAssociee());
                vd.setContributeur("testeur");
                vd.setDate(new Date());
                
                int valeurVote = oui ? 1 : 0;
                vd.setVote(valeurVote);
                vd.setId("3");
                
                if(oui) {vue.setVoteOuiEffectue();} else {vue.setVoteNonEffectue();}

                BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd));
        }
}