Rev 1833 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.composants.forum;import java.util.Collections;import java.util.List;import org.tela_botanica.del.client.cache.CacheClient;import org.tela_botanica.del.client.composants.forum.interventions.ForumInterventionPresenteur;import org.tela_botanica.del.client.composants.forum.interventions.ForumInterventionVue;import org.tela_botanica.del.client.modeles.Commentaire;import org.tela_botanica.del.client.modeles.InterventionForum;import org.tela_botanica.del.client.modeles.PropositionDetermination;import org.tela_botanica.del.client.modeles.VoteDetermination;import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.GestionnaireEvenementSuppressionCommentaire;import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination;import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.GestionnaireEvenementSuppressionDetermination;import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;import org.tela_botanica.del.client.utils.ComparateurPropositionDetermination;import com.google.gwt.user.client.ui.HasWidgets;import com.google.gwt.user.client.ui.IsWidget;public class ForumPresenteur {public interface Vue extends IsWidget {public abstract HasWidgets getPanneauInterventions();public abstract void vider();}private Vue vue;public ForumPresenteur(Vue vue) {this.vue = vue;}public void go(HasWidgets composite) {chargerDeterminations();composite.add(vue.asWidget());gererEvenements();}private void chargerDeterminations() {vue.vider();List<PropositionDetermination> interventions = CacheClient.getInstance().getObservationCourante().getPropositionDeterminations();Collections.sort(interventions, new ComparateurPropositionDetermination());for (InterventionForum interventionCourante : interventions) {ForumInterventionPresenteur presenteur = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionCourante, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret());presenteur.go(vue.getPanneauInterventions());ajouterCommentairesRecursivement(interventionCourante, presenteur);}List<Commentaire> commentaires = CacheClient.getInstance().getObservationCourante().getCommentairesForum();for (InterventionForum interventionCourante : commentaires) {ForumInterventionPresenteur presenteur = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionCourante, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret());presenteur.go(vue.getPanneauInterventions());ajouterCommentairesRecursivement(interventionCourante, presenteur);}}private void ajouterCommentairesRecursivement(InterventionForum interventionCourante, ForumInterventionPresenteur presenteur) {List<Commentaire> fils = interventionCourante.getListeCommentaires();for (InterventionForum interventionFils : fils) {ForumInterventionPresenteur presenteurFils = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionFils, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret());ajouterCommentairesRecursivement(interventionFils, presenteurFils);presenteur.ajouterEnfant(presenteurFils);}}private void gererEvenements() {BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {@Overridepublic void onAjoutDetermination(EvenementAjoutDetermination event) {chargerDeterminations();}});BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {@Overridepublic void onAjoutCommentaire(EvenementAjoutCommentaire event) {chargerDeterminations();}});BusEvenementiel.getInstance().addHandler(EvenementSuppressionDetermination.TYPE, new GestionnaireEvenementSuppressionDetermination() {@Overridepublic void onSuppressionDetermination(EvenementSuppressionDetermination event) {chargerDeterminations();}});BusEvenementiel.getInstance().addHandler(EvenementSuppressionCommentaire.TYPE, new GestionnaireEvenementSuppressionCommentaire() {@Overridepublic void onSuppressionCommentaire(EvenementSuppressionCommentaire event) {chargerDeterminations();}});BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {@Overridepublic void onVoteDetermination(VoteDetermination event) {// ceci permet d'avoir un classement à jour des déterminations à chaque vote// à voir si ça ne fait pas trop ramer les petites machineschargerDeterminations();}});}}