Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1195 → Rev 1196

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