7,11 → 7,10 |
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.voteDetermination.EvenementVoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination; |
import org.tela_botanica.del.client.services.CalculVoteDeterminationService; |
import org.tela_botanica.del.client.services.rest.VoteDeterminationService; |
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallback; |
import org.tela_botanica.del.client.services.rest.async.AjoutVoteDeterminationCallback; |
|
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
21,29 → 20,36 |
import com.google.gwt.user.client.ui.IsWidget; |
|
public class BarreRepartitionVotePresenteur { |
|
|
public interface Vue extends IsWidget { |
public void afficherVotes(int pourcentage, String NomTaxon); |
|
public HasClickHandlers getBoutonOui(); |
|
public HasClickHandlers getBoutonNon(); |
|
public void desactiverBoutons(); |
|
public void activerBoutons(); |
|
public void setVoteOuiEffectue(); |
|
public void setVoteNonEffectue(); |
|
public void afficherVotePrisEnCompte(boolean b); |
} |
|
|
private Vue vue; |
private MoyenneVote moyenneVote; |
|
|
// TODO: classe conteneur qui est passé en paramètre au constructeur |
private VoteDeterminationService voteDeterminationService = new VoteDeterminationServiceConcret(); |
|
|
public BarreRepartitionVotePresenteur(Vue vue) { |
this.vue = vue; |
gererEvenements(); |
} |
|
|
public void go(HasWidgets container) { |
container.add(vue.asWidget()); |
} |
51,43 → 57,49 |
public void afficherVotes(MoyenneVote moyenneVote) { |
this.moyenneVote = moyenneVote; |
int score = moyenneVote.getScore(); |
String intitule =moyenneVote.getIntituleAssocie(); |
String intitule = moyenneVote.getIntituleAssocie(); |
vue.afficherVotes(score, intitule); |
} |
|
|
public Vue getBarreRepartitionVoteVue() { |
return vue; |
} |
|
|
public MoyenneVote getMoyenneVote() { |
return moyenneVote; |
} |
|
|
public void gererEvenements() { |
|
|
vue.getBoutonOui().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
voter(true); |
vue.afficherVotePrisEnCompte(true); |
} |
} |
}); |
|
|
vue.getBoutonNon().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
voter(false); |
vue.afficherVotePrisEnCompte(false); |
} |
} |
}); |
} |
|
|
private void surVoteDetermination(final VoteDetermination vd) { |
if(vd.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) { |
VoteDeterminationCallback vdc = new VoteDeterminationCallback() { |
if (vd.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) { |
AjoutVoteDeterminationCallback vdc = new AjoutVoteDeterminationCallback() { |
|
@Override |
public void surRetour(String messageRetour) { |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
vue.activerBoutons(); |
} |
|
@Override |
public void surRetour(Void objetRetour) { |
moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd); |
moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee()); |
afficherVotes(moyenneVote); |
95,34 → 107,28 |
// l'évènement n'est lancé que si le vote est validé |
BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd)); |
} |
}; |
|
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
vue.activerBoutons(); |
} |
}; |
|
if(moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(vd.getContributeur())) { |
if (moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(vd.getContributeur())) { |
voteDeterminationService.modifierVote(vd, vdc); |
} else { |
voteDeterminationService.ajouterVote(vd, vdc); |
} |
} |
} |
} |
|
|
public void voter(boolean oui) { |
|
|
VoteDetermination vd = new VoteDetermination(); |
vd.setPropositionDetermination(moyenneVote.getPropositionAssociee()); |
vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId()); |
vd.setDate(new Date()); |
|
|
int valeurVote = oui ? 1 : 0; |
vd.setVote(valeurVote); |
vd.setId(CacheClient.getInstance().getUtilisateur().getId()); |
|
if(oui) { |
|
if (oui) { |
vue.setVoteOuiEffectue(); |
} else { |
vue.setVoteNonEffectue(); |