/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observations/ObservationVue.ui.xml |
---|
11,7 → 11,7 |
<g:HTMLPanel ui:field="metadonnees" styleName="{style.metadonnees}"/> |
<g:HTMLPanel ui:field="imagesPanel" /> |
<g:HTMLPanel> |
<g:Label ui:field="lienDeterminer" styleName="lien {style.lienDetermination}" |
<g:Button ui:field="boutonAjoutProposition" styleName="{style.lienDetermination}" |
text="{constants.proposerSaDetermination}" /> |
<g:HTMLPanel ui:field="determinationsPanel" /> |
</g:HTMLPanel> |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observations/ObservationPresenteur.java |
---|
11,8 → 11,15 |
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.validationobservation.EvenementValidation; |
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.composants.fenetereoverlay.FenetreOverlayDefilantePresenteur; |
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlaySimplePresenteur; |
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.vues.rechercheobservations.resultats.observationdeterminations.ObservationDeterminationPresenteur; |
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.observationdeterminations.ObservationDeterminationVue; |
24,14 → 31,10 |
public class ObservationPresenteur extends Presenteur { |
public abstract interface Vue extends IsWidget { |
public HasClickHandlers getLienDeterminer(); |
public interface Vue extends IsWidget { |
public HasClickHandlers getBoutonAjoutProposition(); |
public HasWidgets getDeterminationsPanel(); |
public HasWidgets getImagesPanel(); |
public HasWidgets getImagesPanel(); |
public HasWidgets getMetadonneesPanel(); |
} |
38,6 → 41,8 |
private Vue vue; |
private Observation observation; |
private ObservationDeterminationPresenteur observationDeterminationPresenteur; |
public ObservationPresenteur(Vue vue, Observation observation) { |
this.observation = observation; |
46,13 → 51,12 |
} |
public void chargerObservation() { |
new ObservationImagesPresenteur(new ObservationImagesVue(), observation).go(vue.getImagesPanel()); |
new MetadonneesPresenteur(new MetadonneesVue(), observation, ModeRecherche.MODE_OBSERVATION).go(vue.getMetadonneesPanel()); |
new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionsDetermination()).go(vue.getDeterminationsPanel()); |
observationDeterminationPresenteur = new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionsDetermination()); |
observationDeterminationPresenteur.go(vue.getDeterminationsPanel()); |
gererEvenements(); |
} |
public void go(HasWidgets composite) { |
60,9 → 64,19 |
} |
protected void gererEvenements() { |
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() { |
@Override |
public void onAjoutDetermination(EvenementAjoutDetermination event) { |
if (fenetreModaleEstOuverte()) { |
fermerFenetreModale(); |
ajouterPropositionDetermination(event.getPropositionDetermination()); |
} |
} |
}); |
vue.getLienDeterminer().addClickHandler(new ClickHandler() { |
vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
List<Image> images = observation.getImages(); |
if (images.size() > 0) { |
70,8 → 84,14 |
} else { |
CacheClient.getInstance().setImageCourante(null); |
} |
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation)); |
CacheClient.getInstance().setObservationCourante(observation); |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue())); |
} |
}); |
} |
private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) { |
observationDeterminationPresenteur.setPropositions(observation.getPropositionsDetermination()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observations/ObservationVue.java |
---|
5,6 → 5,7 |
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; |
19,7 → 20,7 |
private static Binder binder = GWT.create(Binder.class); |
@UiField |
protected Label lienDeterminer; |
Button boutonAjoutProposition; |
@UiField |
protected Panel determinationsPanel; |
32,8 → 33,8 |
} |
@Override |
public HasClickHandlers getLienDeterminer() { |
return lienDeterminer; |
public HasClickHandlers getBoutonAjoutProposition() { |
return boutonAjoutProposition; |
} |
public Panel getDeterminationsPanel() { |
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/observationdeterminations/ObservationDeterminationPresenteur.java |
---|
32,7 → 32,6 |
int i = 0; |
for (PropositionDetermination proposition : propositions) { |
HTMLPanel panneau = new HTMLPanel(""); |
DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition); |
presenteurVote.go(panneau); |
40,8 → 39,12 |
vue.setTexteTableau(i, 1, String.valueOf(proposition.getListeCommentaires().size()) + " " + I18n.getVocabulary().commentaires()); |
i++; |
} |
} |
public void setPropositions(List<PropositionDetermination> propositions) { |
this.propositions = propositions; |
chargerPropositions(); |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
/trunk/src/org/tela_botanica/del/client/vues/vueinitiale/VueInitiale.java |
---|
1,7 → 1,7 |
package org.tela_botanica.del.client.vues.vueinitiale; |
import org.tela_botanica.del.client.composants.identification.FormulaireIdentificationPresenteur; |
import org.tela_botanica.del.client.composants.identification.FormulaireIdentificationVue; |
import org.tela_botanica.del.client.composants.formulaires.identification.FormulaireIdentificationPresenteur; |
import org.tela_botanica.del.client.composants.formulaires.identification.FormulaireIdentificationVue; |
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation; |
import org.tela_botanica.del.client.services.rest.UtilisateurService; |
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret; |
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionVue.ui.xml |
---|
File deleted |
\ No newline at end of file |
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionPresenteur.java |
---|
File deleted |
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionVue.java |
---|
File deleted |
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/formulaireProposition.css |
---|
File deleted |
\ No newline at end of file |
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationPresenteur.java |
---|
17,8 → 17,10 |
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.vues.plateformedetermination.formulaireproposition.FormulairePropositionPresenteur; |
import org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition.FormulairePropositionVue; |
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlaySimplePresenteur; |
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.vues.plateformedetermination.formulairerechercheeflore.FormulaireRechercheEflorePresenteur; |
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ForumPresenteur; |
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ForumVue; |
36,19 → 38,13 |
public class DeterminationPresenteur extends Presenteur { |
public abstract interface Vue extends IsWidget { |
public interface Vue extends IsWidget { |
public VerticalPanel getForum(); |
public VerticalPanel getDetailImageObservation(); |
public VerticalPanel getFormulaireRechercheEflore(); |
public VerticalPanel getVote(); |
public VerticalPanel getBarreRepartition(); |
public Button getBoutonAjoutProposition(); |
public HasWidgets getMetadonnees(); |
} |
55,6 → 51,7 |
private Vue vue; |
BarreRepartitionVotePresenteur barreRepartitionVotePresenteur; |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
public DeterminationPresenteur(Vue vue) { |
this.vue = vue; |
98,17 → 95,16 |
vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue())); |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue())); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() { |
@Override |
public void onAjoutDetermination(EvenementAjoutDetermination event) { |
if (fenetreModaleEstOuverte()) { |
fermerFenetreModale(); |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
} |
}); |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/AutoCompletionComboBoxPresenteur.java |
---|
File deleted |
\ No newline at end of file |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/AutoCompletionComboBoxVue.java |
---|
File deleted |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/identification/FormulaireIdentificationVue.ui.xml |
---|
New file |
0,0 → 1,24 |
<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="identification.css" /> |
<g:HTMLPanel styleName="{style.zoneIdentification}"> |
<g:HTMLPanel ui:field="zoneUtilisateur"> |
<g:Label ui:field="connecter" styleName="{style.connecter}" text="{constants.seConnecter}" /> |
<g:HorizontalPanel><g:Label ui:field="email" styleName="{style.email}">Email</g:Label><g:Label ui:field="deconnecter" styleName="{style.deconnecter}" text="{constants.seDeconnecter}" /></g:HorizontalPanel> |
</g:HTMLPanel> |
<g:HTMLPanel ui:field="zoneFormulaire" styleName="{style.zoneFormulaire}"> |
<g:Label ui:field="erreurIdentification" styleName="{style.erreur}"></g:Label> |
<g:Label text="{constants.login}" /> |
<g:TextBox ui:field="login" styleName="{style.login}" /> |
<g:Label text="{constants.motdepasse}" /> |
<g:PasswordTextBox ui:field="motdepasse" styleName="{style.motdepasse}"></g:PasswordTextBox> |
<g:Button ui:field="boutonOK">OK</g:Button> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/identification/FormulaireIdentificationPresenteur.java |
---|
New file |
0,0 → 1,149 |
package org.tela_botanica.del.client.composants.formulaires.identification; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.modeles.Utilisateur; |
import org.tela_botanica.del.client.services.rest.UtilisateurService; |
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback; |
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.event.dom.client.HasKeyPressHandlers; |
import com.google.gwt.event.dom.client.KeyCodes; |
import com.google.gwt.event.dom.client.KeyPressEvent; |
import com.google.gwt.event.dom.client.KeyPressHandler; |
import com.google.gwt.user.client.ui.HasText; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class FormulaireIdentificationPresenteur { |
public abstract interface Vue extends IsWidget { |
public void ajouterVue(HasWidgets composite); |
public HasClickHandlers getSeConnecter(); |
public HasClickHandlers getSeDeconnecter(); |
public void basculerAffichageFormulaire(); |
public void basculerModeConnecte(Utilisateur utilisateur); |
public HasClickHandlers getBoutonOK(); |
public HasText getLogin(); |
public HasText getMotdepasse(); |
public void afficherErreur(); |
public void masquerErreur(); |
public void viderFormulaire(); |
public void setErreur(String idTexte); |
public String getErreur(); |
public HasKeyPressHandlers getLoginHasKeyPressHandler(); |
public HasKeyPressHandlers getMotdepasseHasKeyPressHandler(); |
} |
private Vue vue; |
private Utilisateur utilisateur; |
private UtilisateurService utilisateurService; |
public FormulaireIdentificationPresenteur(Vue vue, UtilisateurService utilisateurService) { |
this.vue = vue; |
this.utilisateurService = utilisateurService; |
utilisateurService.obtenirUtilisateur(new UtilisateurCallback() { |
@Override |
public void surRetourUtilisateur(Utilisateur utilisateur) { |
CacheClient.getInstance().setUtilisateur(utilisateur); |
rafraichir(); |
} |
}); |
gererEvenements(); |
} |
public void rafraichir() { |
utilisateur = CacheClient.getInstance().getUtilisateur(); |
vue.basculerModeConnecte(this.utilisateur); |
} |
public void gererEvenements() { |
vue.getSeConnecter().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
vue.basculerAffichageFormulaire(); |
} |
}); |
vue.getBoutonOK().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
surTentativeLogin(); |
} |
}); |
vue.getSeDeconnecter().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur(); |
deconnecterUtilisateur(utilisateur.getCourriel()); |
} |
}); |
vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree()); |
vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree()); |
} |
private void surTentativeLogin() { |
String login = vue.getLogin().getText(); |
String motdepasse = vue.getMotdepasse().getText(); |
if (login.equals("") || motdepasse.equals("")) { |
gererErreur("saisirLogin"); |
} else { |
connecterUtilisateur(login, motdepasse); |
} |
} |
public KeyPressHandler creerGestionnaireEvenementToucheEntree() { |
return new KeyPressHandler() { |
public void onKeyPress(KeyPressEvent event) { |
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) { |
surTentativeLogin(); |
} |
} |
}; |
} |
public void gererErreur(String erreur) { |
vue.setErreur(erreur); |
vue.afficherErreur(); |
} |
public void connecterUtilisateur(String login, String motdepasse) { |
utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() { |
@Override |
public void surRetourUtilisateur(Utilisateur utilisateur) { |
CacheClient.getInstance().setUtilisateur(utilisateur); |
if (utilisateur.estIdentifie()) { |
vue.masquerErreur(); |
rafraichir(); |
vue.basculerAffichageFormulaire(); |
vue.viderFormulaire(); |
} else { |
vue.setErreur("identificationRefus"); |
vue.afficherErreur(); |
} |
} |
}); |
} |
public void deconnecterUtilisateur(String courriel) { |
utilisateurService.deconnecterUtilisateur(courriel, new UtilisateurCallback() { |
@Override |
public void surRetourUtilisateur(Utilisateur utilisateur) { |
CacheClient.getInstance().setUtilisateur(utilisateur); |
rafraichir(); |
} |
}); |
} |
public void go(HasWidgets composite) { |
vue.ajouterVue(composite); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/identification/FormulaireIdentificationVue.java |
---|
New file |
0,0 → 1,127 |
package org.tela_botanica.del.client.composants.formulaires.identification; |
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.modeles.Utilisateur; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.event.dom.client.HasKeyPressHandlers; |
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.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.TextBox; |
import com.google.gwt.user.client.ui.Widget; |
public class FormulaireIdentificationVue extends Composite implements FormulaireIdentificationPresenteur.Vue { |
interface Binder extends UiBinder<Widget, FormulaireIdentificationVue> { |
} |
private static Binder uiBinder = GWT.create(Binder.class); |
@UiField |
Label connecter, deconnecter, email, erreurIdentification; |
@UiField Panel zoneFormulaire; |
@UiField Button boutonOK; |
@UiField TextBox login, motdepasse; |
public FormulaireIdentificationVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
basculerAffichageFormulaire(); |
connecter.setVisible(false); |
erreurIdentification.setVisible(false); |
} |
@Override |
public void ajouterVue(HasWidgets composite) { |
composite.add(this.asWidget()); |
} |
@Override |
public HasClickHandlers getSeConnecter() { |
return connecter; |
} |
@Override |
public void basculerAffichageFormulaire() { |
zoneFormulaire.setVisible(!zoneFormulaire.isVisible()); |
} |
@Override |
public void basculerModeConnecte(Utilisateur utilisateur) { |
boolean estConnecte = utilisateur.estIdentifie(); |
connecter.setVisible(!estConnecte); |
deconnecter.setVisible(estConnecte); |
email.setText(utilisateur.getNomPrenomFormate()); |
email.setVisible(estConnecte); |
} |
@Override |
public HasClickHandlers getBoutonOK() { |
return boutonOK; |
} |
@Override |
public TextBox getLogin() { |
return login; |
} |
@Override |
public TextBox getMotdepasse() { |
return motdepasse; |
} |
@Override |
public HasClickHandlers getSeDeconnecter() { |
return deconnecter; |
} |
@Override |
public void afficherErreur() { |
erreurIdentification.setVisible(true); |
} |
@Override |
public void masquerErreur() { |
erreurIdentification.setVisible(false); |
} |
@Override |
public void viderFormulaire() { |
login.setText(""); |
motdepasse.setText(""); |
} |
@Override |
public void setErreur(String idTexte) { |
String texte = ""; |
if (idTexte.equals("saisirLogin")) { |
texte = I18n.getMessages().saisirLogin(); |
} else { |
texte = I18n.getMessages().identificationRefus(); |
} |
erreurIdentification.setText(texte); |
} |
public String getErreur() { |
return erreurIdentification.getText(); |
} |
@Override |
public HasKeyPressHandlers getLoginHasKeyPressHandler() { |
return login; |
} |
@Override |
public HasKeyPressHandlers getMotdepasseHasKeyPressHandler() { |
return motdepasse; |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/identification/identification.css |
---|
New file |
0,0 → 1,8 |
.zoneIdentification {} |
.connecter { text-decoration:underline; color:blue; cursor:pointer} |
.deconnecter { text-decoration:underline; color:blue; cursor:pointer} |
.email {padding-right:10px} |
.zoneFormulaire {position:absolute; padding:10px; margin-top:10px; border:solid 2px #8eb533; background:white; box-shadow:2px 2px 2px #666} |
.login {} |
.motdepasse {} |
.erreur {color:red;} |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/formulaireProposition.css |
---|
New file |
0,0 → 1,9 |
.formulaireProposition {z-index:1500; padding:50px; background:white; width:50%; width:600px; margin:0 auto; margin-top:5%;} |
.boutonProposer {float:right; margin-right:35px; margin-top:-85px; padding:10px; background:url(./img/add.png) no-repeat 5px 12px #DDD; padding-left:20px; cursor:pointer} |
.boutonProposer:hover {background-color:#AAA} |
.colonneGauche, .colonneDroite {width:250px;} |
.colonneGauche {padding-right:30px} |
.colonneGauche select {width:100%} |
.colonneGauche input {width:95%} |
.commentaire {width:250px; height:100px} |
.propositionTaxon{width:100%;height:30px;} |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/FormulairePropositionVue.ui.xml |
---|
New file |
0,0 → 1,31 |
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> |
<ui:UiBinder |
xmlns:ui='urn:ui:com.google.gwt.uibinder' |
xmlns:g='urn:import:com.google.gwt.user.client.ui' |
xmlns:vues="urn:import:org.tela_botanica.del.client.vues.plateformedetermination.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/> |
<ui:style src="formulaireProposition.css" /> |
<g:VerticalPanel styleName="{style.formulaireProposition}"> |
<g:Label text="{constants.proposerSaDetermination}" styleName="titre"/> |
<g:Label text="{constants.infoProposerDetermination}" styleName="petit"/> |
<g:HTML><br /></g:HTML> |
<g:HorizontalPanel> |
<g:VerticalPanel styleName="{style.colonneGauche}"> |
<g:Label text="{constants.vous}" styleName="sousTitre"/> |
<g:Label text="{constants.infoVous}" styleName="petit" /> |
<g:TextBox ui:field="nomPrenom" /> |
<g:HTML><br /></g:HTML> |
<g:Label text="{constants.choisirUnTaxon}" styleName="sousTitre"/> |
<g:HTML HTML="{constants.infoTaxon}" styleName="petit"/> |
<g:LayoutPanel ui:field="propositionTaxon" styleName="{style.propositionTaxon}" /> |
<g:HTML><br /></g:HTML> |
<g:Label text="{constants.commentaire}" styleName="sousTitre"/> |
<g:TextArea ui:field="commentaires" styleName="{style.commentaire}" /> |
</g:VerticalPanel> |
</g:HorizontalPanel> |
<g:Button text="{constants.boutonProposer}" ui:field="boutonValidationProposition" styleName="{style.boutonProposer}"/> |
</g:VerticalPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/FormulairePropositionPresenteur.java |
---|
New file |
0,0 → 1,128 |
package org.tela_botanica.del.client.composants.formulaires.formulaireproposition; |
import java.util.Date; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxPresenteur; |
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul; |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.modeles.Commentaire; |
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.ajoutdetermination.EvenementAjoutDetermination; |
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService; |
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.http.client.Response; |
import com.google.gwt.user.client.ui.HasText; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class FormulairePropositionPresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
public HasText getNomPrenom(); |
public HasWidgets getPropositionTaxon(); |
public HasText getCommentaires(); |
public HasClickHandlers getBoutonValidationProposition(); |
public void afficherStyleErreur(String styleErreur); |
public void supprimerStyleErreur(String styleErreur); |
public void afficherNomPrenomEtDesactiver(String nomPrenomFormate); |
} |
private Vue vue; |
private Config config; |
private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur; |
public FormulairePropositionPresenteur(Vue vue) { |
this.vue = vue; |
config = new Config(); |
creerCompletionTaxons(); |
remplirAvecInfosUtilisateur(); |
} |
private void remplirAvecInfosUtilisateur() { |
if(CacheClient.getInstance().getUtilisateur().estIdentifie()) { |
vue.afficherNomPrenomEtDesactiver(CacheClient.getInstance().getUtilisateur().getNomPrenomFormate()); |
} |
} |
private void creerCompletionTaxons() { |
String url = this.config.getUrl("nomSciCompletionService"); |
autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) { |
protected String effectuerPreTraitementChaineRequete(String requete) { |
return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete); |
} |
@Override |
protected String[] parserResultatRequete(Response response) { |
return UtilitairesAutoCompletionService.parserRetourSimple(response); |
} |
}; |
} |
public void go(HasWidgets composite) { |
autoCompletionNomTaxonsPresenteur.go(vue.getPropositionTaxon()); |
composite.add(vue.asWidget()); |
gererEvenements(); |
} |
protected void gererEvenements() { |
vue.getBoutonValidationProposition().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if (!validerSaisieProposition()) { |
return; |
} else { |
PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition(); |
CacheClient.getInstance().getObservationCourante().ajouterPropositionDetermination(propositionAjoutee); |
EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee); |
BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination); |
} |
} |
}); |
} |
private boolean validerSaisieProposition() { |
ValidateurChampTexteNonNul validateurTaxon = new ValidateurChampTexteNonNul(vue.getNomPrenom()) { |
@Override |
public void afficherStyleErreur(String styleErreur) { |
vue.afficherStyleErreur(styleErreur); |
} |
@Override |
public void supprimerStyleErreur(String styleErreur) { |
vue.supprimerStyleErreur(styleErreur); |
} |
}; |
boolean taxonSaisi = validateurTaxon.valider(); |
return taxonSaisi; |
} |
private PropositionDetermination collecterValeursSaisieProposition() { |
PropositionDetermination propositionAjoutee = new PropositionDetermination(); |
propositionAjoutee.setId(CacheClient.getInstance().getImageCourante().getIdImage()); |
String auteur = vue.getNomPrenom().getText(); |
if (vue.getCommentaires().getText() != "") { |
String contenuCommentaire = vue.getCommentaires().getText(); |
Commentaire comm = new Commentaire(auteur, new Date(), contenuCommentaire); |
propositionAjoutee.ajouterCommentaire(comm); |
} |
propositionAjoutee.setContributeur(auteur); |
propositionAjoutee.setDate(new Date()); |
propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur()); |
return propositionAjoutee; |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/FormulairePropositionVue.java |
---|
New file |
0,0 → 1,73 |
package org.tela_botanica.del.client.composants.formulaires.formulaireproposition; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.Button; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.LayoutPanel; |
import com.google.gwt.user.client.ui.TextArea; |
import com.google.gwt.user.client.ui.TextBox; |
import com.google.gwt.user.client.ui.Widget; |
public class FormulairePropositionVue extends Composite implements FormulairePropositionPresenteur.Vue { |
@UiField(provided = true) |
public TextBox nomPrenom = new TextBox(); |
@UiField(provided = true) |
public LayoutPanel propositionTaxon = new LayoutPanel(); |
@UiField(provided = true) |
public TextArea commentaires = new TextArea(); |
@UiField(provided = true) |
public Button boutonValidationProposition = new Button(); |
interface FormulairePropositionUIiBinder extends UiBinder<Widget, FormulairePropositionVue> { |
}; |
FormulairePropositionUIiBinder uiBinder = GWT.create(FormulairePropositionUIiBinder.class); |
public FormulairePropositionVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public TextBox getNomPrenom() { |
return nomPrenom; |
} |
@Override |
public LayoutPanel getPropositionTaxon() { |
return propositionTaxon; |
} |
@Override |
public TextArea getCommentaires() { |
return commentaires; |
} |
@Override |
public Button getBoutonValidationProposition() { |
return boutonValidationProposition; |
} |
@Override |
public void afficherStyleErreur(String styleErreur) { |
nomPrenom.addStyleName(styleErreur); |
propositionTaxon.addStyleName(styleErreur); |
} |
@Override |
public void supprimerStyleErreur(String styleErreur) { |
nomPrenom.removeStyleName(styleErreur); |
propositionTaxon.removeStyleName(styleErreur); |
} |
@Override |
public void afficherNomPrenomEtDesactiver(String nomPrenomFormate) { |
nomPrenom.setText(nomPrenomFormate); |
nomPrenom.setEnabled(false); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/autocompletion/AutoCompletionComboBoxVue.java |
---|
New file |
0,0 → 1,74 |
package org.tela_botanica.del.client.composants.formulaires.autocompletion; |
import com.google.gwt.event.dom.client.HasKeyPressHandlers; |
import com.google.gwt.event.logical.shared.HasSelectionHandlers; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.LayoutPanel; |
import com.google.gwt.user.client.ui.MultiWordSuggestOracle; |
import com.google.gwt.user.client.ui.SuggestBox; |
import com.google.gwt.user.client.ui.SuggestOracle; |
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion; |
import com.google.gwt.view.client.SelectionChangeEvent.HasSelectionChangedHandlers; |
public class AutoCompletionComboBoxVue extends LayoutPanel implements AutoCompletionComboBoxPresenteur.Vue { |
MultiWordSuggestOracle msu = new MultiWordSuggestOracle(); |
SuggestBox suggestions = new SuggestBox(msu); |
public AutoCompletionComboBoxVue() { |
add(suggestions); |
//TODO: voir avec greg si la taille doit être définie ici |
setHeight("25px"); |
setWidth("100%"); |
} |
public SuggestBox getSuggestBox() { |
return suggestions; |
} |
public void remplirListe(String[] listePropositions) { |
msu.clear(); |
for (int i = 0; i < listePropositions.length; i++) { |
msu.add(listePropositions[i]); |
} |
} |
@Override |
public void afficherSuggestions(SuggestOracle.Request requeteOracle, SuggestOracle.Callback callBackOracle) { |
msu.requestSuggestions(requeteOracle, callBackOracle); |
} |
@Override |
public void afficherListeDeroulante() { |
suggestions.showSuggestionList(); |
} |
public void nettoyer() { |
suggestions.setText(""); |
} |
public void setValeur(String taxon) { |
suggestions.setValue(taxon); |
} |
@Override |
public HasKeyPressHandlers getSuggestBoxHasKeyPressHandlers() { |
return suggestions; |
} |
@Override |
public HasSelectionHandlers<Suggestion> getSuggestBoxHasSelectionChangeHandlers() { |
return suggestions; |
} |
@Override |
public String getValeur() { |
return suggestions.getText(); |
} |
@Override |
public void ajouterVue(HasWidgets composite) { |
composite.add(this.asWidget()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/autocompletion/AutoCompletionComboBoxPresenteur.java |
---|
New file |
0,0 → 1,172 |
package org.tela_botanica.del.client.composants.formulaires.autocompletion; |
import com.google.gwt.event.dom.client.HasKeyPressHandlers; |
import com.google.gwt.event.dom.client.KeyPressEvent; |
import com.google.gwt.event.dom.client.KeyPressHandler; |
import com.google.gwt.event.logical.shared.HasSelectionHandlers; |
import com.google.gwt.event.logical.shared.SelectionEvent; |
import com.google.gwt.event.logical.shared.SelectionHandler; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.http.client.URL; |
import com.google.gwt.user.client.Timer; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.SuggestOracle; |
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion; |
public abstract class AutoCompletionComboBoxPresenteur { |
public interface Vue extends IsWidget { |
public void ajouterVue(HasWidgets composite); |
public HasKeyPressHandlers getSuggestBoxHasKeyPressHandlers(); |
public String getValeur(); |
public void remplirListe(String[] suggestions); |
public void afficherSuggestions(SuggestOracle.Request request,SuggestOracle.Callback response); |
public void afficherListeDeroulante(); |
public void nettoyer(); |
public void setValeur(String valeur); |
HasSelectionHandlers<Suggestion> getSuggestBoxHasSelectionChangeHandlers(); |
} |
private Vue autoCompletionComboBoxVue; |
SuggestOracle.Request requeteOracle; |
SuggestOracle.Callback callBackOracle; |
Timer suggestionTimer = null; |
int tempsAvantRequete = 500; |
String urlRequete = ""; |
public AutoCompletionComboBoxPresenteur(Vue vue, String urlRequete) { |
this.autoCompletionComboBoxVue = vue; |
this.urlRequete = urlRequete; |
gererEvenements(); |
} |
public void go(HasWidgets composite) { |
autoCompletionComboBoxVue.ajouterVue(composite); |
} |
public void gererEvenements() { |
autoCompletionComboBoxVue.getSuggestBoxHasKeyPressHandlers().addKeyPressHandler(new KeyPressHandler() { |
public void onKeyPress(KeyPressEvent event) { |
if(event.getUnicodeCharCode() != 0) { |
gererTimer(); |
} |
} |
}); |
requeteOracle = new SuggestOracle.Request(); |
callBackOracle = new SuggestOracle.Callback() { |
public void onSuggestionsReady(SuggestOracle.Request request, SuggestOracle.Response response) { |
autoCompletionComboBoxVue.afficherListeDeroulante(); |
} |
}; |
autoCompletionComboBoxVue.getSuggestBoxHasSelectionChangeHandlers().addSelectionHandler(new SelectionHandler<SuggestOracle.Suggestion>(){ |
@Override |
public void onSelection(SelectionEvent<Suggestion> event) { |
surSelectionSuggestion(event.getSelectedItem().getReplacementString()); |
} |
}); |
} |
public void gererTimer() { |
if(suggestionTimer == null) { |
suggestionTimer = new Timer() { |
public void run() { |
requeteSuggestions(); |
} |
}; |
suggestionTimer.schedule(tempsAvantRequete); |
} else { |
suggestionTimer.schedule(tempsAvantRequete); |
} |
} |
public void setTempsAvantRequete(int temps) { |
tempsAvantRequete = temps; |
} |
public int getTempsAvantRequete(int temps) { |
return tempsAvantRequete; |
} |
public String getValeur() { |
return autoCompletionComboBoxVue.getValeur(); |
} |
public void setValeur(String taxon) { |
autoCompletionComboBoxVue.setValeur(taxon); |
} |
public void nettoyer() { |
autoCompletionComboBoxVue.nettoyer(); |
} |
public void requeteSuggestions() { |
final String requete = autoCompletionComboBoxVue.getValeur(); |
String requeteAjax = effectuerPreTraitementChaineRequete(requete); |
String urlProxy = URL.encode(urlRequete+requeteAjax); |
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlProxy) ; |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(final Request request, final Throwable exception) { |
// TODO Auto-generated method stub |
} |
public void onResponseReceived(final Request request, |
final Response response) { |
surReponseRequete(requete, response); |
} |
}) ; |
} catch (RequestException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
} |
public void surReponseRequete(String requete, Response response) { |
String[] valeurs = parserResultatRequete(response); |
autoCompletionComboBoxVue.remplirListe(valeurs); |
requeteOracle.setQuery(requete); |
autoCompletionComboBoxVue.afficherSuggestions(requeteOracle, callBackOracle); |
} |
protected void surSelectionSuggestion(String suggestion) { |
return; |
} |
/** |
* Permet d'intervenir sur la chaine tapée par l'utilisateur avant que celle-ci ne soit passée |
* à la requête asynchrone pour pouvoir la formater (pour mettre en minuscule, séparer des termes) |
* par défaut renvoie la chaine telle quelle, à surcharger au besoin |
* @param String requete chaine de recherche contenant ce que l'utilisateur à tapé |
* @return String une chaine transformée |
*/ |
protected String effectuerPreTraitementChaineRequete(String requete) { |
return requete; |
} |
/** |
* Parse les résultats de la requete afin de pouvoir les utiliser à implémenter par le |
* composants qui crée la combobox selon le contexte et le web service appelé. |
* @param Response la réponse à la requête asynchrone |
* @return String[] le tableau des suggestions qui sera affiché dans la combobox |
*/ |
protected abstract String[] parserResultatRequete(Response response); |
public Vue getAutoCompletionComboBoxVue() { |
return autoCompletionComboBoxVue; |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/identification/FormulaireIdentificationVue.ui.xml |
---|
File deleted |
\ No newline at end of file |
/trunk/src/org/tela_botanica/del/client/composants/identification/FormulaireIdentificationPresenteur.java |
---|
File deleted |
/trunk/src/org/tela_botanica/del/client/composants/identification/FormulaireIdentificationVue.java |
---|
File deleted |
/trunk/src/org/tela_botanica/del/client/composants/identification/identification.css |
---|
File deleted |
\ No newline at end of file |
/trunk/src/org/tela_botanica/del/client/composants/fenetereoverlay/FenetreOverlaySimplePresenteur.java |
---|
New file |
0,0 → 1,21 |
package org.tela_botanica.del.client.composants.fenetereoverlay; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
public class FenetreOverlaySimplePresenteur extends FenetreOverlayDefilantePresenteur { |
public FenetreOverlaySimplePresenteur(Vue vue) { |
super(0, vue); |
afficherBoutonsSuivantsPrecedents(false); |
} |
public void ouvrirFenetreModale(Presenteur presenteur) { |
super.ouvrirFenetreModaleDefilante(0, presenteur); |
} |
@Override |
public void surClicBoutonSuivant() {} |
@Override |
public void surClicBoutonPrecedent() {} |
} |
/trunk/src/org/tela_botanica/del/client/composants/moteurrecherche/MoteurRecherchePresenteur.java |
---|
1,8 → 1,8 |
package org.tela_botanica.del.client.composants.moteurrecherche; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.formulaires.AutoCompletionComboBoxPresenteur; |
import org.tela_botanica.del.client.composants.formulaires.AutoCompletionComboBoxVue; |
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxPresenteur; |
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.modeles.InformationsRecherche; |
/trunk/src/org/tela_botanica/del/client/modeles/Observation.java |
---|
141,7 → 141,7 |
this.motsClefs.add(motsClefs); |
} |
public void addImageCelValidationData(PropositionDetermination observationValidation) { |
public void ajouterPropositionDetermination(PropositionDetermination observationValidation) { |
propositionsDetermination.add(observationValidation); |
} |
/trunk/src/org/tela_botanica/del/client/navigation/evenement/BusEvenementiel.java |
---|
62,7 → 62,6 |
@Override |
public void onRechercheObservation(EvenementRechercheObservation event) { |
doRechercheObservation(); |
} |
}); |
/trunk/src/org/tela_botanica/del/client/utils/UtilitairesServiceResultat.java |
---|
35,7 → 35,7 |
public static Observation parserObservationEtCreerPropositionDetermination(JSONObject observationJson) { |
Observation observation = parserObservationJSON(observationJson); |
observation.addImageCelValidationData(creerPropositionDeterminationAPartirObservationJSON(observationJson)); |
observation.ajouterPropositionDetermination(creerPropositionDeterminationAPartirObservationJSON(observationJson)); |
return observation; |
} |