Subversion Repositories eFlore/Applications.del

Rev

Rev 1782 | Go to most recent revision | 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
18
	protected ArrayList<String> possibilites;
19
 
20
	public TBSuggestOracle() {
21
		this.possibilites = new ArrayList<String>();
22
	}
23
 
24
	public void clear() {
25
		this.possibilites.clear();
26
	}
27
 
28
	public void add(String suggestion) {
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
 
37
		for (String possibilite : this.possibilites) {
38
			String possibiliteHtml = possibilite;
39
			if (possibilite.toLowerCase().startsWith(query)) {
40
				MultiWordSuggestion muWoSug = new MultiWordSuggestion(possibilite, possibiliteHtml);
41
				retenus.add(muWoSug);
42
			}
43
		}
44
 
45
		while (retenus.size() > limit) {
46
			retenus.remove(retenus.size() - 1);
47
		}
48
 
49
		Response reponse = new Response(retenus);
50
		callback.onSuggestionsReady(request, reponse);
51
	}
1885 aurelien 52
 
53
	  /**
54
	   * @override
55
	   */
56
	  public boolean isDisplayStringHTML() {
57
		// surcharger cette méthode permet de retourner du html dans displayString
58
		// (l'api est pourrie pourquoi ça n'est pas genre un attribut avec des setters/getters ?)
59
	    return true;
60
	  }
1782 mathias 61
}