Subversion Repositories eFlore/Applications.del

Rev

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

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