Subversion Repositories eFlore/Applications.del

Rev

Rev 922 | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.del.client.vues.rechercheobservations.resultats.observationdeterminations;

import org.tela_botanica.del.client.composants.commentaires.DetailCommentairePresenteur;
import org.tela_botanica.del.client.composants.commentaires.DetailCommentaireVue;
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationPresenteur;
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationVue;
import org.tela_botanica.del.client.modeles.PropositionDetermination;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;

public class LignePropositionPresenteur {

        public abstract interface Vue extends IsWidget {
                public HasClickHandlers getZoneNbVotes();

                public HasClickHandlers getZoneNbCommentaires();

                public void setNbVotes(int nbVotes);

                public void setNbCommentaires(int nbCommentaires);
        }

        private Vue vue;

        private PropositionDetermination propositionDetermination;

        public LignePropositionPresenteur(Vue vue, PropositionDetermination propositionDetermination) {
                this.vue = vue;
                this.propositionDetermination = propositionDetermination;
        }

        public void go(HasWidgets composite) {
                composite.add(vue.asWidget());
                gererEvenements();
                chargerPropositionDetermination();
        }

        public void chargerPropositionDetermination() {
                int nbCommentaires = propositionDetermination.getTotalCommentaires();
                if (propositionDetermination.getCommentaire() != null && propositionDetermination.getCommentaire() != "") {
                        nbCommentaires += 1;
                }
                int nbVotes = propositionDetermination.getVotesDeterminations().size();
                vue.setNbCommentaires(nbCommentaires);
                vue.setNbVotes(nbVotes);
        }

        public void gererEvenements() {
                vue.getZoneNbVotes().addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
                                DetailListeVotesDeterminationPresenteur detailListeVotesDeterminationPresenteur = new DetailListeVotesDeterminationPresenteur(new DetailListeVotesDeterminationVue());
                                fenetreOverlaySimplePresenteur.ouvrirFenetreModale(detailListeVotesDeterminationPresenteur);
                                detailListeVotesDeterminationPresenteur.afficherVotes(propositionDetermination);
                        }
                });

                vue.getZoneNbCommentaires().addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
                                DetailCommentairePresenteur detailCommentairePresenteur = new DetailCommentairePresenteur(new DetailCommentaireVue(), propositionDetermination);
                                fenetreOverlaySimplePresenteur.ouvrirFenetreModale(detailCommentairePresenteur);
                                detailCommentairePresenteur.afficherCommentaires();
                        }
                });
        }

}