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