Subversion Repositories eFlore/Applications.del

Rev

Rev 1885 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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