Subversion Repositories eFlore/Applications.del

Rev

Rev 1885 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1782 mathias 1
package org.tela_botanica.del.client.utils;
2
 
3
import java.util.ArrayList;
4
import java.util.List;
5
 
6
import com.google.gwt.user.client.ui.MultiWordSuggestOracle.MultiWordSuggestion;
7
import com.google.gwt.user.client.ui.SuggestOracle;
8
 
9
/**
10
 * Un Oracle à suggestions qui retourne les résultats en respectant au mieux l'ordre de la
11
 * liste de suggestions fournies
12
 *
13
 * @author mathias
14
 */
15
public class TBSuggestOracle extends SuggestOracle {
16
 
17
	// On devrait gérer des objets qui contiennent le nn plutôt que de se baser uniquement sur des Strings
1886 mathias 18
	protected ArrayList<InfosNomPourAutocompletion> possibilites;
1782 mathias 19
 
20
	public TBSuggestOracle() {
1886 mathias 21
		this.possibilites = new ArrayList<InfosNomPourAutocompletion>();
1782 mathias 22
	}
23
 
24
	public void clear() {
25
		this.possibilites.clear();
26
	}
27
 
1886 mathias 28
	public void add(InfosNomPourAutocompletion suggestion) {
1782 mathias 29
		this.possibilites.add(suggestion);
30
	}
31
 
32
	public void requestSuggestions(Request request, Callback callback) {
33
		String query = request.getQuery().toLowerCase();
34
		int limit = request.getLimit();
35
		List<MultiWordSuggestion> retenus = new ArrayList<MultiWordSuggestion>();
36
 
1886 mathias 37
		for (InfosNomPourAutocompletion possibilite : this.possibilites) {
38
			String possibiliteTexte = possibilite.getNs();
39
			String possibiliteHtml = possibiliteTexte;
40
			if (possibilite.isRetenu()) {
41
				possibiliteHtml = "<strong>" + possibiliteHtml + "</strong>";
42
			}
43
			if (possibiliteTexte.toLowerCase().startsWith(query)) {
44
				MultiWordSuggestion muWoSug = new MultiWordSuggestion(possibiliteTexte, possibiliteHtml);
1782 mathias 45
				retenus.add(muWoSug);
46
			}
47
		}
48
 
49
		while (retenus.size() > limit) {
50
			retenus.remove(retenus.size() - 1);
51
		}
52
 
53
		Response reponse = new Response(retenus);
54
		callback.onSuggestionsReady(request, reponse);
55
	}
1885 aurelien 56
 
57
	  /**
58
	   * @override
59
	   */
60
	  public boolean isDisplayStringHTML() {
61
		// surcharger cette méthode permet de retourner du html dans displayString
62
		// (l'api est pourrie pourquoi ça n'est pas genre un attribut avec des setters/getters ?)
63
	    return true;
64
	  }
1782 mathias 65
}