Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
41 aurelien 1
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
2
 
159 benjamin 3
import org.tela_botanica.del.client.cache.CacheClient;
635 aurelien 4
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur;
5
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVoteVue;
658 benjamin 6
import org.tela_botanica.del.client.modeles.Commentaire;
7
import org.tela_botanica.del.client.modeles.InterventionForum;
303 aurelien 8
import org.tela_botanica.del.client.modeles.MoyenneVote;
140 aurelien 9
import org.tela_botanica.del.client.modeles.PropositionDetermination;
159 benjamin 10
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
303 aurelien 11
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
12
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
159 benjamin 13
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
14
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
303 aurelien 15
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
41 aurelien 16
 
17
import com.google.gwt.user.client.ui.HasWidgets;
303 aurelien 18
import com.google.gwt.user.client.ui.IsWidget;
41 aurelien 19
 
159 benjamin 20
public class ForumPresenteur {
658 benjamin 21
 
303 aurelien 22
	public interface Vue extends IsWidget {
23
		public abstract void initialiserEntetesTableau();
658 benjamin 24
 
25
		public abstract void ajouterLigne(PropositionDetermination determination, IsWidget barreRepartition, IsWidget arbreCommentaires);
26
 
27
		public void ajouterLigne(Commentaire commentaire, IsWidget arbreCommentaires);
28
 
303 aurelien 29
		public abstract HasWidgets getTable();
30
	}
84 benjamin 31
 
303 aurelien 32
	private Vue vue;
84 benjamin 33
 
303 aurelien 34
	public ForumPresenteur(Vue vue) {
35
		this.vue = vue;
36
	}
658 benjamin 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() {
303 aurelien 47
		vue.initialiserEntetesTableau();
183 gduche 48
 
658 benjamin 49
		for (InterventionForum proposition : CacheClient.getInstance().getObservationCourante().getInterventionsForum()) {
50
			if (proposition instanceof PropositionDetermination) {
51
				ajouterPropositionDetermination((PropositionDetermination) proposition);
52
			} else if (proposition instanceof Commentaire) {
53
				ajouterCommentaire((Commentaire) proposition);
54
			}
171 aurelien 55
		}
41 aurelien 56
	}
159 benjamin 57
 
58
	private void gererEvenements() {
59
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
60
 
61
			@Override
62
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
303 aurelien 63
				ajouterPropositionDetermination(event.getPropositionDetermination());
159 benjamin 64
			}
65
		});
658 benjamin 66
 
303 aurelien 67
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
658 benjamin 68
 
303 aurelien 69
			@Override
70
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
658 benjamin 71
				ajouterCommentaire(event.getCommentaire());
303 aurelien 72
			}
73
		});
94 aurelien 74
	}
658 benjamin 75
 
303 aurelien 76
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
77
		BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue());
78
		calculerEtAfficherVoteDetermination(barreRepartitionVotePresenteur, propositionDetermination);
321 aurelien 79
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), propositionDetermination);
80
		vue.ajouterLigne(propositionDetermination, barreRepartitionVotePresenteur.getBarreRepartitionVoteVue(), arbreCommentairePresenteur.getArbreCommentaireVue());
303 aurelien 81
	}
658 benjamin 82
 
83
	private void ajouterCommentaire(Commentaire proposition) {
84
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), proposition);
85
		vue.ajouterLigne(proposition, arbreCommentairePresenteur.getArbreCommentaireVue());
86
	}
87
 
88
	private void calculerEtAfficherVoteDetermination(BarreRepartitionVotePresenteur barreRepartitionVotePresenteur, PropositionDetermination propositionDetermination) {
303 aurelien 89
		MoyenneVote votes = CalculVoteDeterminationService.calculerVoteDetermination(propositionDetermination);
90
		barreRepartitionVotePresenteur.afficherVotes(votes);
91
	}
41 aurelien 92
}