Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
1196 gduche 1
package org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations;
2
 
3
import java.util.Collections;
4
import java.util.List;
5
 
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
7
import org.tela_botanica.del.client.composants.rss.RssPresenteur;
8
import org.tela_botanica.del.client.composants.rss.RssVue;
1209 gduche 9
import org.tela_botanica.del.client.modeles.Observation;
1196 gduche 10
import org.tela_botanica.del.client.modeles.PropositionDetermination;
11
import org.tela_botanica.del.client.modeles.VoteDetermination;
12
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
13
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
14
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
15
import org.tela_botanica.del.client.utils.ComparateurPropositionDetermination;
16
import org.tela_botanica.del.client.vues.identiplante.resultats.votes.DetailVoteObservationPresenteur;
17
import org.tela_botanica.del.client.vues.identiplante.resultats.votes.DetailVoteObservationVue;
18
 
1209 gduche 19
import com.google.gwt.core.shared.GWT;
1196 gduche 20
import com.google.gwt.user.client.Window;
21
import com.google.gwt.user.client.ui.HTMLPanel;
22
import com.google.gwt.user.client.ui.HasWidgets;
23
import com.google.gwt.user.client.ui.IsWidget;
1209 gduche 24
 
1196 gduche 25
public class ObservationDeterminationPresenteur {
26
	public abstract interface Vue extends IsWidget {
27
		public void viderTableau();
28
 
1209 gduche 29
		public void viderTableauPropositionInitiale();
1196 gduche 30
 
31
		public HasWidgets getTableauPropositions();
32
 
1209 gduche 33
		public HasWidgets getTableauPropositionInitiale();
34
 
35
		public void viderTableauPropositionRetenue();
36
 
37
		public HasWidgets getTableauPropositionRetenue();
1196 gduche 38
 
39
		void setNbVotes(int index, int nbVotes);
40
 
41
		void setNbCommentaires(int index, int nbCommentaires);
42
 
43
		int getIndexLigneProposition(LignePropositionVue lignePropositionVue);
44
 
45
		public void masquerPropositions();
46
 
47
		public HasWidgets getZoneRss();
1209 gduche 48
 
49
		public void toggleTableauPropositionRetenue();
1196 gduche 50
	}
51
	private Vue vue;
52
	private List<PropositionDetermination> propositions;
53
	FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
54
 
55
	public ObservationDeterminationPresenteur(Vue vue, List<PropositionDetermination> propositions) {
56
		this.propositions = propositions;
57
		this.vue = vue;
58
	}
59
 
1209 gduche 60
	public void chargerRss(Observation observation) {
61
		new RssPresenteur(new RssVue(), observation, "").go(vue.getZoneRss());
62
	}
63
 
64
	public void chargerPropositionRetenue(PropositionDetermination proposition) {
65
		vue.viderTableauPropositionRetenue();
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.getTableauPropositionRetenue());
72
		vue.toggleTableauPropositionRetenue();
73
		GWT.log("lkjlakrjelkrjealkrjezlkjezlrkezjlkzrjzelkrjzelkr");
74
	}
75
 
1196 gduche 76
	public void chargerPropositionOriginale(PropositionDetermination proposition) {
1209 gduche 77
		vue.viderTableauPropositionInitiale();
1196 gduche 78
		// TODO: afficher nombre de votes total et mettre à jour en cas de
79
		// vote
80
		HTMLPanel panneau = new HTMLPanel("");
81
		DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition);
82
		presenteurVote.go(panneau);
83
		LignePropositionVue lignePropositionVue = new LignePropositionVue(panneau);
84
		LignePropositionPresenteur lignePropositionPresenteur = new LignePropositionPresenteur(lignePropositionVue, proposition);
1209 gduche 85
		lignePropositionPresenteur.go(vue.getTableauPropositionInitiale());
1196 gduche 86
 
87
	}
88
 
89
 
90
	public void classerPropositions(List<PropositionDetermination> propositions) {
91
 
92
		Collections.sort(propositions, new ComparateurPropositionDetermination());
93
	}
94
 
95
	public void chargerPropositions() {
96
		vue.viderTableau();
97
		int nbPropositions = 0;
98
			classerPropositions(propositions);
1209 gduche 99
			chargerRss(propositions.get(0).getObservation());
1196 gduche 100
			for (PropositionDetermination proposition : propositions) {
101
					if (proposition.estPropositionInitiale()) {
1209 gduche 102
						chargerPropositionOriginale(proposition);
103
					} else if (proposition.estPropositionRetenue()) {
104
						chargerPropositionRetenue(proposition);
1196 gduche 105
					} else {
106
 
107
						nbPropositions++;
108
						// TODO: afficher nombre de votes total et mettre à jour en
109
						// cas de
110
						// vote
111
						HTMLPanel panneau = new HTMLPanel("");
112
						DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition);
113
						presenteurVote.go(panneau);
114
						LignePropositionVue lignePropositionVue = new LignePropositionVue(panneau);
115
						LignePropositionPresenteur lignePropositionPresenteur = new LignePropositionPresenteur(lignePropositionVue, proposition);
116
						lignePropositionPresenteur.go(vue.getTableauPropositions());
117
					}
118
			}
1209 gduche 119
 
1196 gduche 120
			if (nbPropositions > 0) {
121
		} else {
122
			vue.masquerPropositions();
123
		}
124
		BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
125
			@Override
126
			public void onVoteDetermination(VoteDetermination event) {
127
				surVoteDetermination(event);
128
			}
129
		});
130
	}
131
 
132
	public void setPropositions(List<PropositionDetermination> propositions) {
133
		this.propositions = propositions;
134
		chargerPropositions();
135
	}
136
 
137
	public void go(HasWidgets composite) {
138
		composite.add(vue.asWidget());
139
		chargerPropositions();
140
	}
141
 
142
	public void surVoteDetermination(VoteDetermination voteDetermination) {
143
		int indexProposition = propositions.indexOf(voteDetermination.getPropositionDetermination());
144
		if (indexProposition != -1) {
145
			vue.setNbVotes(indexProposition, voteDetermination.getPropositionDetermination().getVotesDeterminations().size());
146
		}
147
	}
148
}