/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/determinationVue.css |
---|
New file |
0,0 → 1,120 |
.pageDetermination { |
} |
.metadonnees { |
margin-bottom:10px; |
margin-top:10px; |
display:inline-block; |
} |
.limiteZoneMenu { |
max-width:840px; |
margin-bottom:10px; |
} |
.limiteZoneMetadonnees { |
width:840px; |
} |
.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; |
} |
.btnDepublierObs { |
background:url("./img/16x16/depublier.png") 5px 5px no-repeat; |
padding: 5px 5px 5px 23px; |
} |
.btnDepublierObs:hover { |
background:#8EB533 url("./img/16x16/depublier_actif.png") 5px 5px no-repeat; |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationVue.ui.xml |
---|
New file |
0,0 → 1,53 |
<!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:HTMLPanel styleName="{style.limiteZoneMenu}"> |
<g:Hyperlink ui:field="lienRetour" styleName="lienRetour">Retour</g:Hyperlink> |
<g:HTMLPanel ui:field="zoneActionsObs"> |
<g:Button ui:field="btnDepublierObs" text="{constants.depublierObs}" styleName="droite bouton {style.btnDepublierObs}" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.limiteZoneMetadonnees}"> |
<g:HTMLPanel ui:field="metadonnees" styleName="{style.metadonnees}" /> |
</g:HTMLPanel> |
</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: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> |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationPresenteur.java |
---|
New file |
0,0 → 1,325 |
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.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.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.depublierObs.EvenementDepublierObs; |
import org.tela_botanica.del.client.navigation.evenement.depublierObs.GestionnaireEvenementDepublierObs; |
import org.tela_botanica.del.client.navigation.evenement.validationPropositionDetermination.EvenementValidationPropositionDetermination; |
import org.tela_botanica.del.client.navigation.evenement.validationPropositionDetermination.GestionnaireEvenementValidationPropositionDetermination; |
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.DepublicationObservationCallBack; |
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.ModerationUtils; |
import org.tela_botanica.del.client.utils.URLUtils; |
import org.tela_botanica.del.client.navigation.evenement.rechercheobservation.EvenementRechercheObservation; |
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.core.shared.GWT; |
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 HasWidgets getForum(); |
public HasWidgets getDetailImageObservation(); |
public HasWidgets getFormulaireRechercheEflore(); |
public HasClickHandlers getBoutonAjoutProposition(); |
public HasClickHandlers getBoutonAjoutCommentaire(); |
public HasClickHandlers getBoutonAjoutPropositionBas(); |
public HasClickHandlers getBoutonAjoutCommentaireBas(); |
public HasClickHandlers getBoutonDepublierObs(); |
public HasWidgets getMetadonnees(); |
public HasClickHandlers getLienOuvrages(); |
public HasClickHandlers getLienBonnier(); |
public HasClickHandlers getLienCles(); |
public HasClickHandlers getLienEflore(); |
public HasWidgets getZoneRss(); |
public void viderMetadonnees(); |
public void viderForum(); |
void afficherZoneActionsObs(); |
void cacherZoneActionsObs(); |
} |
private Observation observation; |
private Vue vue; |
private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
// Déclaration des services à utiliser |
private ObservationService observationService; |
private CacheClient cache = CacheClient.getInstance(); |
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) { |
observation = cache.getObservationCourante(); |
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()).go(vue.getDetailImageObservation()); |
new ForumPresenteur(new ForumVue()).go(vue.getForum()); |
new FormulaireRechercheEflorePresenteur().go(vue.getFormulaireRechercheEflore()); |
composite.add(vue.asWidget()); |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur + " - l'identifiant d'observation est incorrect; l'observation a peut-être été supprimée"); |
} |
}); |
afficherZoneActionsObs(); |
gererEvenements(); |
} |
public void afficherRss(Observation observation) { |
new RssPresenteur(new RssVue(), observation, "Suivre cette observation").go(vue.getZoneRss()); |
} |
public void gererEvenements() { |
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()).go(vue.getDetailImageObservation()); |
} |
}); |
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); |
vue.getLienOuvrages().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("ouvragesFlore"), "Flores numérisées", config.getInfo("popupOptions")); |
} |
}); |
vue.getLienBonnier().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("bonnierPda"), "Flore Bonnier PDA", config.getInfo("popupOptions")); |
} |
}); |
vue.getLienCles().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("clesDetermination"), "Clés de determination", config.getInfo("popupOptions")); |
} |
}); |
vue.getLienEflore().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("eflore"), "eFlore", config.getInfo("popupOptions")); |
} |
}); |
vue.getBoutonDepublierObs().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
GWT.log("Lancer evnt : EvenementDepublierObs"); |
if (Window.confirm(I18n.getVocabulary().confirmationDepublicationObs())) { |
BusEvenementiel.getInstance().fireEvent(new EvenementDepublierObs(observation.getId())); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementDepublierObs.TYPE, new GestionnaireEvenementDepublierObs() { |
@Override |
public void onDepublicationObs(EvenementDepublierObs event) { |
GWT.log("Attraper evnt : EvenementDepublierObs (obs:"+event.getIdObs()+")"); |
if (event.getIdObs().equals(observation.getId())) { |
depublierObs(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() { |
@Override |
public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) { |
afficherZoneActionsObs(); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementValidationPropositionDetermination.TYPE, new GestionnaireEvenementValidationPropositionDetermination() { |
@Override |
public void onValidationPropositionDetermination(EvenementValidationPropositionDetermination event) { |
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()); |
rechargerForum(); |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
}); |
} |
}); |
} |
private void rechargerForum() { |
vue.viderForum(); |
new ForumPresenteur(new ForumVue()).go(vue.getForum()); |
} |
private void depublierObs() { |
if (ModerationUtils.utilisateurPeutDepublierObs(CacheClient.getInstance().getUtilisateur())) { |
GWT.log("depublierObs :"+observation.getId()); |
observationService.depublier(observation, new DepublicationObservationCallBack() { |
@Override |
public void surRetour(String depublicationOk) { |
GWT.log("Dépublication obs "+observation.getId()+" "+depublicationOk); |
if (depublicationOk.equals("OK")) { |
BusEvenementiel.getInstance().fireEvent(new EvenementRechercheObservation()); |
} |
} |
}); |
} |
} |
private void afficherZoneActionsObs() { |
if (ModerationUtils.utilisateurPeutDepublierObs(CacheClient.getInstance().getUtilisateur())) { |
vue.afficherZoneActionsObs(); |
} else { |
vue.cacherZoneActionsObs(); |
} |
} |
} |
/branches/v1.7-oxygene/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 { |
} |
/branches/v1.7-oxygene/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> - </g:HTML><g:Label ui:field="localite" /><g:HTML> - </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> |
/branches/v1.7-oxygene/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()); |
} |
} |
/branches/v1.7-oxygene/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()); |
} |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationVue.java |
---|
New file |
0,0 → 1,126 |
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.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, zoneActionsObs; |
@UiField |
Label lienOuvrages, lienEflore, lienBonnier, lienCles; |
@UiField |
Hyperlink lienRetour; |
@UiField |
Button btnDepublierObs, 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; |
} |
@Override |
public HasClickHandlers getBoutonDepublierObs() { |
return btnDepublierObs; |
} |
public Panel getMetadonnees() { |
return metadonnees; |
} |
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 void viderMetadonnees() { |
metadonnees.clear(); |
} |
@Override |
public void cacherZoneActionsObs() { |
zoneActionsObs.setVisible(false); |
} |
@Override |
public void afficherZoneActionsObs() { |
zoneActionsObs.setVisible(true); |
} |
@Override |
public void viderForum() { |
forum.clear(); |
} |
} |
/branches/v1.7-oxygene/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; |
} |
} |
/branches/v1.7-oxygene/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; |
} |
/branches/v1.7-oxygene/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> |
/branches/v1.7-oxygene/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(); |
} |
}); |
} |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/LignePropositionVue.java |
---|
New file |
0,0 → 1,86 |
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.Window; |
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"); |
} |
@Override |
public void setPropositionRetenue(boolean propositionRetenue) { |
if(propositionRetenue) { |
addStyleName("propositionRetenuePetit"); |
} else { |
removeStyleName("propositionRetenuePetit"); |
} |
} |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/observationdetermination.css |
---|
New file |
0,0 → 1,76 |
.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 { |
padding-top: 3px; |
} |
.ligneProposition { |
clear:both; |
} |
.ligneProposition>div { |
display:block; |
float:left; |
} |
.nombreVotes { |
width:15px; |
height:16px; |
padding-left:10px; |
margin-left:13px; |
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; |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationVue.ui.xml |
---|
New file |
0,0 → 1,18 |
<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: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> |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationPresenteur.java |
---|
New file |
0,0 → 1,90 |
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.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 HasWidgets getTableauPropositions(); |
void setNbVotes(int index, int nbVotes); |
void setNbCommentaires(int index, int nbCommentaires); |
int getIndexLigneProposition(LignePropositionVue lignePropositionVue); |
public void masquerPropositions(); |
} |
private Vue vue; |
private List<PropositionDetermination> propositions; |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
public ObservationDeterminationPresenteur(Vue vue, List<PropositionDetermination> propositions) { |
this.propositions = propositions; |
this.vue = vue; |
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() { |
@Override |
public void onVoteDetermination(VoteDetermination event) { |
surVoteDetermination(event); |
} |
}); |
} |
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) { |
nbPropositions++; |
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) { |
vue.masquerPropositions(); |
} |
} |
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) { |
chargerPropositions(); |
} |
} |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationVue.java |
---|
New file |
0,0 → 1,59 |
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, 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(); |
} |
public void masquerPropositions() { |
this.zonePropositions.setVisible(false); |
} |
} |
/branches/v1.7-oxygene/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> |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/LignePropositionPresenteur.java |
---|
New file |
0,0 → 1,129 |
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.Window; |
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(); |
public void setPropositionRetenue(boolean propositionRetenue); |
} |
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); |
vue.setPropositionRetenue(propositionDetermination.estPropositionRetenue()); |
} |
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(); |
} |
} |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplanteVue.ui.xml |
---|
New file |
0,0 → 1,37 |
<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}"> |
<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.triParDateObs}" title="{constants.triParDateObsTooltip}" styleName="gauche {style.date}" ui:field="labelDateObservation"/> |
<g:Button title="{constants.triParDateObsAscendant}" ui:field="triParDateObservationAscendant" styleName="{style.boutonTriAsc} gauche" /> |
<g:Button title="{constants.triParDateObsDescendant}" ui:field="triParDateObservationDescendant" styleName="{style.boutonTriDesc} gauche" /> |
<g:Label text="{constants.triParDatePubli}" title="{constants.triParDatePubliTooltip}" styleName="gauche {style.date}" ui:field="labelDatePublication"/> |
<g:Button title="{constants.triParDatePubliAscendant}" ui:field="triParDatePublicationAscendant" styleName="{style.boutonTriAsc} gauche" /> |
<g:Button title="{constants.triParDatePubliDescendant}" ui:field="triParDatePublicationDescendant" styleName="{style.boutonTriDesc} gauche" /> |
<g:Label text="{constants.triParNbCommentaires}" title="{constants.triParDatePubliTooltip}" styleName="gauche {style.date}" ui:field="labelNbCommentaires"/> |
<g:Button title="{constants.triParDatePubliAscendant}" ui:field="triParNbCommentairesAscendant" styleName="{style.boutonTriAsc} gauche" /> |
<g:Button title="{constants.triParDatePubliDescendant}" ui:field="triParNbCommentairesDescendant" 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> |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplantePresenteur.java |
---|
New file |
0,0 → 1,377 |
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; |
import com.google.gwt.user.client.ui.Label; |
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 getTriParDateObservationAscendant(); |
public HasClickHandlers getTriParDateObservationDescendant(); |
public HasClickHandlers getTriParDatePublicationAscendant(); |
public HasClickHandlers getTriParDatePublicationDescendant(); |
public HasClickHandlers getTriParNbCommentairesAscendant(); |
public HasClickHandlers getTriParNbCommentairesDescendant(); |
public void afficherElementsAucunResultatTrouve(); |
public void afficherElementsResultatsTrouves(); |
public HasClickHandlers getLabelDateObservation(); |
public HasClickHandlers getLabelDatePublication(); |
public HasClickHandlers getLabelNbCommentaires(); |
void setModeTriPublication(ModeTri mode); |
void setModeTriObservation(ModeTri mode); |
void setModeTriNbCommentaires(ModeTri mode); |
} |
private Vue vue; |
private ObservationService serviceObs; |
private ModeTri triCourantDatePublication = ModeTri.TRI_DESCENDANT; |
private ModeTri triCourantDateObservation = ModeTri.PAS_DE_TRI; |
private ModeTri triCourantNbCommentaires = ModeTri.PAS_DE_TRI; |
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; |
InformationsRecherche infos = CacheClient.getInstance().getInformationsRechercheObservation(); |
if (infos.getTriParDatePublication() != ModeTri.PAS_DE_TRI) { |
triCourantDatePublication = infos.getTriParDatePublication(); |
vue.setModeTriPublication(triCourantDatePublication); |
} |
if (infos.getTriParDateObservation() != ModeTri.PAS_DE_TRI) { |
triCourantDateObservation = infos.getTriParDateObservation(); |
vue.setModeTriObservation(triCourantDatePublication); |
} |
if (infos.getTriParNbCommentaires() != ModeTri.PAS_DE_TRI) { |
triCourantNbCommentaires = infos.getTriParNbCommentaires(); |
vue.setModeTriNbCommentaires(triCourantNbCommentaires); |
} |
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 surClicDateObservation = 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) { |
toggleModeTriObservation(); |
InformationsRecherche informationsRechercheObservations = cache.getInformationsRechercheObservation(); |
informationsRechercheObservations.setTriParDatePublication(ModeTri.PAS_DE_TRI); |
informationsRechercheObservations.setTriParNbCommentaires(ModeTri.PAS_DE_TRI); |
informationsRechercheObservations.setTriParDateObservation(triCourantDateObservation); |
chercherEtAfficherObservationsPageEnCours(); |
} |
}; |
ClickHandler surClicDatePublication = 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) { |
toggleModeTriPublication(); |
InformationsRecherche informationsRechercheObservations = cache.getInformationsRechercheObservation(); |
informationsRechercheObservations.setTriParDateObservation(ModeTri.PAS_DE_TRI); |
informationsRechercheObservations.setTriParNbCommentaires(ModeTri.PAS_DE_TRI); |
informationsRechercheObservations.setTriParDatePublication(triCourantDatePublication); |
chercherEtAfficherObservationsPageEnCours(); |
} |
}; |
ClickHandler surClicNbCommentaires = new ClickHandler() { |
/** |
* Même comportement qu'au dessus mais pour le tri par nb de commentaires |
*/ |
public void onClick(ClickEvent event) { |
toggleModeTriNbCommentaires(); |
InformationsRecherche informationsRechercheObservations = cache.getInformationsRechercheObservation(); |
informationsRechercheObservations.setTriParDateObservation(ModeTri.PAS_DE_TRI); |
informationsRechercheObservations.setTriParDatePublication(ModeTri.PAS_DE_TRI); |
informationsRechercheObservations.setTriParNbCommentaires(triCourantNbCommentaires); |
chercherEtAfficherObservationsPageEnCours(); |
} |
}; |
vue.getLabelDateObservation().addClickHandler(surClicDateObservation); |
vue.getTriParDateObservationAscendant().addClickHandler(surClicDateObservation); |
vue.getTriParDateObservationDescendant().addClickHandler(surClicDateObservation); |
vue.getLabelDatePublication().addClickHandler(surClicDatePublication); |
vue.getTriParDatePublicationAscendant().addClickHandler(surClicDatePublication); |
vue.getTriParDatePublicationDescendant().addClickHandler(surClicDatePublication); |
vue.getLabelNbCommentaires().addClickHandler(surClicNbCommentaires); |
vue.getTriParNbCommentairesAscendant().addClickHandler(surClicNbCommentaires); |
vue.getTriParNbCommentairesDescendant().addClickHandler(surClicNbCommentaires); |
} |
/** |
* Inverser le mode de tri en fonction du précédent |
* */ |
public void toggleModeTriPublication() { |
if (triCourantDatePublication == ModeTri.TRI_ASCENDANT) { |
triCourantDatePublication = ModeTri.TRI_DESCENDANT; |
} else if(triCourantDatePublication == ModeTri.TRI_DESCENDANT) { |
triCourantDatePublication = ModeTri.TRI_ASCENDANT; |
} else { |
triCourantDatePublication = ModeTri.TRI_DESCENDANT; |
} |
triCourantDateObservation = ModeTri.PAS_DE_TRI; |
triCourantNbCommentaires = ModeTri.PAS_DE_TRI; |
vue.setModeTriPublication(triCourantDatePublication); |
} |
/** |
* Inverser le mode de tri en fonction du précédent |
* */ |
public void toggleModeTriObservation() { |
if (triCourantDateObservation == ModeTri.TRI_ASCENDANT) { |
triCourantDateObservation = ModeTri.TRI_DESCENDANT; |
} else if(triCourantDateObservation == ModeTri.TRI_DESCENDANT) { |
triCourantDateObservation = ModeTri.TRI_ASCENDANT; |
} else { |
triCourantDateObservation = ModeTri.TRI_DESCENDANT; |
} |
triCourantDatePublication = ModeTri.PAS_DE_TRI; |
triCourantNbCommentaires = ModeTri.PAS_DE_TRI; |
vue.setModeTriObservation(triCourantDateObservation); |
} |
/** |
* Inverser le mode de tri en fonction du précédent |
* */ |
public void toggleModeTriNbCommentaires() { |
if (triCourantNbCommentaires == ModeTri.TRI_ASCENDANT) { |
triCourantNbCommentaires = ModeTri.TRI_DESCENDANT; |
} else if(triCourantNbCommentaires == ModeTri.TRI_DESCENDANT) { |
triCourantNbCommentaires = ModeTri.TRI_ASCENDANT; |
} else { |
triCourantNbCommentaires = ModeTri.TRI_DESCENDANT; |
} |
triCourantDateObservation = ModeTri.PAS_DE_TRI; |
triCourantDatePublication = ModeTri.PAS_DE_TRI; |
vue.setModeTriNbCommentaires(triCourantNbCommentaires); |
} |
/** |
* 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(); |
} |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplanteVue.java |
---|
New file |
0,0 → 1,191 |
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.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.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 triParDateObservationAscendant, triParDateObservationDescendant, |
triParDatePublicationAscendant, triParDatePublicationDescendant, |
triParNbCommentairesAscendant, triParNbCommentairesDescendant; |
@UiField |
Label aucunResultat, labelDateObservation, labelDatePublication, labelNbCommentaires; |
// 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 getTriParDateObservationAscendant() { |
return triParDateObservationAscendant; |
} |
public Button getTriParDateObservationDescendant() { |
return triParDateObservationDescendant; |
} |
public Button getTriParDatePublicationAscendant() { |
return triParDatePublicationAscendant; |
} |
public Button getTriParDatePublicationDescendant() { |
return triParDatePublicationDescendant; |
} |
@Override |
public Label getLabelDateObservation() { |
return labelDateObservation; |
} |
@Override |
public Label getLabelDatePublication() { |
return labelDatePublication; |
} |
@Override |
public Label getLabelNbCommentaires() { |
return labelNbCommentaires; |
} |
@Override |
public HasClickHandlers getTriParNbCommentairesAscendant() { |
return triParNbCommentairesAscendant; |
} |
@Override |
public HasClickHandlers getTriParNbCommentairesDescendant() { |
return triParNbCommentairesDescendant; |
} |
private void cacherTris() { |
triParDateObservationAscendant.setVisible(false); |
triParDateObservationDescendant.setVisible(false); |
triParDatePublicationDescendant.setVisible(false); |
triParDatePublicationAscendant.setVisible(false); |
triParNbCommentairesAscendant.setVisible(false); |
triParNbCommentairesDescendant.setVisible(false); |
} |
/** |
* 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 |
* */ |
@Override |
public void setModeTriPublication(ModeTri mode) { |
cacherTris(); |
if (mode == ModeTri.TRI_ASCENDANT) { |
triParDatePublicationAscendant.setVisible(true); |
triParDatePublicationDescendant.setVisible(false); |
} else { |
triParDatePublicationDescendant.setVisible(true); |
triParDatePublicationAscendant.setVisible(false); |
} |
} |
/** |
* 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 |
* */ |
@Override |
public void setModeTriObservation(ModeTri mode) { |
cacherTris(); |
if (mode == ModeTri.TRI_ASCENDANT) { |
triParDateObservationAscendant.setVisible(true); |
triParDateObservationDescendant.setVisible(false); |
} else { |
triParDateObservationDescendant.setVisible(true); |
triParDateObservationAscendant.setVisible(false); |
} |
} |
@Override |
public void setModeTriNbCommentaires(ModeTri mode) { |
cacherTris(); |
if (mode == ModeTri.TRI_ASCENDANT) { |
triParNbCommentairesAscendant.setVisible(true); |
triParNbCommentairesDescendant.setVisible(false); |
} else { |
triParNbCommentairesDescendant.setVisible(true); |
triParNbCommentairesAscendant.setVisible(false); |
} |
} |
} |
/branches/v1.7-oxygene/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; |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/ObservationVue.java |
---|
New file |
0,0 → 1,81 |
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); |
} |
@Override |
public void setNbCommentaires(String nbCommentaires) { |
boutonPlusDeDetails.setText(boutonPlusDeDetails.getText()+" ("+nbCommentaires+")"); |
} |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/observation.css |
---|
New file |
0,0 → 1,101 |
.observation { |
width:580px; |
padding:10px; |
margin-right:5px; |
border:solid 1px #DDD; |
} |
.titrePropositions { |
margin-top:0; |
background:none; |
} |
.listePropositions { |
background:none repeat scroll 0 0 #FAFAF0; |
border-color:#DDDDDD; |
border-radius:10px; |
border-style:solid; |
border-width:1px; |
box-shadow:2px 2px 2px #DDDDDD; |
min-height:250px; |
padding:10px; |
width:370px; |
} |
.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 { |
width: 300px; |
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 { |
width:280px; |
} |
.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:20px; |
} |
.boutonDetermination:hover { |
background-color:#AAA |
} |
.accesOutil { |
margin-top:15px; |
} |
.ajouterProposition { |
margin-top:10px; |
} |
.plusDeDetails { |
width: 130px; |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/ObservationVue.ui.xml |
---|
New file |
0,0 → 1,40 |
<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"> |
<g:HTMLPanel styleName="gauche 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 styleName="gauche {style.listePropositions}"> |
<g:HTMLPanel styleName="{style.panneauDeterminations}"> |
<g:Label styleName="titre2 {style.titrePropositions}">Propositions 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} {style.plusDeDetails}" |
text="Voir tous les commentaires" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<hr class="nettoyage" /> |
</g:HTMLPanel> |
</ui:UiBinder> |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/ObservationPresenteur.java |
---|
New file |
0,0 → 1,151 |
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.Window; |
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 void setNbCommentaires(String nbCommentaires); |
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).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()); |
vue.setNbCommentaires(observation.getNbCommentaires()); |
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()); |
} |
} |
/branches/v1.7-oxygene/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()); |
} |
} |
/branches/v1.7-oxygene/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; |
} |
} |
/branches/v1.7-oxygene/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> |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplanteVue.java |
---|
New file |
0,0 → 1,107 |
package org.tela_botanica.del.client.vues.identiplante.moteur; |
import org.tela_botanica.del.client.cache.CacheClient; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.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 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, ongletAConfirmer, 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 getOngletAConfirmer() { |
return ongletAConfirmer; |
} |
@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 setOngletAConfirmerActif() { |
nettoyerOngletsActifs(); |
ongletAConfirmer.addStyleName("onglet-actif"); |
} |
@Override |
public void setOngletValideesActif() { |
nettoyerOngletsActifs(); |
ongletValidees.addStyleName("onglet-actif"); |
} |
public void nettoyerOngletsActifs() { |
ongletTout.removeStyleName("onglet-actif"); |
ongletADeterminer.removeStyleName("onglet-actif"); |
ongletAConfirmer.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("aconfirmer")) { |
setOngletAConfirmerActif(); |
} else if (statut.equals("validees")) { |
setOngletValideesActif(); |
} |
} |
} |
/branches/v1.7-oxygene/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; |
} |
/branches/v1.7-oxygene/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplanteVue.ui.xml |
---|
New file |
0,0 → 1,27 |
<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="limiteMaxResultat"> |
<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="{constants.ongletTous}" ui:field="ongletTout"></g:Label> |
<g:Label styleName="onglet" text="{constants.ongletADeterminer}" ui:field="ongletADeterminer"></g:Label> |
<g:Label styleName="onglet" text="{constants.ongletAConfirmer}" ui:field="ongletAConfirmer"></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="{constants.ongletVerifiees}" ui:field="ongletValidees"></g:Label> |
</g:HTMLPanel> |
<g:HTMLPanel> |
<g:HTMLPanel ui:field="zoneResultats" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/branches/v1.7-oxygene/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 getOngletAConfirmer(); |
public HasClickHandlers getOngletADeterminer(); |
public HasClickHandlers getOngletTout(); |
public HasClickHandlers getOngletValidees(); |
public void setOngletADeterminerActif(); |
public void setOngletToutActif(); |
public void setOngletAConfirmerActif(); |
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.getOngletAConfirmer().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
CacheClient.getInstance().setFiltreStatut("aconfirmer"); |
CacheClient.getInstance().setPageCouranteRechercheObservations(1); |
chercherObservations(); |
vue.setOngletAConfirmerActif(); |
} |
}); |
vue.getOngletValidees().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
CacheClient.getInstance().setFiltreStatut("validees"); |
CacheClient.getInstance().setPageCouranteRechercheObservations(1); |
chercherObservations(); |
vue.setOngletValideesActif(); |
} |
}); |
} |
} |