Rev 1885 | Go to most recent revision | 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 Stringsprotected 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;}}