/trunk/src/org/tela_botanica/del/client/composants/votes/details/detailListeVotesDeterminationVue.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/votes/details/DetailListeVotesDeterminationVue.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="detailListeVotesDeterminationVue.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/votes/details/DetailListeVotesDeterminationPresenteur.java |
---|
New file |
0,0 → 1,63 |
package org.tela_botanica.del.client.composants.votes.details; |
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 DetailListeVotesDeterminationPresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
public void afficherVotes(PropositionDetermination propositionDetermination); |
void ajouterVote(VoteDetermination vote); |
void stopChargement(); |
void startChargement(); |
} |
private Vue vue; |
public DetailListeVotesDeterminationPresenteur(Vue vue) { |
this.vue = vue; |
} |
public void go(HasWidgets container) { |
container.add(vue.asWidget()); |
} |
public void afficherVotes(final PropositionDetermination propositionDetermination) { |
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.afficherVotes(propositionDetermination); |
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/votes/details/DetailListeVotesDeterminationVue.java |
---|
New file |
0,0 → 1,99 |
package org.tela_botanica.del.client.composants.votes.details; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import org.tela_botanica.del.client.modeles.VoteDetermination; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.i18n.client.DateTimeFormat; |
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat; |
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.HTML; |
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 DetailListeVotesDeterminationVue extends Composite implements DetailListeVotesDeterminationPresenteur.Vue { |
private static DetailListeVotesDeterminationVueUIiBinder uiBinder = GWT.create(DetailListeVotesDeterminationVueUIiBinder.class); |
interface DetailListeVotesDeterminationVueUIiBinder extends UiBinder<Widget, DetailListeVotesDeterminationVue> { |
}; |
@UiField |
HTMLPanel titre; |
@UiField |
Panel panneauChargement; |
@UiField |
FlexTable htmlTableau; |
public DetailListeVotesDeterminationVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public void afficherVotes(PropositionDetermination propositionDetermination) { |
HTML htmlTitre = new HTML(propositionDetermination.getEspece()); |
titre.add(htmlTitre); |
Map<String, VoteDetermination> listeVotes = propositionDetermination.getVotesDeterminations(); |
htmlTableau.clear(); |
creerEntetes(); |
for (Iterator<String> iterator = listeVotes.keySet().iterator(); iterator.hasNext();) { |
VoteDetermination voteDetermination = listeVotes.get(iterator.next()); |
ajouterVote(voteDetermination); |
} |
} |
private void creerEntetes() { |
htmlTableau.setHTML(1, 1, I18n.getVocabulary().contributeur()); |
htmlTableau.setHTML(1, 2, I18n.getVocabulary().valeurVote()); |
htmlTableau.setHTML(1, 3, I18n.getVocabulary().date()); |
} |
@Override |
public void ajouterVote(VoteDetermination vote) { |
int index = htmlTableau.getRowCount() + 1; |
String valeurVote = (vote.getVote() == 1) ? I18n.getVocabulary().oui() : I18n.getVocabulary().non(); |
String contributeur; |
try { |
contributeur = Integer.parseInt(vote.getContributeur())+""; |
} catch (Exception e) { |
contributeur = I18n.getVocabulary().anonyme(); |
} |
if(vote.getAuteur() != null) { |
contributeur = vote.getAuteur().getNomComplet(); |
} |
htmlTableau.setHTML(index, 1, contributeur); |
htmlTableau.setHTML(index, 2, valeurVote+""); |
htmlTableau.setHTML(index, 3, DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(vote.getDate())); |
} |
@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/vues/rechercheobservations/resultats/observationdeterminations/LignePropositionVue.java |
---|
1,9 → 1,13 |
package org.tela_botanica.del.client.vues.rechercheobservations.resultats.observationdeterminations; |
import org.tela_botanica.del.client.i18n.I18n; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
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.FocusPanel; |
import com.google.gwt.user.client.ui.HTML; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.IsWidget; |
17,9 → 21,12 |
private static MyUiBinder uibinder = GWT.create(MyUiBinder.class); |
@UiField |
HTMLPanel conteneurPanneauDeterminations, conteneurPanneauVotes, conteneurPanneauCommentaires; |
HTMLPanel conteneurPanneauDeterminations, conteneurPanneauCommentaires; |
@UiField |
FocusPanel conteneurPanneauVotes; |
@UiField |
HTML nbVotesHtml, nbCommentairesHtml; |
public LignePropositionVue(IsWidget panneauDeterminations, int nbVotes, int nbCommentaires) { |
26,13 → 33,18 |
initWidget(uibinder.createAndBindUi(this)); |
conteneurPanneauDeterminations.add(panneauDeterminations); |
nbVotesHtml = new HTML(nbVotes+""); |
nbVotesHtml.setHTML(nbVotes+""); |
nbCommentairesHtml = new HTML(nbCommentaires+""); |
conteneurPanneauVotes.add(nbVotesHtml); |
conteneurPanneauVotes.setTitle(I18n.getVocabulary().voirDetailVotes()); |
conteneurPanneauCommentaires.add(nbCommentairesHtml); |
} |
public HasClickHandlers getZoneNbVotes() { |
return conteneurPanneauVotes; |
} |
public void setNbVotes(int nbVotes) { |
nbVotesHtml.setHTML(nbVotes+""); |
} |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observationdeterminations/observationdetermination.css |
---|
20,6 → 20,7 |
height:16px; |
background:url('./img/user.png') no-repeat; |
padding-left: 10px; |
cursor: pointer; |
} |
.commentaires { |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observationdeterminations/ObservationDeterminationPresenteur.java |
---|
2,7 → 2,10 |
import java.util.List; |
import org.tela_botanica.del.client.i18n.I18n; |
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; |
11,6 → 14,8 |
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; |
19,14 → 24,16 |
public abstract interface Vue extends IsWidget { |
public void viderTableau(); |
public void ajouterElementAuTableauProposition(IsWidget Element, int nbVotes, int nbCommentaires); |
public void ajouterElementAuTableauProposition(LignePropositionVue vue); |
void setNbVotes(int index, int nbVotes); |
void setNbCommentaires(int index, int nbCommentaires); |
int getIndexLigneProposition(LignePropositionVue lignePropositionVue); |
} |
private Vue vue; |
private List<PropositionDetermination> propositions; |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
public ObservationDeterminationPresenteur(Vue vue, List<PropositionDetermination> propositions) { |
this.propositions = propositions; |
42,7 → 49,10 |
presenteurVote.go(panneau); |
int nbCommentaires = proposition.getListeCommentaires().size(); |
int nbVotes = proposition.getVotesDeterminations().size(); |
vue.ajouterElementAuTableauProposition(panneau, nbVotes, nbCommentaires); |
LignePropositionVue ligneProposition = new LignePropositionVue(panneau, nbVotes, nbCommentaires); |
gererEvenementClicNbVotes(ligneProposition); |
vue.ajouterElementAuTableauProposition(ligneProposition); |
} |
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() { |
53,6 → 63,19 |
}); |
} |
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 setPropositions(List<PropositionDetermination> propositions) { |
this.propositions = propositions; |
chargerPropositions(); |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observationdeterminations/ObservationDeterminationVue.java |
---|
5,7 → 5,6 |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Widget; |
public class ObservationDeterminationVue extends Composite implements ObservationDeterminationPresenteur.Vue { |
28,11 → 27,15 |
} |
@Override |
public void ajouterElementAuTableauProposition(IsWidget element, int nbVotes, int nbCommentaires) { |
LignePropositionVue ligneProposition = new LignePropositionVue(element, nbVotes, nbCommentaires); |
public void ajouterElementAuTableauProposition(LignePropositionVue ligneProposition) { |
tableauPropositions.add(ligneProposition); |
} |
@Override |
public int getIndexLigneProposition(LignePropositionVue lignePropositionVue) { |
return tableauPropositions.getWidgetIndex(lignePropositionVue); |
} |
@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 |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observationdeterminations/LignePropositionVue.ui.xml |
---|
8,9 → 8,9 |
<ui:style src="observationdetermination.css" /> |
<g:HTMLPanel styleName="{style.ligneProposition}"> |
<g:HTMLPanel ui:field="conteneurPanneauDeterminations" /> |
<g:HTMLPanel ui:field="conteneurPanneauVotes" styleName="{style.nombreVotes}"> |
<g:FocusPanel ui:field="conteneurPanneauVotes" styleName="{style.nombreVotes}"> |
<g:HTML ui:field="nbVotesHtml"/> |
</g:HTMLPanel> |
</g:FocusPanel> |
<g:HTMLPanel ui:field="conteneurPanneauCommentaires" styleName="{style.commentaires}"> |
<g:HTML ui:field="nbCommentairesHtml"/> |
</g:HTMLPanel> |