Subversion Repositories eFlore/Applications.del

Rev

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