Rev 1885 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.utils;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.user.client.ui.MultiWordSuggestOracle.MultiWordSuggestion;
import com.google.gwt.user.client.ui.SuggestOracle;
/**
* Un Oracle à suggestions qui retourne les résultats en respectant au mieux l'ordre de la
* liste de suggestions fournies
*
* @author mathias
*/
public class TBSuggestOracle extends SuggestOracle {
// On devrait gérer des objets qui contiennent le nn plutôt que de se baser uniquement sur des Strings
protected ArrayList<InfosNomPourAutocompletion> possibilites;
public TBSuggestOracle() {
this.possibilites = new ArrayList<InfosNomPourAutocompletion>();
}
public void clear() {
this.possibilites.clear();
}
public void add(InfosNomPourAutocompletion suggestion) {
this.possibilites.add(suggestion);
}
public void requestSuggestions(Request request, Callback callback) {
String query = request.getQuery().toLowerCase();
int limit = request.getLimit();
List<MultiWordSuggestion> retenus = new ArrayList<MultiWordSuggestion>();
for (InfosNomPourAutocompletion possibilite : this.possibilites) {
String possibiliteTexte = possibilite.getNs();
String possibiliteHtml = possibiliteTexte;
if (possibilite.isRetenu()) {
possibiliteHtml = "<strong>" + possibiliteHtml + "</strong>";
}
if (possibiliteTexte.toLowerCase().startsWith(query)) {
MultiWordSuggestion muWoSug = new MultiWordSuggestion(possibiliteTexte, possibiliteHtml);
retenus.add(muWoSug);
}
}
while (retenus.size() > limit) {
retenus.remove(retenus.size() - 1);
}
Response reponse = new Response(retenus);
callback.onSuggestionsReady(request, reponse);
}
/**
* @override
*/
public boolean isDisplayStringHTML() {
// surcharger cette méthode permet de retourner du html dans displayString
// (l'api est pourrie pourquoi ça n'est pas genre un attribut avec des setters/getters ?)
return true;
}
}