/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationVue.ui.xml |
---|
New file |
0,0 → 1,26 |
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' |
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' |
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" |
ui:generateLocales="default"> |
<ui:with field='res' type='org.tela_botanica.del.client.resources.Ressources' /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="observationdetermination.css" /> |
<g:HTMLPanel> |
<g:HTMLPanel ui:field="zoneRss" styleName="{style.rss}"></g:HTMLPanel> |
<g:HTMLPanel styleName="{style.determinationOriginale}"> |
<g:Label styleName="petit {style.headerTableau} {style.gauche}">Score</g:Label> |
<g:Label styleName="petit {style.headerTableau} {style.gauche} {style.determInitiale}">Détermination initiale</g:Label> |
<g:Label styleName="petit {style.headerTableau} {style.milieu}">Voter</g:Label> |
<g:Label styleName="petit {style.headerTableau} {style.droite}">Comm.</g:Label> |
<g:HTMLPanel styleName="{style.determination} {style.determinationOriginale}" ui:field="tableauPropositionOriginale" /> |
</g:HTMLPanel> |
<g:HTML><br class="nettoyage"></br></g:HTML> |
<g:HTMLPanel styleName="{style.determinationOriginale}" ui:field="zonePropositions"> |
<g:Label styleName="petit {style.headerTableau} {style.gauche}">Score</g:Label> |
<g:Label styleName="petit {style.headerTableau} {style.gauche} {style.determInitiale}">Espèces proposées</g:Label> |
<g:HTMLPanel styleName="{style.determination}" ui:field="tableauPropositions" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationPresenteur.java |
---|
New file |
0,0 → 1,126 |
package org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations; |
import java.util.Collection; |
import java.util.Collections; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
import java.util.TreeMap; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.rss.RssPresenteur; |
import org.tela_botanica.del.client.composants.rss.RssVue; |
import org.tela_botanica.del.client.modeles.MoyenneVote; |
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; |
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.utils.ComparateurPropositionDetermination; |
import org.tela_botanica.del.client.vues.identiplante.resultats.votes.DetailVoteObservationPresenteur; |
import org.tela_botanica.del.client.vues.identiplante.resultats.votes.DetailVoteObservationVue; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class ObservationDeterminationPresenteur { |
public abstract interface Vue extends IsWidget { |
public void viderTableau(); |
public void viderTableauPropositionOriginale(); |
public HasWidgets getTableauPropositions(); |
public HasWidgets getTableauPropositionOriginale(); |
void setNbVotes(int index, int nbVotes); |
void setNbCommentaires(int index, int nbCommentaires); |
int getIndexLigneProposition(LignePropositionVue lignePropositionVue); |
public void masquerPropositions(); |
public HasWidgets getZoneRss(); |
} |
private Vue vue; |
private List<PropositionDetermination> propositions; |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
public ObservationDeterminationPresenteur(Vue vue, List<PropositionDetermination> propositions) { |
this.propositions = propositions; |
this.vue = vue; |
} |
public void chargerPropositionOriginale(PropositionDetermination proposition) { |
vue.viderTableauPropositionOriginale(); |
// 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); |
LignePropositionVue lignePropositionVue = new LignePropositionVue(panneau); |
LignePropositionPresenteur lignePropositionPresenteur = new LignePropositionPresenteur(lignePropositionVue, proposition); |
lignePropositionPresenteur.go(vue.getTableauPropositionOriginale()); |
new RssPresenteur(new RssVue(), proposition.getObservation(), "").go(vue.getZoneRss()); |
} |
public void classerPropositions(List<PropositionDetermination> propositions) { |
Collections.sort(propositions, new ComparateurPropositionDetermination()); |
} |
public void chargerPropositions() { |
vue.viderTableau(); |
int nbPropositions = 0; |
classerPropositions(propositions); |
for (PropositionDetermination proposition : propositions) { |
if (proposition.estPropositionInitiale()) { |
this.chargerPropositionOriginale(proposition); |
} else { |
nbPropositions++; |
// 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); |
LignePropositionVue lignePropositionVue = new LignePropositionVue(panneau); |
LignePropositionPresenteur lignePropositionPresenteur = new LignePropositionPresenteur(lignePropositionVue, proposition); |
lignePropositionPresenteur.go(vue.getTableauPropositions()); |
} |
} |
if (nbPropositions > 0) { |
} else { |
vue.masquerPropositions(); |
} |
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() { |
@Override |
public void onVoteDetermination(VoteDetermination event) { |
surVoteDetermination(event); |
} |
}); |
} |
public void setPropositions(List<PropositionDetermination> propositions) { |
this.propositions = propositions; |
chargerPropositions(); |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
chargerPropositions(); |
} |
public void surVoteDetermination(VoteDetermination voteDetermination) { |
int indexProposition = propositions.indexOf(voteDetermination.getPropositionDetermination()); |
if (indexProposition != -1) { |
vue.setNbVotes(indexProposition, voteDetermination.getPropositionDetermination().getVotesDeterminations().size()); |
} |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationVue.java |
---|
New file |
0,0 → 1,74 |
package org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations; |
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.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.Widget; |
public class ObservationDeterminationVue extends Composite implements ObservationDeterminationPresenteur.Vue { |
// Gestion d'UiBinder |
interface Binder extends UiBinder<Widget, ObservationDeterminationVue> { |
} |
private static Binder binder = GWT.create(Binder.class); |
@UiField |
protected HTMLPanel zoneRss, tableauPropositions, tableauPropositionOriginale, zonePropositions; |
public HTMLPanel getTableauPropositions() { |
return tableauPropositions; |
} |
public ObservationDeterminationVue() { |
initWidget(binder.createAndBindUi(this)); |
} |
@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 |
LignePropositionVue lignePropositionVue = (LignePropositionVue) tableauPropositions.getWidget(index); |
lignePropositionVue.setNbVotes(nbVotes); |
} |
@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); |
lignePropositionVue.setNbVotes(nbCommentaires); |
} |
@Override |
public void viderTableau() { |
tableauPropositions.clear(); |
} |
@Override |
public HasWidgets getTableauPropositionOriginale() { |
return tableauPropositionOriginale; |
} |
public void masquerPropositions() { |
this.zonePropositions.setVisible(false); |
} |
@Override |
public void viderTableauPropositionOriginale() { |
tableauPropositionOriginale.clear(); |
} |
public HasWidgets getZoneRss() { |
return zoneRss; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/LignePropositionVue.ui.xml |
---|
New file |
0,0 → 1,19 |
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' |
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' |
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" |
ui:generateLocales="default"> |
<ui:with field='res' type='org.tela_botanica.del.client.resources.Ressources' /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="observationdetermination.css" /> |
<g:HTMLPanel styleName="{style.ligneProposition}"> |
<g:HTMLPanel ui:field="conteneurPanneauDeterminations" /> |
<g:FocusPanel ui:field="conteneurPanneauVotes" styleName="{style.nombreVotes}"> |
<g:HTML ui:field="nbVotesHtml" styleName="{style.infobulle}"/> |
</g:FocusPanel> |
<g:FocusPanel ui:field="conteneurPanneauCommentaires" styleName="{style.commentaires}"> |
<g:HTML ui:field="nbCommentairesHtml" styleName="{style.infobulle} {style.infobulleCommentaire}"/> |
</g:FocusPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/LignePropositionPresenteur.java |
---|
New file |
0,0 → 1,105 |
package org.tela_botanica.del.client.vues.identiplante.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 org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
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 { |
private int nbCommentaires, nbVotes; |
public abstract interface Vue extends IsWidget { |
public HasClickHandlers getZoneNbVotes(); |
public HasClickHandlers getZoneNbCommentaires(); |
public void setNbVotes(int nbVotes); |
public void setNbCommentaires(int nbCommentaires); |
public void enleverLienCommentaires(); |
public void enleverLienVotes(); |
public void ajouterLienVotes(); |
} |
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()); |
chargerPropositionDetermination(); |
gererEvenements(); |
} |
public void chargerPropositionDetermination() { |
this.nbCommentaires = propositionDetermination.getTotalCommentaires(); |
this.nbVotes = propositionDetermination.getVotesDeterminations().size(); |
vue.setNbCommentaires(nbCommentaires); |
vue.setNbVotes(nbVotes); |
} |
public void gererEvenements() { |
if (nbVotes > 0) { |
vue.getZoneNbVotes().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if (nbVotes > 0) { |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur( |
new FenetreOverlayDefilanteVue()); |
DetailListeVotesDeterminationPresenteur detailListeVotesDeterminationPresenteur = new DetailListeVotesDeterminationPresenteur( |
new DetailListeVotesDeterminationVue()); |
fenetreOverlaySimplePresenteur |
.ouvrirFenetreModale(detailListeVotesDeterminationPresenteur); |
detailListeVotesDeterminationPresenteur |
.afficherVotes(propositionDetermination); |
} |
} |
}); |
vue.ajouterLienVotes(); |
} else { |
vue.enleverLienVotes(); |
} |
if (nbCommentaires > 0) { |
vue.getZoneNbCommentaires().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if (nbCommentaires > 0) { |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur( |
new FenetreOverlayDefilanteVue()); |
DetailCommentairePresenteur detailCommentairePresenteur = new DetailCommentairePresenteur( |
new DetailCommentaireVue(), |
new CommentaireServiceConcret(), |
propositionDetermination); |
fenetreOverlaySimplePresenteur |
.ouvrirFenetreModale(detailCommentairePresenteur); |
detailCommentairePresenteur.afficherCommentaires(); |
} |
} |
}); |
} else { |
vue.enleverLienCommentaires(); |
} |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/LignePropositionVue.java |
---|
New file |
0,0 → 1,75 |
package org.tela_botanica.del.client.vues.identiplante.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.ClickListener; |
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; |
import com.google.gwt.user.client.ui.Widget; |
public class LignePropositionVue extends Composite implements LignePropositionPresenteur.Vue { |
// Gestion d'UiBinder |
interface MyUiBinder extends UiBinder<Widget, LignePropositionVue> { |
} |
private static MyUiBinder uibinder = GWT.create(MyUiBinder.class); |
@UiField |
HTMLPanel conteneurPanneauDeterminations; |
@UiField |
FocusPanel conteneurPanneauVotes, conteneurPanneauCommentaires; |
@UiField |
HTML nbVotesHtml, nbCommentairesHtml; |
public LignePropositionVue(IsWidget panneauDeterminations) { |
initWidget(uibinder.createAndBindUi(this)); |
conteneurPanneauDeterminations.add(panneauDeterminations); |
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 + ""); |
if (nbVotes == 0) { |
nbVotesHtml.setVisible(false); |
} |
} |
public void setNbCommentaires(int nbCommentaires) { |
nbCommentairesHtml.setHTML(nbCommentaires + ""); |
if (nbCommentaires == 0) { |
nbCommentairesHtml.setVisible(false); |
} |
} |
public void enleverLienCommentaires() { |
conteneurPanneauCommentaires.setVisible(false); |
} |
public void enleverLienVotes() { |
nbVotesHtml.setVisible(false); |
conteneurPanneauVotes.removeStyleName("nombreVotes"); |
} |
public void ajouterLienVotes() { |
nbVotesHtml.setVisible(true); |
conteneurPanneauVotes.addStyleName("nombreVotes"); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/observationdetermination.css |
---|
New file |
0,0 → 1,90 |
.determinationOriginale { |
padding-top:3px; |
} |
.determInitiale, .especesProposees { |
padding-left:10px; |
} |
.headerTableau { |
display:inline; |
} |
.gauche { |
float:left; |
} |
.milieu { |
margin:0 0 0 115px; |
float:left |
} |
.droite { |
float:right; |
} |
.determination { |
margin: -23px 1px 5px 0; |
} |
.especesProposees { |
margin-top:15px; |
} |
.determination>div { |
margin-top: 2px; |
margin-bottom: 30px; |
} |
.ligneProposition { |
clear:both; |
} |
.ligneProposition>div { |
display: block; |
float: left; |
margin-right: 5px; |
} |
.nombreVotes { |
width:15px; |
height:16px; |
padding-left: 10px; |
margin-top:1px; |
} |
.commentaires { |
background: url("./img/comment.png") no-repeat scroll 0 0 transparent; |
cursor: pointer; |
height: 20px; |
padding-left: 20px; |
margin-left:13px; |
} |
.infobulle { |
background: none repeat scroll 0 0 #1A5AC3; |
color: white; |
font-size: 11px; |
height: 11px; |
line-height: 0.9; |
margin-left: 2px; |
margin-top: 8px; |
min-width: 7px; |
padding: 1px; |
position: absolute; |
} |
.infobulleCommentaire { |
margin-left:-9px; |
} |
.zonePropositions { |
height:130px; |
text-align:left; |
margin-top:60px; |
} |
.rss { |
position:absolute; |
margin-top:-25px; |
margin-left:446px; |
} |