Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
480 benjamin 1
package org.tela_botanica.del.client.vues.rechercheobservations.resultats.observationdeterminations;
436 benjamin 2
 
3
import java.util.List;
4
 
5
import org.tela_botanica.del.client.i18n.I18n;
6
import org.tela_botanica.del.client.modeles.PropositionDetermination;
882 aurelien 7
import org.tela_botanica.del.client.modeles.VoteDetermination;
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;
480 benjamin 11
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.votes.DetailVoteObservationPresenteur;
12
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.votes.DetailVoteObservationVue;
436 benjamin 13
 
14
import com.google.gwt.user.client.ui.HTMLPanel;
15
import com.google.gwt.user.client.ui.HasWidgets;
16
import com.google.gwt.user.client.ui.IsWidget;
17
 
18
public class ObservationDeterminationPresenteur {
19
 
20
	public abstract interface Vue extends IsWidget {
652 aurelien 21
		public void viderTableau();
882 aurelien 22
		public void ajouterElementAuTableauProposition(IsWidget Element, int nbVotes, int nbCommentaires);
23
		void setNbVotes(int index, int nbVotes);
24
		void setNbCommentaires(int index, int nbCommentaires);
436 benjamin 25
	}
26
 
27
	private Vue vue;
28
 
29
	private List<PropositionDetermination> propositions;
30
 
31
	public ObservationDeterminationPresenteur(Vue vue, List<PropositionDetermination> propositions) {
32
		this.propositions = propositions;
33
		this.vue = vue;
34
	}
35
 
36
	public void chargerPropositions() {
652 aurelien 37
		vue.viderTableau();
436 benjamin 38
		for (PropositionDetermination proposition : propositions) {
866 aurelien 39
			//TODO: afficher nombre de votes total et mettre à jour en cas de vote
436 benjamin 40
			HTMLPanel panneau = new HTMLPanel("");
41
			DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition);
42
			presenteurVote.go(panneau);
882 aurelien 43
			int nbCommentaires = proposition.getListeCommentaires().size();
44
			int nbVotes = proposition.getVotesDeterminations().size();
45
			vue.ajouterElementAuTableauProposition(panneau, nbVotes, nbCommentaires);
436 benjamin 46
		}
882 aurelien 47
 
48
		BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
49
			@Override
50
			public void onVoteDetermination(VoteDetermination event) {
51
				surVoteDetermination(event);
52
			}
53
		});
436 benjamin 54
	}
602 aurelien 55
 
56
	public void setPropositions(List<PropositionDetermination> propositions) {
57
		this.propositions = propositions;
58
		chargerPropositions();
59
	}
436 benjamin 60
 
61
	public void go(HasWidgets composite) {
62
		composite.add(vue.asWidget());
63
		chargerPropositions();
64
	}
882 aurelien 65
 
66
	public void surVoteDetermination(VoteDetermination voteDetermination) {
67
		int indexProposition = propositions.indexOf(voteDetermination.getPropositionDetermination());
68
		if(indexProposition != -1) {
69
			vue.setNbVotes(indexProposition, voteDetermination.getPropositionDetermination().getVotesDeterminations().size());
70
		}
71
	}
436 benjamin 72
 
73
}