/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observationdeterminations/ObservationDeterminationVue.java |
---|
25,28 → 25,25 |
public ObservationDeterminationVue() { |
initWidget(binder.createAndBindUi(this)); |
} |
@Override |
public void ajouterElementAuTableauProposition(LignePropositionVue ligneProposition) { |
tableauPropositions.add(ligneProposition); |
} |
@Override |
public int getIndexLigneProposition(LignePropositionVue lignePropositionVue) { |
return tableauPropositions.getWidgetIndex(lignePropositionVue); |
} |
@Override |
@Override |
public void setNbVotes(int index, int nbVotes) { |
// cette conversion ne devrait jamais poser de problème, car le tableau ne doit contenir que ça |
LignePropositionVue lignePropositionVue = (LignePropositionVue)tableauPropositions.getWidget(index); |
// cette conversion ne devrait jamais poser de problème, car le tableau |
// ne doit contenir que ça |
LignePropositionVue lignePropositionVue = (LignePropositionVue) tableauPropositions.getWidget(index); |
lignePropositionVue.setNbVotes(nbVotes); |
} |
@Override |
@Override |
public void setNbCommentaires(int index, int nbCommentaires) { |
// cette conversion ne devrait jamais poser de problème, car le tableau ne doit contenir que ça |
LignePropositionVue lignePropositionVue = (LignePropositionVue)tableauPropositions.getWidget(index); |
// cette conversion ne devrait jamais poser de problème, car le tableau |
// ne doit contenir que ça |
LignePropositionVue lignePropositionVue = (LignePropositionVue) tableauPropositions.getWidget(index); |
lignePropositionVue.setNbVotes(nbCommentaires); |
} |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observationdeterminations/LignePropositionPresenteur.java |
---|
New file |
0,0 → 1,79 |
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(); |
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) { |
int nbVotes = propositionDetermination.getVotesDeterminations().size(); |
if (nbVotes > 0) { |
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) { |
int nbCommentaires = propositionDetermination.getTotalCommentaires(); |
if (nbCommentaires > 0) { |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
DetailCommentairePresenteur detailCommentairePresenteur = new DetailCommentairePresenteur(new DetailCommentaireVue(), propositionDetermination); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(detailCommentairePresenteur); |
detailCommentairePresenteur.afficherCommentaires(); |
} |
} |
}); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observationdeterminations/LignePropositionVue.java |
---|
13,8 → 13,8 |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Widget; |
public class LignePropositionVue extends Composite { |
public class LignePropositionVue extends Composite implements LignePropositionPresenteur.Vue { |
// Gestion d'UiBinder |
interface MyUiBinder extends UiBinder<Widget, LignePropositionVue> { |
} |
22,37 → 22,33 |
private static MyUiBinder uibinder = GWT.create(MyUiBinder.class); |
@UiField |
HTMLPanel conteneurPanneauDeterminations; |
@UiField |
@UiField |
FocusPanel conteneurPanneauVotes, conteneurPanneauCommentaires; |
@UiField |
@UiField |
HTML nbVotesHtml, nbCommentairesHtml; |
public LignePropositionVue(IsWidget panneauDeterminations, int nbVotes, int nbCommentaires) { |
public LignePropositionVue(IsWidget panneauDeterminations) { |
initWidget(uibinder.createAndBindUi(this)); |
conteneurPanneauDeterminations.add(panneauDeterminations); |
nbVotesHtml.setHTML(nbVotes+""); |
nbCommentairesHtml.setHTML(nbCommentaires+""); |
conteneurPanneauVotes.setTitle(I18n.getVocabulary().voirDetailVotes()); |
conteneurPanneauCommentaires.setTitle(I18n.getVocabulary().voirDetailCommentaires()); |
} |
public HasClickHandlers getZoneNbVotes() { |
return conteneurPanneauVotes; |
} |
public HasClickHandlers getZoneNbCommentaires() { |
return conteneurPanneauCommentaires; |
} |
public void setNbVotes(int nbVotes) { |
nbVotesHtml.setHTML(nbVotes+""); |
nbVotesHtml.setHTML(nbVotes + ""); |
} |
public void setNbCommentaires(int nbCommentaires) { |
nbCommentairesHtml.setHTML(nbCommentaires+""); |
nbCommentairesHtml.setHTML(nbCommentaires + ""); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observationdeterminations/ObservationDeterminationPresenteur.java |
---|
2,10 → 2,7 |
import java.util.List; |
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 org.tela_botanica.del.client.modeles.VoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
14,8 → 11,6 |
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.votes.DetailVoteObservationPresenteur; |
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.votes.DetailVoteObservationVue; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
24,9 → 19,13 |
public abstract interface Vue extends IsWidget { |
public void viderTableau(); |
public void ajouterElementAuTableauProposition(LignePropositionVue vue); |
public HasWidgets getTableauPropositions(); |
void setNbVotes(int index, int nbVotes); |
void setNbCommentaires(int index, int nbCommentaires); |
int getIndexLigneProposition(LignePropositionVue lignePropositionVue); |
} |
43,56 → 42,27 |
public void chargerPropositions() { |
vue.viderTableau(); |
for (PropositionDetermination proposition : propositions) { |
//TODO: afficher nombre de votes total et mettre à jour en cas de vote |
// TODO: afficher nombre de votes total et mettre à jour en cas de |
// vote |
HTMLPanel panneau = new HTMLPanel(""); |
DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition); |
presenteurVote.go(panneau); |
int nbCommentaires = proposition.getTotalCommentaires(); |
int nbVotes = proposition.getVotesDeterminations().size(); |
LignePropositionVue ligneProposition = new LignePropositionVue(panneau, nbVotes, nbCommentaires); |
gererEvenementClicNbVotes(ligneProposition); |
gererEvenementClicNbCommentaires(ligneProposition); |
vue.ajouterElementAuTableauProposition(ligneProposition); |
LignePropositionVue lignePropositionVue = new LignePropositionVue(panneau); |
LignePropositionPresenteur lignePropositionPresenteur = new LignePropositionPresenteur(lignePropositionVue, proposition); |
lignePropositionPresenteur.go(vue.getTableauPropositions()); |
} |
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() { |
@Override |
public void onVoteDetermination(VoteDetermination event) { |
public void onVoteDetermination(VoteDetermination event) { |
surVoteDetermination(event); |
} |
}); |
} |
public void gererEvenementClicNbVotes(final LignePropositionVue lignePropositionVue) { |
lignePropositionVue.getZoneNbVotes().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
DetailListeVotesDeterminationPresenteur detailListeVotesDeterminationPresenteur = new DetailListeVotesDeterminationPresenteur(new DetailListeVotesDeterminationVue()); |
int indexProposition = vue.getIndexLigneProposition(lignePropositionVue); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(detailListeVotesDeterminationPresenteur); |
detailListeVotesDeterminationPresenteur.afficherVotes(propositions.get(indexProposition)); |
} |
}); |
} |
public void gererEvenementClicNbCommentaires(final LignePropositionVue lignePropositionVue) { |
lignePropositionVue.getZoneNbCommentaires().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
int indexProposition = vue.getIndexLigneProposition(lignePropositionVue); |
PropositionDetermination propositionCliquee = propositions.get(indexProposition); |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
// TODO: appeler methode ouvrirFenetreModale de fenetreOverlaySimplePresenteur |
// avec un objet héritant de la classe présenteur et pouvant afficher le détails des commentaires |
// grâce à la proposition récupérée |
} |
}); |
} |
public void setPropositions(List<PropositionDetermination> propositions) { |
this.propositions = propositions; |
chargerPropositions(); |
102,10 → 72,10 |
composite.add(vue.asWidget()); |
chargerPropositions(); |
} |
public void surVoteDetermination(VoteDetermination voteDetermination) { |
int indexProposition = propositions.indexOf(voteDetermination.getPropositionDetermination()); |
if(indexProposition != -1) { |
if (indexProposition != -1) { |
vue.setNbVotes(indexProposition, voteDetermination.getPropositionDetermination().getVotesDeterminations().size()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentaireVue.ui.xml |
---|
New file |
0,0 → 1,15 |
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> |
<ui:UiBinder |
xmlns:ui='urn:ui:com.google.gwt.uibinder' |
xmlns:g='urn:import:com.google.gwt.user.client.ui' |
xmlns:vues="urn:import:org.tela_botanica.del.client.vues.plateformedetermination.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="detailCommentaireVue.css" /> |
<g:HTMLPanel styleName="{style.conteneurTableauVotes}"> |
<g:HTMLPanel ui:field='titre' styleName="titre" /> |
<g:FlexTable ui:field='htmlTableau' styleName="{style.table}" /> |
<g:HTMLPanel ui:field="panneauChargement" styleName="{style.chargement}"> |
<g:Image url="./img/wait.gif"></g:Image> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentairePresenteur.java |
---|
New file |
0,0 → 1,69 |
package org.tela_botanica.del.client.composants.commentaires; |
import java.util.HashMap; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import org.tela_botanica.del.client.modeles.VoteDetermination; |
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.utils.UtilitairesServiceResultat; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class DetailCommentairePresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
public void afficherCommentairesProposition(PropositionDetermination propositionDetermination); |
void stopChargement(); |
void startChargement(); |
} |
private Vue vue; |
private PropositionDetermination propositionDetermination; |
public DetailCommentairePresenteur(Vue vue, PropositionDetermination propositionDetermination) { |
this.vue = vue; |
this.propositionDetermination = propositionDetermination; |
} |
public void go(HasWidgets container) { |
container.add(vue.asWidget()); |
} |
public void afficherCommentaires() { |
vue.startChargement(); |
VoteDeterminationServiceConcret voteService = new VoteDeterminationServiceConcret(); |
voteService.consulterVotesPourPropositionDetermination(propositionDetermination, new VoteDeterminationCallback() { |
@Override |
public void surRetour(String messageRetour) { |
HashMap<String, VoteDetermination> votesComplets = UtilitairesServiceResultat.parserRetourListeVotesDetermination(messageRetour, propositionDetermination); |
if (votesComplets != null) { |
propositionDetermination.setVotesDeterminations(UtilitairesServiceResultat.parserRetourListeVotesDetermination(messageRetour, propositionDetermination)); |
vue.afficherCommentairesProposition(propositionDetermination); |
vue.stopChargement(); |
} else { |
vue.stopChargement(); |
} |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
vue.stopChargement(); |
} |
}); |
} |
@Override |
protected void gererEvenements() { |
// TODO Auto-generated method stub |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentaireVue.java |
---|
New file |
0,0 → 1,88 |
package org.tela_botanica.del.client.composants.commentaires; |
import java.util.List; |
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.modeles.Commentaire; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.FlexTable; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class DetailCommentaireVue extends Composite implements DetailCommentairePresenteur.Vue { |
private static DetailListeVotesDeterminationVueUIiBinder uiBinder = GWT.create(DetailListeVotesDeterminationVueUIiBinder.class); |
interface DetailListeVotesDeterminationVueUIiBinder extends UiBinder<Widget, DetailCommentaireVue> { |
}; |
@UiField |
HTMLPanel titre; |
@UiField |
Panel panneauChargement; |
@UiField |
FlexTable htmlTableau; |
public DetailCommentaireVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public void afficherCommentairesProposition(PropositionDetermination propositionDetermination) { |
htmlTableau.clear(); |
creerEntetes(); |
if (propositionDetermination.getCommentaire() != null && propositionDetermination.getCommentaire() != "") { |
htmlTableau.setHTML(2, 1, propositionDetermination.getAuteur()); |
htmlTableau.setHTML(2, 2, propositionDetermination.getCommentaire()); |
htmlTableau.setHTML(2, 3, propositionDetermination.getDate() + ""); |
} |
creerListeCommentaireRecursive(propositionDetermination.getListeCommentaires()); |
} |
private void creerListeCommentaireRecursive(List<Commentaire> commentaires) { |
for (Commentaire commentaire : commentaires) { |
chargerCommentaire(commentaire); |
if (commentaire.getListeCommentaires().size() > 0) { |
creerListeCommentaireRecursive(commentaire.getListeCommentaires()); |
} |
} |
} |
private void chargerCommentaire(Commentaire commentaire) { |
int ligne = htmlTableau.getRowCount() + 1; |
htmlTableau.setHTML(ligne, 1, commentaire.getAuteur()); |
htmlTableau.setHTML(ligne, 2, commentaire.getCommentaire()); |
htmlTableau.setHTML(ligne, 3, commentaire.getDate() + ""); |
} |
private void creerEntetes() { |
htmlTableau.setHTML(1, 1, I18n.getVocabulary().contributeur()); |
htmlTableau.setHTML(1, 2, I18n.getVocabulary().commentaire()); |
htmlTableau.setHTML(1, 3, I18n.getVocabulary().date()); |
} |
@Override |
public void startChargement() { |
panneauChargement.setHeight((this.getOffsetHeight() / 2) + "px"); |
panneauChargement.setWidth((this.getOffsetWidth() / 2) + "px"); |
panneauChargement.setVisible(true); |
} |
@Override |
public void stopChargement() { |
panneauChargement.setVisible(false); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/commentaires/detailCommentaireVue.css |
---|
New file |
0,0 → 1,20 |
.conteneurTableauVotes { |
z-index: 1500; |
padding: 30px; |
padding-right: 21px; |
padding-top: 20px; |
background: white; |
width: 370px; |
margin: 0 auto; |
margin-top: 5%; |
padding-bottom:50px; |
} |
.table { |
border:solid 1px #DDD; |
width: 100%; |
} |
.chargement { |
padding-left: 165px; |
} |
/trunk/src/org/tela_botanica/del/client/modeles/PropositionDetermination.java |
---|
9,17 → 9,16 |
private static final long serialVersionUID = 840032625524143547L; |
private String id, espece, commentaire; |
private int nbCommentaires = 0; |
private Map<String, VoteDetermination> votesDeterminations = new HashMap<String, VoteDetermination>(); |
private Observation observation; |
public PropositionDetermination(String id, Contributeur contributeur, String texte) { |
setId(id); |
setContributeur(contributeur); |
setCommentaire(texte); |
} |
public PropositionDetermination(Observation observation) { |
this.observation = observation; |
} |
51,7 → 50,7 |
public void setVotesDeterminations(Map<String, VoteDetermination> votesDeterminations) { |
this.votesDeterminations = votesDeterminations; |
} |
public boolean utilisateurAVotePourDetermination(String idContributeur) { |
return votesDeterminations.containsKey(idContributeur); |
} |
63,7 → 62,7 |
public void setObservation(Observation observation) { |
this.observation = observation; |
} |
public void setCommentaire(String commentaire) { |
this.commentaire = commentaire; |
} |
71,16 → 70,19 |
public String getCommentaire() { |
return commentaire; |
} |
public void setNbCommentaires(int nbCommentaires) { |
this.nbCommentaires = nbCommentaires; |
} |
public int getTotalCommentaires() { |
if(nbCommentaires == 0) { |
nbCommentaires = super.getTotalCommentaires(); |
if (nbCommentaires == 0) { |
nbCommentaires = super.getTotalCommentaires(); |
if (this.getCommentaire() != null&&this.getCommentaire()!="") { |
nbCommentaires += 1; |
} |
} |
return nbCommentaires; |
} |
} |