Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 449 → Rev 450

/trunk/src/org/tela_botanica/del/client/composants/formulaires/AutoCompletionComboBoxPresenteur.java
1,5 → 1,6
package org.tela_botanica.del.client.composants.formulaires;
 
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.http.client.Request;
8,17 → 9,25
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.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
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;
 
public abstract class AutoCompletionComboBoxPresenteur {
private AutoCompletionComboBoxVue autoCompletionComboBoxVue = new AutoCompletionComboBoxVue();
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);
}
private Vue autoCompletionComboBoxVue;
SuggestOracle.Request requeteOracle;
SuggestOracle.Callback callBackOracle;
27,47 → 36,47
String urlRequete = "";
public AutoCompletionComboBoxPresenteur(String urlRequete) {
public AutoCompletionComboBoxPresenteur(Vue vue, String urlRequete) {
this.autoCompletionComboBoxVue = vue;
this.urlRequete = urlRequete;
gererEvenements();
}
public void go(HasWidgets composite) {
composite.add(autoCompletionComboBoxVue);
gererEvenements();
autoCompletionComboBoxVue.ajouterVue(composite);
}
public void gererEvenements() {
autoCompletionComboBoxVue.getSuggestBox().addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
autoCompletionComboBoxVue.getSuggestBoxHasKeyPressHandlers().addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if(event.getUnicodeCharCode() != 0) {
if(suggestionTimer == null) {
suggestionTimer = new Timer() {
public void run() {
requeteSuggestions(autoCompletionComboBoxVue.getSuggestBox().getValue());
}
};
suggestionTimer.schedule(tempsAvantRequete);
} else {
suggestionTimer.schedule(tempsAvantRequete);
}
gererTimer();
}
}
});
requeteOracle = new SuggestOracle.Request();
callBackOracle = new SuggestOracle.Callback() {
 
public void onSuggestionsReady(
com.google.gwt.user.client.ui.SuggestOracle.Request request,
com.google.gwt.user.client.ui.SuggestOracle.Response response) {
autoCompletionComboBoxVue.getSuggestBox().showSuggestionList();
public void onSuggestionsReady(SuggestOracle.Request request, SuggestOracle.Response response) {
autoCompletionComboBoxVue.afficherListeDeroulante();
}
};
}
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;
}
77,7 → 86,7
}
public String getValeur() {
return autoCompletionComboBoxVue.getSuggestBox().getValue();
return autoCompletionComboBoxVue.getValeur();
}
public void setValeur(String taxon) {
88,17 → 97,15
autoCompletionComboBoxVue.nettoyer();
}
private void requeteSuggestions(final String requete) {
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 {
try {
rb.sendRequest(null, new RequestCallback() {
 
public void onError(final Request request, final Throwable exception) {
// TODO Auto-generated method stub
106,12 → 113,7
 
public void onResponseReceived(final Request request,
final Response response) {
String[] valeurs = parserResultatRequete(response);
autoCompletionComboBoxVue.remplirListe(valeurs);
requeteOracle.setQuery(requete);
autoCompletionComboBoxVue.afficherSuggestions(requeteOracle, callBackOracle);
surReponseRequete(requete, response);
}
}) ;
 
121,6 → 123,14
}
}
public void surReponseRequete(String requete, Response response) {
String[] valeurs = parserResultatRequete(response);
autoCompletionComboBoxVue.remplirListe(valeurs);
requeteOracle.setQuery(requete);
autoCompletionComboBoxVue.afficherSuggestions(requeteOracle, callBackOracle);
}
/**
* 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)
/trunk/src/org/tela_botanica/del/client/composants/formulaires/AutoCompletionComboBoxVue.java
1,16 → 1,17
package org.tela_botanica.del.client.composants.formulaires;
 
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
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;
 
public class AutoCompletionComboBoxVue extends LayoutPanel {
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
30,10 → 31,16
}
}
@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("");
}
41,4 → 48,19
public void setValeur(String taxon) {
suggestions.setText(taxon);
}
 
@Override
public HasKeyPressHandlers getSuggestBoxHasKeyPressHandlers() {
return suggestions;
}
 
@Override
public String getValeur() {
return suggestions.getText();
}
 
@Override
public void ajouterVue(HasWidgets composite) {
composite.add(this.asWidget());
}
}