Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
41 aurelien 1
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
2
 
3
import java.util.List;
4
 
159 benjamin 5
import org.tela_botanica.del.client.cache.CacheClient;
303 aurelien 6
import org.tela_botanica.del.client.modeles.MoyenneVote;
140 aurelien 7
import org.tela_botanica.del.client.modeles.PropositionDetermination;
159 benjamin 8
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
303 aurelien 9
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
10
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
159 benjamin 11
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
12
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
303 aurelien 13
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
14
import org.tela_botanica.del.client.vues.plateformedetermination.DeterminationPresenteur;
15
import org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition.BarreRepartitionVotePresenteur;
16
import org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition.BarreRepartitionVoteVue;
41 aurelien 17
 
303 aurelien 18
import com.google.gwt.user.client.ui.FlexTable;
41 aurelien 19
import com.google.gwt.user.client.ui.HasWidgets;
303 aurelien 20
import com.google.gwt.user.client.ui.IsWidget;
41 aurelien 21
 
159 benjamin 22
public class ForumPresenteur {
303 aurelien 23
 
24
	public interface Vue extends IsWidget {
25
		public abstract void initialiserEntetesTableau();
26
		public abstract void ajouterLigne(PropositionDetermination determination,
321 aurelien 27
				IsWidget barreRepartition, IsWidget arbreCommentaires);
303 aurelien 28
		public abstract HasWidgets getTable();
29
	}
84 benjamin 30
 
303 aurelien 31
	private Vue vue;
140 aurelien 32
	private List<PropositionDetermination> determinations;
84 benjamin 33
 
303 aurelien 34
	public ForumPresenteur(Vue vue) {
35
		this.vue = vue;
36
	}
37
 
41 aurelien 38
	public void go(HasWidgets composite) {
84 benjamin 39
 
159 benjamin 40
		chargerDeterminations();
303 aurelien 41
		composite.add(vue.asWidget());
159 benjamin 42
 
43
		gererEvenements();
41 aurelien 44
	}
84 benjamin 45
 
159 benjamin 46
	private void chargerDeterminations() {
234 gduche 47
		determinations = CacheClient.getInstance().getObservationCourante().getPropositionsDetermination();
303 aurelien 48
		vue.initialiserEntetesTableau();
183 gduche 49
 
171 aurelien 50
		for (PropositionDetermination determination : determinations) {
303 aurelien 51
			ajouterPropositionDetermination(determination);
171 aurelien 52
		}
41 aurelien 53
	}
159 benjamin 54
 
55
	private void gererEvenements() {
56
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
57
 
58
			@Override
59
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
303 aurelien 60
				ajouterPropositionDetermination(event.getPropositionDetermination());
159 benjamin 61
			}
62
		});
303 aurelien 63
 
64
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
65
 
66
			@Override
67
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
68
				//TODO gérer l'ajout de commentaire
69
			}
70
		});
94 aurelien 71
	}
303 aurelien 72
 
73
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
74
		BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue());
75
		calculerEtAfficherVoteDetermination(barreRepartitionVotePresenteur, propositionDetermination);
321 aurelien 76
 
77
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), propositionDetermination);
78
 
79
		vue.ajouterLigne(propositionDetermination, barreRepartitionVotePresenteur.getBarreRepartitionVoteVue(), arbreCommentairePresenteur.getArbreCommentaireVue());
303 aurelien 80
	}
81
 
82
	private void calculerEtAfficherVoteDetermination(BarreRepartitionVotePresenteur barreRepartitionVotePresenteur, PropositionDetermination propositionDetermination) {
83
		MoyenneVote votes = CalculVoteDeterminationService.calculerVoteDetermination(propositionDetermination);
84
		barreRepartitionVotePresenteur.afficherVotes(votes);
85
	}
41 aurelien 86
}