Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1524 → Rev 1535

/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplante.css
New file
0,0 → 1,48
 
.zoneObservation {
width: 100%;
clear: left;
margin-top: 10px;
}
 
.barreNavigation {
margin-top: 0;
padding-bottom: 20px;
}
 
.votes {
padding-left: 10px;
cursor: pointer;
}
 
.date {
padding-left: 10px;
cursor: pointer;
}
 
.zoneTri {
padding-left: 10px;
}
 
.boutonTriAsc, .boutonTriDesc {
border:none;
cursor:pointer;
}
.boutonTriAsc:hover, .boutonTriDesc:hover {
border-bottom:dotted 1px #8EB533
}
 
.boutonTriAsc {
height: 19px;
background: url(./img/fleche-haut.png) no-repeat
}
 
.boutonTriDesc {
height: 19px;
background: url(./img/fleche-bas.png) no-repeat
}
 
.aucunResultat{
text-align: left;
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/observation.css
New file
0,0 → 1,115
.observation {
width:480px;
padding:10px;
border: solid 1px #DDD;
}
 
.titrePropositions {
margin-top:-0px;
background:none;
}
 
.listePropositions {
background: none repeat scroll 0 0 #FAFAF0;
border-color: #DDDDDD;
border-radius: 0 10px 10px 0;
border-style: solid;
border-width: 1px 1px 1px 0;
box-shadow: 2px 2px 2px #DDDDDD;
min-height: 230px;
margin-top: 7px;
padding: 10px 10px 10px 16px;
width:470px;
}
 
.nomEspece {
padding:7px;
font-size:15px;
font-weight:bold;
background:rgba(100,100,100,0.5);
color:white;
cursor:pointer;
position:absolute;
width:236px;
}
 
.nomEspece:hover {
background:#8EB533;
}
 
.colonneImages {
min-width:260px;
background:url(./img/pasdephoto.jpg) no-repeat;
}
 
.description {
border: solid 1px #EEE;
border-width: 0 1px 0 0;
width: 270px;
padding: 10px;
margin: 0 1px 5px 0;
height: 150px
}
 
.determination {
padding: 10px;
margin: 0 1px 5px 0;
height: 150px
}
 
.photoPrincipale {
height: 20px;
float: left;
padding: 5px;
margin-bottom: 15px;
cursor: pointer
}
 
.panneauDeterminations {
text-align: right
}
 
.lienDetermination {
text-align: center;
padding: 5px;
color: blue;
cursor: pointer;
float: right;
margin: 5px;
text-decoration: underline;
}
 
.miniatures img {
height: 30px
}
 
.metadonnees {
}
 
.boutonDetermination {
background: url("./img/add.png") no-repeat scroll 5px 7px #DDDDDD;
border: 1px solid #AAAAAA;
cursor: pointer;
float: right;
margin-bottom: 5px;
margin-right: 5px;
margin-top: 10px;
padding: 5px 5px 5px 25px;
}
 
.ligneObservation {
margin-bottom: 10px;
}
 
.boutonDetermination:hover {
background-color: #AAA
}
 
.accesOutil {
margin-top: 15px;
}
 
.ajouterProposition {
margin-top:10px;
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/ObservationVue.ui.xml
New file
0,0 → 1,41
<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="observation.css" />
<g:HTMLPanel styleName="{style.ligneObservation} limiteMin limiteMax">
<g:HTMLPanel styleName="droite {style.listePropositions}">
<g:HTMLPanel styleName="{style.panneauDeterminations}">
<g:Label styleName="titre2 {style.titrePropositions}">Proposition des membres du réseau</g:Label>
<g:HTMLPanel ui:field="determinationsPanel" />
<g:HTMLPanel styleName="nettoyage">
<g:Button ui:field="boutonAjoutProposition" styleName="bouton-petit {style.ajouterProposition}"
text="{constants.proposerSaDetermination}" />
<g:Button ui:field="boutonAjoutCommentaire" styleName="bouton-petit"
text="{constants.ajouterCommentaire}" />
<g:Button ui:field="boutonPlusDeDetails" styleName="bouton-petit {style.ajouterProposition}"
text="Voir tous les commentaires" />
</g:HTMLPanel>
</g:HTMLPanel>
 
</g:HTMLPanel>
<g:HTMLPanel styleName="ligne ombre-faible arrondi {style.observation}">
<g:HTMLPanel styleName="colonne {style.colonneImages}">
<g:Label ui:field="nomEspece" styleName="{style.nomEspece}"></g:Label>
<g:HTMLPanel ui:field="imagesPanel" />
</g:HTMLPanel>
<g:HTMLPanel styleName="colonne">
<g:HTMLPanel ui:field="metadonnees" styleName="{style.metadonnees}" />
</g:HTMLPanel>
<g:HTML>
<br class="nettoyage" />
</g:HTML>
</g:HTMLPanel>
</g:HTMLPanel>
 
</ui:UiBinder>
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/ObservationPresenteur.java
New file
0,0 → 1,147
package org.tela_botanica.del.client.vues.identiplante.resultats.observations;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue;
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur;
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.ModeRecherche;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
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.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur;
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue;
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationPresenteur;
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationVue;
 
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 ObservationPresenteur extends Presenteur {
 
public interface Vue extends IsWidget {
public HasClickHandlers getBoutonAjoutProposition();
 
public HasWidgets getDeterminationsPanel();
 
public HasWidgets getImagesPanel();
 
public HasWidgets getMetadonneesPanel();
public HasClickHandlers getNomEspece();
 
public void setNomEspece(String nomEspece);
public HasClickHandlers getBoutonAjoutCommentaire();
public HasClickHandlers getBoutonPlusDeDetails();
}
 
private Vue vue;
 
private Observation observation;
private Image imagePrincipale;
 
private ObservationDeterminationPresenteur observationDeterminationPresenteur;
 
private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
 
public ObservationPresenteur(Vue vue, Observation observation, Image imagePrincipale) {
this.observation = observation;
this.vue = vue;
this.imagePrincipale=imagePrincipale;
chargerObservation();
}
 
public void chargerObservation() {
new ObservationImagesPresenteur(new ObservationImagesVue(), observation, imagePrincipale, ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS).go(vue.getImagesPanel());
new MetadonneesPresenteur(new MetadonneesVue(), observation, ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonneesPanel());
observationDeterminationPresenteur = new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionDeterminations());
observationDeterminationPresenteur.go(vue.getDeterminationsPanel());
vue.setNomEspece(observation.getNomRetenu());
gererEvenements();
}
 
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
}
 
protected void gererEvenements() {
 
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
@Override
public void onAjoutDetermination(EvenementAjoutDetermination event) {
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
fenetreOverlaySimplePresenteur.fermerFenetreModale();
ajouterPropositionDetermination(event.getPropositionDetermination());
}
}
});
 
vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
List<Image> images = observation.getImages();
if (images.size() > 0) {
CacheClient.getInstance().setImageCourante(images.get(0));
} else {
CacheClient.getInstance().setImageCourante(null);
}
CacheClient.getInstance().setObservationCourante(observation);
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret()));
}
});
ClickHandler versDetails = new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
}
};
vue.getNomEspece().addClickHandler(versDetails);
vue.getBoutonPlusDeDetails().addClickHandler(versDetails);
vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(observation, new CommentaireServiceConcret(), new FormulaireCommentaireVue());
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur);
}
});
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
 
@Override
public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
fenetreOverlaySimplePresenteur.fermerFenetreModale();
}
}
});
}
 
private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
observationDeterminationPresenteur.setPropositions(observation.getPropositionDeterminations());
}
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/ObservationVue.java
New file
0,0 → 1,76
package org.tela_botanica.del.client.vues.identiplante.resultats.observations;
 
 
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.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class ObservationVue extends Composite implements ObservationPresenteur.Vue {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, ObservationVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
Button boutonAjoutProposition, boutonAjoutCommentaire, boutonPlusDeDetails;
 
@UiField
Panel determinationsPanel, imagesPanel, metadonnees;
@UiField Label nomEspece;
 
public ObservationVue() {
initWidget(binder.createAndBindUi(this));
}
 
@Override
public HasClickHandlers getBoutonAjoutProposition() {
return boutonAjoutProposition;
}
@Override
public HasClickHandlers getBoutonAjoutCommentaire() {
return boutonAjoutCommentaire;
}
@Override
public HasClickHandlers getBoutonPlusDeDetails() {
return boutonPlusDeDetails;
}
 
public Panel getDeterminationsPanel() {
return determinationsPanel;
}
 
public void setDeterminationsPanel(Panel determinationsPanel) {
this.determinationsPanel = determinationsPanel;
}
 
public Panel getImagesPanel() {
return imagesPanel;
}
public Panel getMetadonneesPanel() {
return metadonnees;
}
 
@Override
public HasClickHandlers getNomEspece() {
return nomEspece;
}
 
@Override
public void setNomEspece(String nomEspece) {
this.nomEspece.setText(nomEspece);
}
 
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/votes/DetailVoteObservationVue.ui.xml
New file
0,0 → 1,12
<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"/>
 
<g:HTMLPanel>
<g:HTMLPanel ui:field="zoneCertitude" />
<g:HTMLPanel ui:field="zoneCommentaires" />
<g:HTMLPanel ui:field="zoneNomEspece" />
<g:HTMLPanel ui:field="zoneVoter" />
</g:HTMLPanel>
</ui:UiBinder>
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/votes/DetailVoteObservationPresenteur.java
New file
0,0 → 1,41
package org.tela_botanica.del.client.vues.identiplante.resultats.votes;
 
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur;
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVoteVue;
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class DetailVoteObservationPresenteur {
 
public interface Vue extends IsWidget {
public HasWidgets getZoneCertitude();
 
public HasWidgets getZoneCommentaires();
 
public HasWidgets getZoneNomEspece();
 
public HasWidgets getZoneVoter();
}
 
private Vue vue;
private PropositionDetermination proposition;
 
public DetailVoteObservationPresenteur(Vue vue, PropositionDetermination proposition) {
this.vue = vue;
this.proposition = proposition;
}
 
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
BarreRepartitionVotePresenteur presenteurVote = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret());
MoyenneVote moyenne = CalculVoteDeterminationService.calculerVoteDetermination(proposition);
presenteurVote.afficherVotes(moyenne);
presenteurVote.go(vue.getZoneCertitude());
}
 
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/votes/DetailVoteObservationVue.java
New file
0,0 → 1,40
package org.tela_botanica.del.client.vues.identiplante.resultats.votes;
 
 
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.HasWidgets;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class DetailVoteObservationVue extends Composite implements DetailVoteObservationPresenteur.Vue {
 
interface Binder extends UiBinder<Widget, DetailVoteObservationVue> {}
 
private static Binder binder = GWT.create(Binder.class);
 
protected @UiField Panel zoneCertitude, zoneCommentaires, zoneNomEspece, zoneVoter;
public DetailVoteObservationVue() {
initWidget(binder.createAndBindUi(this));
}
public HasWidgets getZoneCertitude() {
return zoneCertitude;
}
public HasWidgets getZoneCommentaires() {
return zoneCommentaires;
}
public HasWidgets getZoneNomEspece() {
return zoneNomEspece;
}
public HasWidgets getZoneVoter() {
return zoneVoter;
}
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationVue.ui.xml
New file
0,0 → 1,30
<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 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:HTMLPanel styleName="{style.determination} {style.determinationOriginale}" ui:field="tableauPropositionInitiale" />
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.determinationOriginale} nettoyage {style.lignePropositionRetenue}" ui:field="lignePropositionRetenue">
<g:Label styleName="petit {style.headerTableau} {style.gauche}">Score</g:Label>
<g:Label styleName="petit {style.headerTableau} {style.gauche} {style.determInitiale}">Détermination retenue</g:Label>
<g:Label styleName="petit {style.headerTableau} {style.milieu}">Voter</g:Label>
<g:HTMLPanel styleName="{style.determination} {style.determinationOriginale}" ui:field="tableauPropositionRetenue" />
</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>
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationPresenteur.java
New file
0,0 → 1,139
package org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations;
 
import java.util.Collections;
import java.util.List;
 
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.Observation;
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.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 viderTableauPropositionInitiale();
public HasWidgets getTableauPropositions();
 
public HasWidgets getTableauPropositionInitiale();
public void viderTableauPropositionRetenue();
public HasWidgets getTableauPropositionRetenue();
 
void setNbVotes(int index, int nbVotes);
 
void setNbCommentaires(int index, int nbCommentaires);
 
int getIndexLigneProposition(LignePropositionVue lignePropositionVue);
 
public void masquerPropositions();
public void toggleTableauPropositionRetenue();
}
private Vue vue;
private List<PropositionDetermination> propositions;
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
 
public ObservationDeterminationPresenteur(Vue vue, List<PropositionDetermination> propositions) {
this.propositions = propositions;
this.vue = vue;
}
 
public void chargerPropositionRetenue(PropositionDetermination proposition) {
vue.viderTableauPropositionRetenue();
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.getTableauPropositionRetenue());
vue.toggleTableauPropositionRetenue();
}
public void chargerPropositionOriginale(PropositionDetermination proposition) {
vue.viderTableauPropositionInitiale();
// 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.getTableauPropositionInitiale());
}
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()) {
chargerPropositionOriginale(proposition);
} else if (proposition.estPropositionRetenue()) {
chargerPropositionRetenue(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());
}
}
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationVue.java
New file
0,0 → 1,87
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
HTMLPanel tableauPropositions, tableauPropositionInitiale, zonePropositions, tableauPropositionRetenue, lignePropositionRetenue;
 
public HTMLPanel getTableauPropositions() {
return tableauPropositions;
}
 
public ObservationDeterminationVue() {
initWidget(binder.createAndBindUi(this));
toggleTableauPropositionRetenue();
}
 
@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 getTableauPropositionInitiale() {
return tableauPropositionInitiale;
}
public void masquerPropositions() {
this.zonePropositions.setVisible(false);
}
 
@Override
public void viderTableauPropositionInitiale() {
tableauPropositionInitiale.clear();
}
@Override
public void viderTableauPropositionRetenue() {
tableauPropositionRetenue.clear();
}
 
@Override
public HasWidgets getTableauPropositionRetenue() {
return tableauPropositionRetenue;
}
 
@Override
public void toggleTableauPropositionRetenue() {
lignePropositionRetenue.setVisible(!lignePropositionRetenue.isVisible());
}
}
/tags/v1.1-helium/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>
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/LignePropositionPresenteur.java
New file
0,0 → 1,125
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.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.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() {
gererEvenementsVotes();
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();
}
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
@Override
public void onVoteDetermination(VoteDetermination event) {
if(event.getPropositionDetermination() == propositionDetermination) {
if(nbVotes == 0) {
nbVotes++;
gererEvenementsVotes();
}
vue.setNbVotes(nbVotes);
}
}
});
}
 
private void gererEvenementsVotes() {
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();
}
}
}
/tags/v1.1-helium/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");
}
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/observationdetermination.css
New file
0,0 → 1,94
.determinationOriginale {
padding-top:3px;
}
 
.lignePropositionRetenue {
}
 
.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;
}
 
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplanteVue.ui.xml
New file
0,0 → 1,31
<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="ResultatsIdentiplante.css" />
<g:HTMLPanel>
<g:HTMLPanel styleName="{style.barreNavigation} limiteMax">
<g:VerticalPanel ui:field="zonePaginationHaut" styleName="gauche" />
<g:HTMLPanel ui:field="zoneTri" styleName="droite {style.zoneTri} petit">
<g:Label text="{constants.tri}" styleName="gauche"/>
<g:HTMLPanel ui:field="triParDate" styleName="gauche">
<g:Label text="{constants.triParDate}" styleName="gauche {style.date}" ui:field="labelDate"/>
<g:Button title="{constants.triParDateAscendant}" ui:field="triParDateAscendant" styleName="{style.boutonTriAsc} gauche" />
<g:Button title="{constants.triParDateDescendant}" ui:field="triParDateDescendant" styleName="{style.boutonTriDesc} gauche" />
</g:HTMLPanel>
</g:HTMLPanel>
</g:HTMLPanel>
<g:HTMLPanel>
<g:HTMLPanel ui:field="panneauChargement">
<g:Image url="./img/wait.gif"></g:Image>
</g:HTMLPanel>
<g:Label ui:field="aucunResultat" styleName="{style.aucunResultat}" text="{constants.aucunResultat}" visible="false" />
<g:HTMLPanel ui:field="zoneObservations" styleName="{style.zoneObservation}" />
<g:VerticalPanel ui:field="zonePaginationBas" />
</g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplantePresenteur.java
New file
0,0 → 1,263
package org.tela_botanica.del.client.vues.identiplante.resultats;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.InformationsRecherche;
import org.tela_botanica.del.client.modeles.ModeTri;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
import org.tela_botanica.del.client.services.rest.ObservationService;
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
import org.tela_botanica.del.client.vues.identiplante.resultats.observations.ObservationPresenteur;
import org.tela_botanica.del.client.vues.identiplante.resultats.observations.ObservationVue;
 
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.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class ResultatsIdentiplantePresenteur extends Presenteur {
 
/**
* Interface vue : création des composants graphiques
* */
public abstract interface Vue extends IsWidget {
public HasWidgets getZoneObservations();
 
public HasWidgets getZonePaginationHaut();
 
public HasWidgets getZonePaginationBas();
 
public void startChargement();
 
public void stopChargement();
 
public void nettoyer();
 
public HasClickHandlers getTriParDateAscendant();
 
public HasClickHandlers getTriParDateDescendant();
 
public void afficherElementsAucunResultatTrouve();
 
public void afficherElementsResultatsTrouves();
 
public HasClickHandlers getLabelDate();
 
public void setModeTri(ModeTri mode);
}
 
private Vue vue;
private ObservationService serviceObs;
private ModeTri triCourantDate = ModeTri.TRI_DESCENDANT;
private CacheClient cache = CacheClient.getInstance();
private String statut;
 
/**
* Constructeur de la classe
*
* @param ObservationService
* serviceObs le service pour récupérer les observations
* @Vue Vue l'objet implémentant l'interface
* */
public ResultatsIdentiplantePresenteur(ObservationService serviceObs, Vue vue) {
String statut = CacheClient.getInstance().getFiltreStatut();
this.vue = vue;
ModeTri initTriCourantDate = CacheClient.getInstance().getInformationsRechercheObservation().getTriParDate();
initTriCourantDate = (initTriCourantDate == null) ? triCourantDate : initTriCourantDate;
triCourantDate = initTriCourantDate;
vue.setModeTri(triCourantDate);
this.serviceObs = serviceObs;
this.statut = statut;
}
 
/**
* Lancer l'affichage de la recherche dans le composant passé en paramètre
*
* @param HasWidgets
* composite le conteneur de widgets dans lequel ajouter la vue
* */
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
lancerRechercheEtCreerWidgetPagination();
gererEvenements();
}
 
/**
* Initier un callback pour créer le widget de pagination et afficher les
* observations recues et lancer la recherche avec le service
* */
public void lancerRechercheEtCreerWidgetPagination() {
 
int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination();
int fin = cache.getPageCouranteRechercheObservations() * cache.getPasPagination();
 
ObservationsCallback callback = new ObservationsCallback() {
 
@Override
public void surRetour(ObservationServiceResultat observationsRecues) {
creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
afficherObservations(observationsRecues);
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
 
}
};
 
serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, statut, callback);
}
 
/**
* Créer les widgets de pagination en fonction du nombre d'observation
*
* @param int nbObservations le nombre d'observations à afficher
* */
private void creerWidgetPagination(int nbObservations) {
vue.getZonePaginationHaut().clear();
PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations);
paginationPresenteurHaut.setGroupePagination("pagination_observations");
paginationPresenteurHaut.go(vue.getZonePaginationHaut());
 
vue.getZonePaginationBas().clear();
PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations);
paginationPresenteurBas.setGroupePagination("pagination_observations");
paginationPresenteurBas.go(vue.getZonePaginationBas());
}
 
/**
* Créer un présenteur du widget pagination
*
* @param int nbObservations le nombre total d'observation à afficher
* */
private PaginationPresenteur creerPresenteurPagination(int nbObservations) {
PaginationPresenteur presenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, cache.getPasPagination(), cache.getPageCouranteRechercheObservations()) {
 
@Override
public void chargerElements(int debut, int fin) {
chargerEtAfficherObservations(debut, fin);
cache.setPageCouranteRechercheObservations(getPageCourante());
}
 
@Override
public void actualiserPasCache(int pas) {
cache.setPasPagination(pas);
}
 
};
return presenteur;
}
 
/**
* Gestion des évènements de la vue recherche Observation
* */
protected void gererEvenements() {
 
ClickHandler surClicDate = new ClickHandler() {
/**
* Gestion du clic sur l'option de tri par date d'observation Masque
* les éléments de tri qui sont en cours et affiche les autres
* */
public void onClick(ClickEvent event) {
toggleModeTri();
 
InformationsRecherche informationsRechercheObservations = cache.getInformationsRechercheObservation();
informationsRechercheObservations.setTriParDate(triCourantDate);
chercherEtAfficherObservationsPageEnCours();
}
};
 
vue.getLabelDate().addClickHandler(surClicDate);
vue.getTriParDateAscendant().addClickHandler(surClicDate);
vue.getTriParDateDescendant().addClickHandler(surClicDate);
}
 
/**
* Inverser le mode de tri en fonction du précédent
* */
public void toggleModeTri() {
if (triCourantDate == ModeTri.TRI_ASCENDANT) {
triCourantDate = ModeTri.TRI_DESCENDANT;
} else {
triCourantDate = ModeTri.TRI_ASCENDANT;
}
 
vue.setModeTri(triCourantDate);
}
 
/**
* Initialiser les variable de début et fin et lancer le chargement des
* observations
* */
public void chercherEtAfficherObservationsPageEnCours() {
int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination();
int fin = (cache.getPageCouranteRechercheObservations()) * cache.getPasPagination();
chargerEtAfficherObservations(debut, fin);
}
 
/**
* Lancer le service pour charger les observations entre debut et fin et les
* afficher
*
* @param int debut l'entier de départ de la requete
* @param int fin l'entier de limite de la requete
* */
public void chargerEtAfficherObservations(int debut, int fin) {
vue.startChargement();
vue.nettoyer();
 
ObservationsCallback surReceptionObservation = new ObservationsCallback() {
 
@Override
public void surRetour(ObservationServiceResultat observationsRecues) {
afficherObservations(observationsRecues);
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
 
}
};
serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, statut, surReceptionObservation);
}
 
/**
* Parcrourir les résultats de la recherche pour initier l'affichage de
* chaque observation
*
* @param ObservationServiceResultat
* resultats les résultats issus de la requête
* */
private void afficherObservations(ObservationServiceResultat resultats) {
vue.nettoyer();
 
if (resultats.getObservations() == null || resultats.getObservations().size() == 0) {
vue.afficherElementsAucunResultatTrouve();
} else {
vue.afficherElementsResultatsTrouves();
for (Observation observation : resultats.getObservations()) {
List<Image> listeImagesObs = observation.getImages();
Image imagePrincipale = null;
if(listeImagesObs != null && listeImagesObs.size() > 0) {
imagePrincipale = listeImagesObs.get(0);
}
ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation, imagePrincipale);
presenteur.go(vue.getZoneObservations());
}
}
CacheClient.getInstance().mettreAjourUrlCourante();
vue.stopChargement();
}
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplanteVue.java
New file
0,0 → 1,118
package org.tela_botanica.del.client.vues.identiplante.resultats;
 
import org.tela_botanica.del.client.modeles.ModeTri;
 
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.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class ResultatsIdentiplanteVue extends Composite implements ResultatsIdentiplantePresenteur.Vue {
 
@UiField
Panel panneauChargement;
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, ResultatsIdentiplanteVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
Panel zoneObservations, zonePaginationHaut, zonePaginationBas, zoneTri;
 
@UiField
Button triParDateAscendant, triParDateDescendant;
 
@UiField
Label aucunResultat, labelDate;
 
// Constructeur de la vue
public ResultatsIdentiplanteVue() {
initWidget(binder.createAndBindUi(this));
}
@Override
public HasWidgets getZoneObservations() {
return zoneObservations;
}
 
@Override
public HasWidgets getZonePaginationHaut() {
return zonePaginationHaut;
}
 
@Override
public HasWidgets getZonePaginationBas() {
return zonePaginationBas;
}
 
/**
* Nettoie et remet à zéro les composants du panneau qui doivent l'être
* */
@Override
public void nettoyer() {
zoneObservations.clear();
}
 
@Override
public void startChargement() {
panneauChargement.setHeight(zoneObservations.getOffsetHeight() + "px");
panneauChargement.setVisible(true);
}
 
@Override
public void stopChargement() {
panneauChargement.setVisible(false);
}
 
public void afficherElementsAucunResultatTrouve() {
nettoyer();
aucunResultat.setVisible(true);
zonePaginationHaut.setVisible(false);
zonePaginationBas.setVisible(false);
zoneTri.setVisible(false);
}
 
public void afficherElementsResultatsTrouves() {
aucunResultat.setVisible(false);
zonePaginationHaut.setVisible(true);
zonePaginationBas.setVisible(true);
zoneTri.setVisible(true);
}
 
public Button getTriParDateAscendant() {
return triParDateAscendant;
}
 
public Button getTriParDateDescendant() {
return triParDateDescendant;
}
@Override
public Label getLabelDate() {
return labelDate;
}
/**
* En fonction du sens du tri (ascendant ou descendant), on change l'affichage des
* boutons de tri pour masquer que celui qui doit être cliquable.
* @param ModeTri le mode Ascendant ou Descendant
* */
public void setModeTri(ModeTri mode) {
if (mode == ModeTri.TRI_ASCENDANT) {
triParDateAscendant.setVisible(true);
triParDateDescendant.setVisible(false);
} else {
triParDateDescendant.setVisible(true);
triParDateAscendant.setVisible(false);
}
}
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplante.css
New file
0,0 → 1,35
.entrerMotClef {
margin-bottom: 10px;
font-size:12px
}
 
.lienProposerObservation {
margin-left:65px;
margin-top:10px;
margin-bottom:10px;
}
.zoneStatut {
margin-top:;
}
 
.zoneStatut span {
padding-right:10px;
}
 
.zoneStatut label {
padding-left:2px;
}
 
 
.titreRechercheObs {
margin-top:5px;
}
 
.lienAide {
margin-right:70px;
padding:4px 15px;
margin-top:9px;
float:right;
color:white;
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplanteVue.ui.xml
New file
0,0 → 1,28
<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: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="MoteurIdentiplante.css" />
<g:HTMLPanel styleName="limiteMax">
<g:HTMLPanel styleName="limiteMax importance1">
<g:Label text="{constants.rechercherObservation}" styleName="titre {style.titreRechercheObs}" />
<g:Label text="{constants.entrerMotClef}" styleName="gris {style.entrerMotClef}" />
<g:HTMLPanel ui:field="zoneRecherche" />
</g:HTMLPanel>
<g:HTMLPanel styleName="zone-onglets">
<g:Label styleName="onglet onglet-actif" text="Tout" ui:field="ongletTout"></g:Label>
<g:Label styleName="onglet" text="A déterminer" ui:field="ongletADeterminer"></g:Label>
<g:Label styleName="onglet" text="En discussion" ui:field="ongletEnDiscussion"></g:Label>
<!-- terme Validées/Vérifiées sujet à changement, "Vérifiées" en texte, "Validées" partout ailleurs dans le code -->
<g:Label styleName="onglet" text="Vérifiées" ui:field="ongletValidees"></g:Label>
</g:HTMLPanel>
<g:HTMLPanel>
<g:HTMLPanel ui:field="zoneResultats" />
</g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplantePresenteur.java
New file
0,0 → 1,128
package org.tela_botanica.del.client.vues.identiplante.moteur;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.ModeRecherche;
import org.tela_botanica.del.client.services.rest.ObservationService;
import org.tela_botanica.del.client.services.rest.ObservationServiceConcret;
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplantePresenteur;
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplanteVue;
 
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.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Panel;
 
public class MoteurIdentiplantePresenteur extends Presenteur {
 
public interface Vue extends IsWidget {
public HasWidgets getZoneRecherche();
 
public HasWidgets getZoneResultats();
 
public HasClickHandlers getOngletEnDiscussion();
public HasClickHandlers getOngletADeterminer();
public HasClickHandlers getOngletTout();
 
public HasClickHandlers getOngletValidees();
public void setOngletADeterminerActif();
public void setOngletToutActif();
public void setOngletEnDiscussionActif();
 
public void setOngletValideesActif();
}
 
private Vue vue;
 
public MoteurIdentiplantePresenteur(ObservationService serviceObs, Vue vue) {
this.vue = vue;
}
 
public void go(HasWidgets composite) {
 
composite.add(vue.asWidget());
ajouterMoteurRechercheAvancee();
gererEvenements();
}
 
protected void ajouterMoteurRechercheAvancee() {
MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue("") {
}, ModeRecherche.MODE_OBSERVATION) {
 
@Override
public void lancerRecherche() {
chercherObservations();
}
};
presenteur.go(vue.getZoneRecherche());
}
 
public void chercherObservations() {
vue.getZoneResultats().clear();
CacheClient.getInstance().mettreAjourUrlCourante();
new ResultatsIdentiplantePresenteur(new ObservationServiceConcret(), new ResultatsIdentiplanteVue()).go(vue.getZoneResultats());
}
 
protected void gererEvenements() {
// Gestion du clic sur les onglets
vue.getOngletTout().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
CacheClient.getInstance().setFiltreStatut("tous");
CacheClient.getInstance().setPageCouranteRechercheObservations(1);
chercherObservations();
vue.setOngletToutActif();
}
});
vue.getOngletADeterminer().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
CacheClient.getInstance().setFiltreStatut("adeterminer");
CacheClient.getInstance().setPageCouranteRechercheObservations(1);
chercherObservations();
vue.setOngletADeterminerActif();
}
});
vue.getOngletEnDiscussion().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
CacheClient.getInstance().setFiltreStatut("endiscussion");
CacheClient.getInstance().setPageCouranteRechercheObservations(1);
chercherObservations();
vue.setOngletEnDiscussionActif();
}
});
 
vue.getOngletValidees().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
CacheClient.getInstance().setFiltreStatut("validees");
CacheClient.getInstance().setPageCouranteRechercheObservations(1);
chercherObservations();
vue.setOngletValideesActif();
}
});
}
 
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplanteVue.java
New file
0,0 → 1,113
package org.tela_botanica.del.client.vues.identiplante.moteur;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
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.CheckBox;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.Widget;
 
public class MoteurIdentiplanteVue extends Composite implements MoteurIdentiplantePresenteur.Vue {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, MoteurIdentiplanteVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
Panel zoneRecherche, zoneResultats;
 
@UiField
Label ongletTout, ongletADeterminer, ongletEnDiscussion, ongletValidees;
 
public HasWidgets getZoneRecherche() {
return zoneRecherche;
}
// Constructeur de la vue
public MoteurIdentiplanteVue() {
initWidget(binder.createAndBindUi(this));
mettreAJourOngletEnFonctionDuCache();
}
 
public Panel getZoneResultats() {
return zoneResultats;
}
@Override
public HasClickHandlers getOngletEnDiscussion() {
return ongletEnDiscussion;
}
 
@Override
public HasClickHandlers getOngletADeterminer() {
return ongletADeterminer;
}
 
@Override
public HasClickHandlers getOngletTout() {
return ongletTout;
}
 
@Override
public HasClickHandlers getOngletValidees() {
return ongletValidees;
}
 
@Override
public void setOngletADeterminerActif() {
nettoyerOngletsActifs();
ongletADeterminer.addStyleName("onglet-actif");
}
 
@Override
public void setOngletToutActif() {
nettoyerOngletsActifs();
ongletTout.addStyleName("onglet-actif");
}
 
@Override
public void setOngletEnDiscussionActif() {
nettoyerOngletsActifs();
ongletEnDiscussion.addStyleName("onglet-actif");
}
 
@Override
public void setOngletValideesActif() {
nettoyerOngletsActifs();
ongletValidees.addStyleName("onglet-actif");
}
public void nettoyerOngletsActifs() {
ongletTout.removeStyleName("onglet-actif");
ongletADeterminer.removeStyleName("onglet-actif");
ongletEnDiscussion.removeStyleName("onglet-actif");
ongletValidees.removeStyleName("onglet-actif");
}
public void mettreAJourOngletEnFonctionDuCache() {
String statut = CacheClient.getInstance().getFiltreStatut();
if (statut == null) {
setOngletToutActif();
} else if (statut.equals("adeterminer")) {
setOngletADeterminerActif();
} else if (statut.equals("endiscussion")) {
setOngletEnDiscussionActif();
} else if (statut.equals("validees")) {
setOngletValideesActif();
}
}
 
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/determinationVue.css
New file
0,0 → 1,127
.pageDetermination {
}
.metadonnees {
margin-bottom:10px;
margin-top:10px;
display:inline-block;
}
.zoneVote {
margin-left: 5px;
height: 100%;
display:inline-block;
vertical-align:top;
border-left: solid 1px #DDD;
border-right: solid 1px #DDD;
padding-left: 10px;
padding-right:10px;
text-align:left;
}
 
.taxonPlusProbable {
float: left;
}
 
.zoneBarreRepartition {
border: solid 1px #DDD;
padding: 15px;
}
 
.zoneDetailImage {
height: 100%;
width: 255px;
display:inline-block;
vertical-align:top;
text-align:left;
clear: left;
}
 
.zoneImage {
margin-bottom: 10px;
margin-right: 15px
}
 
.zoneImage div {
clear: left;
padding-top: 5px;
}
 
.zoneImage div img {
float: left;
padding: 0 5px 5px 0;
}
 
.boutonProposer {
float: left;
padding: 5px;
cursor: pointer;
background:#8EB533;
border:none;
margin-right:10px;
margin-top:10px;
}
 
.boutonValiderTaxon {
margin-top: -7px;
}
 
.zoneOutils {
width: 15%;
padding-left:10px;
display:inline-block;
vertical-align:top;
text-align:left;
}
 
.boutons {
margin-bottom:15px;
}
 
 
.lienProposerObservation {
margin-left:65px;
margin-top:10px;
margin-bottom:10px;
}
.nomTaxonProbable {
padding-left:3px;
}
 
.taxonProbable {
background: none repeat scroll 0 0 #F8F8C3;
clear: left;
font-size: 15px;
margin-bottom: 5px;
padding: 13px 9px;
}
 
.voteProtocole div {
margin-bottom:10px;
}
 
.voteProtocole div div {
margin-bottom:0px;
border:solid 0px red
}
.autreOutils {
margin-top:15px;
}
 
.zonerss {
margin-top:5px;
}
 
 
.lienProposerImage {
margin-top:20px;
margin-left:70px;
margin-bottom:10px;
}
 
.lienAide {
margin-right:70px;
padding:4px 15px;
margin-top:10px;
float:right;
color:white;
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationVue.ui.xml
New file
0,0 → 1,54
<!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:forum="urn:import:org.tela_botanica.del.client.composants.forum">
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="determinationVue.css" />
<g:HTMLPanel styleName="{style.pageDetermination}">
<g:HTMLPanel styleName="limiteMax">
<g:Hyperlink ui:field="lienRetour" styleName="lien">Retour</g:Hyperlink>
<g:HTMLPanel ui:field="metadonnees" styleName="{style.metadonnees}"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="contenuCentre">
<g:HTMLPanel styleName="{style.zoneDetailImage}">
<g:VerticalPanel ui:field="detailImageObservation" styleName="{style.zoneImage}"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.zoneVote}">
<g:Label styleName="titre" text="{constants.titreDetermination}" />
<g:HTMLPanel styleName="nettoyage {style.boutons}">
<g:Button text="{constants.proposerSaDetermination}" ui:field="boutonAjoutProposition" styleName="bouton" />
<g:Button text="{constants.ajouterCommentaire}" ui:field="boutonAjoutCommentaire" styleName="bouton" />
<g:HTMLPanel ui:field="zoneRss" styleName="droite {style.zonerss}"></g:HTMLPanel>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.taxonProbable}">
<g:Label styleName="gauche" text="{constants.determinationPlusProbable}" />
<g:Label ui:field="nomTaxonProbable" styleName="gauche gras {style.nomTaxonProbable}"/>
<g:Button ui:field="boutonValidationTaxon" text="{constants.accepter}" styleName="droite bouton {style.boutonValiderTaxon}"/>
<g:HTML><br /></g:HTML>
</g:HTMLPanel>
<g:VerticalPanel ui:field="forum" />
<g:HTMLPanel styleName="nettoyage {style.boutons}">
<g:Button text="{constants.proposerSaDetermination}" ui:field="boutonAjoutPropositionBas" styleName="bouton" />
<g:Button text="{constants.ajouterCommentaire}" ui:field="boutonAjoutCommentaireBas" styleName="bouton" />
</g:HTMLPanel>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.zoneOutils}">
<g:Label text="Pour vous aider : " styleName="titre3"></g:Label>
<g:VerticalPanel ui:field="formulaireRechercheEflore"/>
<g:Label styleName="{style.autreOutils} sousTitre">Vérifier sa détermination</g:Label>
<g:Label styleName="lienListe labelLien" ui:field="lienEflore">eFlore</g:Label>
<g:Label styleName="{style.autreOutils} sousTitre">Autres outils en ligne</g:Label>
<g:Label styleName="lienListe labelLien" ui:field="lienOuvrages">Flores numérisées</g:Label>
<g:Label styleName="lienListe labelLien" ui:field="lienBonnier">Flore Bonnier interactive</g:Label>
<g:Label styleName="lienListe labelLien" ui:field="lienCles">Clés de détermination</g:Label>
</g:HTMLPanel>
</g:HTMLPanel>
</g:HTMLPanel>
 
</ui:UiBinder>
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationPresenteur.java
New file
0,0 → 1,327
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
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.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur;
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue;
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesEnLigneVue;
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur;
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue;
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.composants.rss.RssPresenteur;
import org.tela_botanica.del.client.composants.rss.RssVue;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.ModeRecherche;
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Utilisateur;
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.ajoutcommentaire.EvenementAjoutCommentaire;
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
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.services.rest.CommentaireServiceConcret;
import org.tela_botanica.del.client.services.rest.ObservationService;
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
import org.tela_botanica.del.client.services.rest.async.ValidationPropositionCallback;
import org.tela_botanica.del.client.utils.URLUtils;
import org.tela_botanica.del.client.composants.formulairerechercheeflore.FormulaireRechercheEflorePresenteur;
import org.tela_botanica.del.client.composants.forum.ForumPresenteur;
import org.tela_botanica.del.client.composants.forum.ForumVue;
 
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.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Panel;
 
public class IdentiplanteDeterminationPresenteur extends Presenteur {
 
/**
* Vue de l'interface de détermination
* */
public interface Vue extends IsWidget {
public Panel getForum();
 
public Panel getDetailImageObservation();
 
public Panel getFormulaireRechercheEflore();
 
public Button getBoutonAjoutProposition();
 
public Button getBoutonAjoutCommentaire();
 
public Button getBoutonAjoutPropositionBas();
 
public Button getBoutonAjoutCommentaireBas();
 
public HasWidgets getMetadonnees();
 
public void afficherNomTaxonProbable(String nomTaxon);
public HasClickHandlers getLienOuvrages();
public HasClickHandlers getLienBonnier();
public HasClickHandlers getLienCles();
public HasClickHandlers getLienEflore();
public HasWidgets getZoneRss();
 
HasClickHandlers getBoutonValidationTaxon();
 
void cacherBoutonValidationTaxon();
 
void afficherBoutonValidationTaxon();
 
public void viderMetadonnees();
}
 
private Vue vue;
private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
 
// Déclaration des services à utiliser
private ObservationService observationService;
 
private CacheClient cache = CacheClient.getInstance();
private PropositionDetermination propositionPlusPopulaire;
 
public IdentiplanteDeterminationPresenteur(Vue vue, ObservationService observationService) {
this.vue = vue;
this.observationService = observationService;
}
 
public void go(final HasWidgets composite) {
// TODO afficher une icone de chargement si le chargement devient trop
// long
// car tout l'écran est asynchrone ici
String observationId = URLUtils.getURLSpecialParameterValue();
observationService.getObservation(observationId, new ObservationsCallback() {
 
@Override
public void surRetour(ObservationServiceResultat objetRetour) {
afficherRss(cache.getObservationCourante());
// trouve l'image courante si elle n'est pas deja en cache
List<Image> listeImages = cache.getObservationCourante().getImages();
if (listeImages.size() > 0) {
CacheClient.getInstance().setImageCourante(listeImages.get(0));
} else {
CacheClient.getInstance().setImageCourante(null);
}
new MetadonneesPresenteur(new MetadonneesEnLigneVue(), cache.getObservationCourante(), ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonnees());
new ObservationImagesPresenteur(new ObservationImagesVue(), cache.getObservationCourante(), CacheClient.getInstance().getImageCourante(), ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA).go(vue.getDetailImageObservation());
new ForumPresenteur(new ForumVue()).go(vue.getForum());
new FormulaireRechercheEflorePresenteur().go(vue.getFormulaireRechercheEflore());
 
composite.add(vue.asWidget());
calculerEtAfficherVoteDeterminationPlusPopulaire();
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
}
});
gererEvenements();
}
 
public void afficherRss(Observation observation) {
new RssPresenteur(new RssVue(), observation, "Suivre cette observation").go(vue.getZoneRss());
}
 
private void calculerEtAfficherVoteDeterminationPlusPopulaire() {
if(cache.getObservationCourante() != null) {
Observation observation = cache.getObservationCourante();
String nomTaxon = observation.getNomRetenuFormateReferentiel();
List<MoyenneVote> votesOrdonnes = CalculVoteDeterminationService.calculerVoteDeterminationPlusPopulaire(cache.getObservationCourante().getPropositionDeterminations());
if (votesOrdonnes.size() > 0) {
nomTaxon = votesOrdonnes.get(0).getIntituleAssocie();
propositionPlusPopulaire = votesOrdonnes.get(0).getPropositionAssociee();
if(doitAfficherBoutonValidation(votesOrdonnes)) {
vue.afficherBoutonValidationTaxon();
} else {
vue.cacherBoutonValidationTaxon();
}
}
vue.afficherNomTaxonProbable(nomTaxon);
}
}
private boolean doitAfficherBoutonValidation(List<MoyenneVote> votesOrdonnes) {
boolean estPropositionRetenue = votesOrdonnes.get(0).getPropositionAssociee().estPropositionRetenue();
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
boolean estAuteurObservation = false;
if(utilisateur != null) {
estAuteurObservation = utilisateur.estIdentifie() && utilisateur.getId().equals(cache.getObservationCourante().getIdAuteur());
}
return estAuteurObservation && !estPropositionRetenue;
}
 
public void gererEvenements() {
BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
@Override
public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
calculerEtAfficherVoteDeterminationPlusPopulaire();
};
});
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
@Override
public void onVoteDetermination(VoteDetermination event) {
calculerEtAfficherVoteDeterminationPlusPopulaire();
}
});
 
ClickHandler clicAjoutProposition = new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret()));
}
};
vue.getBoutonAjoutProposition().addClickHandler(clicAjoutProposition);
vue.getBoutonAjoutPropositionBas().addClickHandler(clicAjoutProposition);
 
ClickHandler clicAjoutCommentaire = new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(cache.getObservationCourante(), new CommentaireServiceConcret(), new FormulaireCommentaireVue());
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur);
}
};
vue.getBoutonAjoutCommentaire().addClickHandler(clicAjoutCommentaire);
vue.getBoutonAjoutCommentaireBas().addClickHandler(clicAjoutCommentaire);
 
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
@Override
public void onAjoutDetermination(EvenementAjoutDetermination event) {
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
fenetreOverlaySimplePresenteur.fermerFenetreModale();
}
}
});
 
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
 
@Override
public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
fenetreOverlaySimplePresenteur.fermerFenetreModale();
}
}
});
 
BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() {
 
@Override
public void onChangementImage(EvenementChangementImageValidation event) {
vue.getDetailImageObservation().clear();
new ObservationImagesPresenteur(new ObservationImagesVue(), cache.getObservationCourante(), CacheClient.getInstance().getImageCourante(), ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA).go(vue.getDetailImageObservation());
}
});
vue.getLienOuvrages().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Config config = new Config();
Window.open(config.getUrl("ouvragesFlore"), "Flores numérisées", null);
}
});
 
vue.getLienBonnier().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Config config = new Config();
Window.open(config.getUrl("bonnierPda"), "Flore Bonnier PDA", null);
}
});
vue.getLienCles().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Config config = new Config();
Window.open(config.getUrl("clesDetermination"), "Clés de determination", null);
}
});
vue.getLienEflore().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Config config = new Config();
Window.open(config.getUrl("eflore"), "eFlore", null);
}
});
vue.getBoutonValidationTaxon().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if(Window.confirm(I18n.getVocabulary().confirmationValidationDetermination())) {
validerPropositionPlusPopulaire();
}
}
});
}
private void validerPropositionPlusPopulaire() {
PropositionDeterminationServiceConcret propositionService = new PropositionDeterminationServiceConcret();
propositionService.validerProposition(propositionPlusPopulaire, new ValidationPropositionCallback() {
@Override
public void surRetour(String objetRetour) {
String observationId = URLUtils.getURLSpecialParameterValue();
observationService.getObservation(observationId, new ObservationsCallback() {
 
@Override
public void surRetour(ObservationServiceResultat objetRetour) {
vue.viderMetadonnees();
new MetadonneesPresenteur(new MetadonneesEnLigneVue(), cache.getObservationCourante(), ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonnees());
calculerEtAfficherVoteDeterminationPlusPopulaire();
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
}
});
}
});
}
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/detail/DetailImageObservationPresenteur.java
New file
0,0 → 1,24
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination.detail;
 
import org.tela_botanica.del.client.cache.CacheClient;
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class DetailImageObservationPresenteur {
public interface Vue extends IsWidget {
public void chargerInformationsObservation(org.tela_botanica.del.client.modeles.Image image);
}
 
private Vue vue;
public DetailImageObservationPresenteur(Vue vue) {
this.vue = vue;
}
 
public void go(HasWidgets composite) {
vue.chargerInformationsObservation(CacheClient.getInstance().getImageCourante());
composite.add(vue.asWidget());
}
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/detail/DetailImageObservationVue.java
New file
0,0 → 1,38
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination.detail;
 
 
 
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.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
 
public class DetailImageObservationVue extends Composite implements DetailImageObservationPresenteur.Vue {
 
@UiField
protected Image imageObservation;
 
@UiField
protected Label nomObservateur, nomRetenu, dateObservation, famille, localite;
 
private static DetailImageObservationUIiBinder uiBinder = GWT.create(DetailImageObservationUIiBinder.class);
 
interface DetailImageObservationUIiBinder extends UiBinder<Widget, DetailImageObservationVue> {
};
 
public DetailImageObservationVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public void chargerInformationsObservation(org.tela_botanica.del.client.modeles.Image image) {
imageObservation.setUrl(image.getUrl());
nomObservateur.setText(image.getObservation().getAuteur());
nomRetenu.setText(image.getObservation().getNomRetenuFormateReferentiel());
famille.setText(image.getObservation().getFamille());
localite.setText(image.getObservation().getLocalite());
dateObservation.setText(image.getObservation().getDateReleve());
}
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/detail/detailObservation.css
New file
0,0 → 1,27
.detailObservation {
font-size: 11px;
position: absolute;
padding: 5px;
color: white;
background: #333;
opacity: 0.8;
margin-top: -80px;
width: 230px;
}
 
.observateur td {
font-size: 11px;
white-space: nowrap
}
 
.date {
}
 
.nomRetenu {
font-weight: bold
}
 
.dateObservation {
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/detail/DetailImageObservationVue.ui.xml
New file
0,0 → 1,36
<!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'>
 
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="detailObservation.css" />
<g:VerticalPanel>
<g:Image ui:field="imageObservation"/>
<g:VerticalPanel ui:field="detailObservation" styleName="{style.detailObservation}">
<g:HorizontalPanel styleName="{style.observateur}">
<!-- g:Label text="{constants.observateur} : "/ -->
<g:Label ui:field="nomObservateur" /><g:HTML>&nbsp;-&nbsp;</g:HTML><g:Label ui:field="localite" /><g:HTML>&nbsp;-&nbsp;</g:HTML><g:Label ui:field="dateObservation" />
</g:HorizontalPanel>
<g:HorizontalPanel>
<!-- <g:Label text="{constants.nom_retenu} : "/> -->
<g:Label ui:field="nomRetenu" styleName="{style.nomRetenu}"/>
</g:HorizontalPanel>
<g:HorizontalPanel styleName="{style.date}">
<!-- <g:Label text="{constants.date_observation} : "/> -->
</g:HorizontalPanel>
<g:HorizontalPanel>
<!-- <g:Label text="{constants.famille} : "/> -->
<g:HorizontalPanel><g:Label ui:field="famille" /></g:HorizontalPanel>
</g:HorizontalPanel>
<g:HorizontalPanel>
<!-- <g:Label text="{constants.localite} : "/> -->
</g:HorizontalPanel>
</g:VerticalPanel>
</g:VerticalPanel>
 
</ui:UiBinder>
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationVue.java
New file
0,0 → 1,130
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination;
 
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
 
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.Button;
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.Hyperlink;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class IdentiplanteDeterminationVue extends Composite implements IdentiplanteDeterminationPresenteur.Vue {
 
@UiField
Panel forum, detailImageObservation, formulaireRechercheEflore, zoneRss;
@UiField
Label nomTaxonProbable, lienOuvrages, lienEflore, lienBonnier, lienCles;
@UiField
Button boutonValidationTaxon;
@UiField
Hyperlink lienRetour;
@UiField
Button boutonAjoutProposition, boutonAjoutPropositionBas, boutonAjoutCommentaire, boutonAjoutCommentaireBas;
@UiField
Panel metadonnees;
 
interface DeterminationUIiBinder extends UiBinder<Widget, IdentiplanteDeterminationVue> {
};
 
private static DeterminationUIiBinder uiBinder = GWT.create(DeterminationUIiBinder.class);
 
public IdentiplanteDeterminationVue() {
initWidget(uiBinder.createAndBindUi(this));
lienRetour.setTargetHistoryToken(ConstantesNavigation.HOME);
}
 
public Panel getForum() {
return forum;
}
 
public Panel getDetailImageObservation() {
return detailImageObservation;
}
 
public Panel getFormulaireRechercheEflore() {
return formulaireRechercheEflore;
}
 
public Button getBoutonAjoutProposition() {
return boutonAjoutProposition;
}
public Button getBoutonAjoutPropositionBas() {
return boutonAjoutPropositionBas;
}
public Panel getMetadonnees() {
return metadonnees;
}
 
@Override
public void afficherNomTaxonProbable(String nomTaxon) {
this.nomTaxonProbable.setText(nomTaxon);
}
 
public Button getBoutonAjoutCommentaire() {
return boutonAjoutCommentaire;
}
public Button getBoutonAjoutCommentaireBas() {
return boutonAjoutCommentaireBas;
}
 
@Override
public HasClickHandlers getLienOuvrages() {
return lienOuvrages;
}
 
@Override
public HasClickHandlers getLienBonnier() {
return lienBonnier;
}
 
@Override
public HasClickHandlers getLienCles() {
return lienCles;
}
 
@Override
public HasClickHandlers getLienEflore() {
return lienEflore;
}
@Override
public HasWidgets getZoneRss() {
return zoneRss;
}
@Override
public HasClickHandlers getBoutonValidationTaxon() {
return boutonValidationTaxon;
}
@Override
public void cacherBoutonValidationTaxon() {
boutonValidationTaxon.setVisible(false);
}
@Override
public void afficherBoutonValidationTaxon() {
boutonValidationTaxon.setVisible(true);
}
 
@Override
public void viderMetadonnees() {
metadonnees.clear();
}
}
 
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/ligneProtocole/LigneProtocoleVue.java
New file
0,0 → 1,30
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination.ligneProtocole;
 
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.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class LigneProtocoleVue extends Composite implements LigneProtocolePresenteur.Vue {
@UiField
Panel zoneVote;
interface LigneProtocoleUIiBinder extends UiBinder<Widget, LigneProtocoleVue> {
};
 
private static LigneProtocoleUIiBinder uiBinder = GWT.create(LigneProtocoleUIiBinder.class);
 
public LigneProtocoleVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
@Override
public HasWidgets getZoneVote() {
return this.zoneVote;
}
 
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/ligneProtocole/ligneProtocole.css
New file
0,0 → 1,7
.nomProtocole {
font-size: 11px;
overflow: hidden;
text-overflow: ellipsis;
width: 87px;
margin-bottom:15px;
}
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/ligneProtocole/LigneProtocoleVue.ui.xml
New file
0,0 → 1,10
<!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:forum="urn:import:org.tela_botanica.del.client.composants.forum">
<ui:style src="ligneProtocole.css" />
<g:HorizontalPanel styleName="vote">
<g:HTMLPanel ui:field="zoneVote" />
</g:HorizontalPanel>
</ui:UiBinder>
/tags/v1.1-helium/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/ligneProtocole/LigneProtocolePresenteur.java
New file
0,0 → 1,59
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination.ligneProtocole;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur;
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVoteVue;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret;
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class LigneProtocolePresenteur extends Presenteur {
 
public interface Vue extends IsWidget {
 
HasWidgets getZoneVote();
}
 
private Vue vue;
private Protocole protocole;
 
public LigneProtocolePresenteur(Protocole protocole, Vue vue) {
this.vue = vue;
this.protocole = protocole;
chargerValeursProtocolePourImageCourante();
}
public void chargerValeursProtocolePourImageCourante(){
vue.getZoneVote().clear();
Image imageCourante = CacheClient.getInstance().getImageCourante();
MoyenneVotePresenteur votePresenteur = new MoyenneVotePresenteur(imageCourante, protocole, new MoyenneVoteVue(), new VoteProtocoleServiceConcret());
votePresenteur.go(vue.getZoneVote());
}
 
public Vue getVue() {
return vue;
}
 
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
gererEvenements();
}
 
@Override
protected void gererEvenements() {
BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() {
 
@Override
public void onChangementImage(EvenementChangementImageValidation event) {
chargerValeursProtocolePourImageCourante();
}
});
}
}