Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 921 → Rev 922

/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/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/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/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/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;
}
}