New file |
0,0 → 1,65 |
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; |
} |
} |