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;
901 aurelien 4
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
436 benjamin 5
import org.tela_botanica.del.client.modeles.PropositionDetermination;
882 aurelien 6
import org.tela_botanica.del.client.modeles.VoteDetermination;
7
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
8
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
9
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
480 benjamin 10
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.votes.DetailVoteObservationPresenteur;
11
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.votes.DetailVoteObservationVue;
1053 gduche 12
import com.google.gwt.user.client.Window;
436 benjamin 13
import com.google.gwt.user.client.ui.HTMLPanel;
14
import com.google.gwt.user.client.ui.HasWidgets;
15
import com.google.gwt.user.client.ui.IsWidget;
16
public class ObservationDeterminationPresenteur {
17
	public abstract interface Vue extends IsWidget {
652 aurelien 18
		public void viderTableau();
922 benjamin 19
 
1038 gduche 20
		public void viderTableauPropositionOriginale();
21
 
922 benjamin 22
		public HasWidgets getTableauPropositions();
23
 
1038 gduche 24
		public HasWidgets getTableauPropositionOriginale();
25
 
882 aurelien 26
		void setNbVotes(int index, int nbVotes);
922 benjamin 27
 
882 aurelien 28
		void setNbCommentaires(int index, int nbCommentaires);
922 benjamin 29
 
901 aurelien 30
		int getIndexLigneProposition(LignePropositionVue lignePropositionVue);
1038 gduche 31
 
32
		public void masquerPropositions();
436 benjamin 33
	}
34
	private Vue vue;
35
	private List<PropositionDetermination> propositions;
901 aurelien 36
	FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
436 benjamin 37
 
38
	public ObservationDeterminationPresenteur(Vue vue, List<PropositionDetermination> propositions) {
39
		this.propositions = propositions;
40
		this.vue = vue;
41
	}
42
 
1053 gduche 43
	public void chargerPropositionOriginale(PropositionDetermination proposition) {
1038 gduche 44
		vue.viderTableauPropositionOriginale();
45
		// TODO: afficher nombre de votes total et mettre à jour en cas de
46
		// vote
47
		HTMLPanel panneau = new HTMLPanel("");
48
		DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition);
49
		presenteurVote.go(panneau);
50
		LignePropositionVue lignePropositionVue = new LignePropositionVue(panneau);
51
		LignePropositionPresenteur lignePropositionPresenteur = new LignePropositionPresenteur(lignePropositionVue, proposition);
52
		lignePropositionPresenteur.go(vue.getTableauPropositionOriginale());
53
	}
54
 
436 benjamin 55
	public void chargerPropositions() {
652 aurelien 56
		vue.viderTableau();
1053 gduche 57
		int nbPropositions = 0;
1038 gduche 58
			for (PropositionDetermination proposition : propositions) {
1053 gduche 59
					if (proposition.estPropositionInitiale()) {
60
						this.chargerPropositionOriginale(proposition);
61
					} else {
62
						nbPropositions++;
63
						// TODO: afficher nombre de votes total et mettre à jour en
64
						// cas de
65
						// vote
66
						HTMLPanel panneau = new HTMLPanel("");
67
						DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition);
68
						presenteurVote.go(panneau);
69
						LignePropositionVue lignePropositionVue = new LignePropositionVue(panneau);
70
						LignePropositionPresenteur lignePropositionPresenteur = new LignePropositionPresenteur(lignePropositionVue, proposition);
71
						lignePropositionPresenteur.go(vue.getTableauPropositions());
72
					}
1038 gduche 73
			}
1053 gduche 74
			if (nbPropositions > 0) {
1038 gduche 75
		} else {
76
			vue.masquerPropositions();
436 benjamin 77
		}
882 aurelien 78
		BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
79
			@Override
922 benjamin 80
			public void onVoteDetermination(VoteDetermination event) {
882 aurelien 81
				surVoteDetermination(event);
82
			}
83
		});
436 benjamin 84
	}
922 benjamin 85
 
602 aurelien 86
	public void setPropositions(List<PropositionDetermination> propositions) {
87
		this.propositions = propositions;
88
		chargerPropositions();
89
	}
436 benjamin 90
 
91
	public void go(HasWidgets composite) {
92
		composite.add(vue.asWidget());
93
		chargerPropositions();
94
	}
922 benjamin 95
 
882 aurelien 96
	public void surVoteDetermination(VoteDetermination voteDetermination) {
97
		int indexProposition = propositions.indexOf(voteDetermination.getPropositionDetermination());
922 benjamin 98
		if (indexProposition != -1) {
882 aurelien 99
			vue.setNbVotes(indexProposition, voteDetermination.getPropositionDetermination().getVotesDeterminations().size());
100
		}
101
	}
436 benjamin 102
}