Subversion Repositories eFlore/Applications.del

Rev

Rev 638 | Rev 833 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
638 aurelien 1
package org.tela_botanica.del.client.composants.votes.barrerepartition;
140 aurelien 2
 
186 aurelien 3
import java.util.Date;
4
 
565 aurelien 5
import org.tela_botanica.del.client.cache.CacheClient;
186 aurelien 6
import org.tela_botanica.del.client.modeles.MoyenneVote;
7
import org.tela_botanica.del.client.modeles.VoteDetermination;
248 aurelien 8
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
9
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
10
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
186 aurelien 11
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
140 aurelien 12
 
186 aurelien 13
import com.google.gwt.event.dom.client.ClickEvent;
14
import com.google.gwt.event.dom.client.ClickHandler;
276 aurelien 15
import com.google.gwt.event.dom.client.HasClickHandlers;
611 gduche 16
import com.google.gwt.user.client.Window;
140 aurelien 17
import com.google.gwt.user.client.ui.HasWidgets;
276 aurelien 18
import com.google.gwt.user.client.ui.IsWidget;
140 aurelien 19
 
20
public class BarreRepartitionVotePresenteur {
21
 
276 aurelien 22
	public interface Vue extends IsWidget {
303 aurelien 23
		public void afficherVotes(int pourcentage, String NomTaxon);
24
		public HasClickHandlers getBoutonOui();
25
		public HasClickHandlers getBoutonNon();
26
		public void setVoteOuiEffectue();
27
		public void setVoteNonEffectue();
672 gduche 28
		public void afficherVotePrisEnCompte(boolean b);
276 aurelien 29
	}
186 aurelien 30
 
276 aurelien 31
	private Vue vue;
186 aurelien 32
	private MoyenneVote moyenneVote;
33
 
276 aurelien 34
	public BarreRepartitionVotePresenteur(Vue vue) {
35
		this.vue = vue;
227 aurelien 36
		gererEvenements();
140 aurelien 37
	}
276 aurelien 38
 
39
	public void go(HasWidgets container) {
40
		container.add(vue.asWidget());
41
	}
140 aurelien 42
 
186 aurelien 43
	public void afficherVotes(MoyenneVote moyenneVote) {
44
		this.moyenneVote = moyenneVote;
611 gduche 45
		int score = moyenneVote.getScore();
46
		String intitule =moyenneVote.getIntituleAssocie();
47
		vue.afficherVotes(score, intitule);
140 aurelien 48
	}
49
 
276 aurelien 50
	public Vue getBarreRepartitionVoteVue() {
140 aurelien 51
		return vue;
52
	}
172 aurelien 53
 
276 aurelien 54
	public MoyenneVote getMoyenneVote() {
55
		return moyenneVote;
56
	}
57
 
186 aurelien 58
	public void gererEvenements() {
59
 
248 aurelien 60
		BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
186 aurelien 61
			@Override
629 aurelien 62
			public void onVoteDetermination(VoteDetermination event) {
248 aurelien 63
				if(event.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
64
					moyenneVote.getPropositionAssociee().ajouterVoteDetermination(event);
65
					moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
611 gduche 66
					afficherVotes(moyenneVote);
629 aurelien 67
				}
186 aurelien 68
			}
69
		});
70
 
248 aurelien 71
		vue.getBoutonOui().addClickHandler(new ClickHandler() {
72
			@Override
73
			public void onClick(ClickEvent event) {
74
				voter(true);
672 gduche 75
				vue.afficherVotePrisEnCompte(true);
248 aurelien 76
			}
77
		});
78
 
186 aurelien 79
		vue.getBoutonNon().addClickHandler(new ClickHandler() {
80
			@Override
81
			public void onClick(ClickEvent event) {
248 aurelien 82
				voter(false);
276 aurelien 83
				vue.setVoteNonEffectue();
672 gduche 84
				vue.afficherVotePrisEnCompte(false);
186 aurelien 85
			}
86
		});
87
	}
248 aurelien 88
 
89
	public void voter(boolean oui) {
90
 
91
		VoteDetermination vd = new VoteDetermination();
92
		vd.setPropositionDetermination(moyenneVote.getPropositionAssociee());
565 aurelien 93
		vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId());
248 aurelien 94
		vd.setDate(new Date());
95
 
96
		int valeurVote = oui ? 1 : 0;
97
		vd.setVote(valeurVote);
565 aurelien 98
		vd.setId(CacheClient.getInstance().getUtilisateur().getId());
248 aurelien 99
 
611 gduche 100
		if(oui) {
101
			vue.setVoteOuiEffectue();
102
		} else {
103
			vue.setVoteNonEffectue();
104
		}
105
 
620 aurelien 106
		moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd);
248 aurelien 107
		BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd));
108
	}
140 aurelien 109
}