Subversion Repositories eFlore/Applications.cel

Rev

Rev 680 | Rev 1292 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
669 aurelien 1
package org.tela_botanica.client.vues.image.filtres;
2 aperonnet 2
 
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Filtrable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
 
638 aurelien 7
import com.google.gwt.core.client.GWT;
8
import com.google.gwt.core.client.JavaScriptObject;
9
import com.google.gwt.event.dom.client.ClickEvent;
10
import com.google.gwt.event.dom.client.ClickHandler;
11
import com.google.gwt.user.client.Window;
2 aperonnet 12
import com.google.gwt.user.client.ui.Label;
638 aurelien 13
import com.gwtext.client.core.EventCallback;
2 aperonnet 14
import com.gwtext.client.core.EventObject;
638 aurelien 15
import com.gwtext.client.widgets.BoxComponent;
16
import com.gwtext.client.widgets.Button;
17
import com.gwtext.client.widgets.Component;
18
import com.gwtext.client.widgets.Container;
2 aperonnet 19
import com.gwtext.client.widgets.Panel;
638 aurelien 20
import com.gwtext.client.widgets.event.ButtonListener;
21
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
22
import com.gwtext.client.widgets.event.ContainerListener;
23
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
2 aperonnet 24
import com.gwtext.client.widgets.event.KeyListener;
25
import com.gwtext.client.widgets.form.TextField;
638 aurelien 26
import com.gwtext.client.widgets.layout.HorizontalLayout;
27
import com.gwtext.client.widgets.menu.Menu;
2 aperonnet 28
 
29
/**
5 aperonnet 30
 * Fenêtre de recherche pour les mots clés, contenant un champ texte, et un
31
 * bouton cliquable
32
 *
2 aperonnet 33
 * @author aurelien
5 aperonnet 34
 *
2 aperonnet 35
 */
5 aperonnet 36
public class BarreRechercheFiltreVue extends Panel implements Rafraichissable,
37
		Filtrable {
2 aperonnet 38
 
39
	/**
40
	 * Médiateur associé à la vue
41
	 */
5 aperonnet 42
	private ImageMediateur iMediateur = null;
43
 
2 aperonnet 44
	/**
5 aperonnet 45
	 * Barre de recherche
2 aperonnet 46
	 *
47
	 */
5 aperonnet 48
	private TextField champRecherche = null;
49
 
2 aperonnet 50
	/**
51
	 * Booleen d'etat du filtre
52
	 */
5 aperonnet 53
	private boolean filtreModifie = false;
638 aurelien 54
 
55
	private Button boutonRechercher = null;
5 aperonnet 56
 
2 aperonnet 57
	/**
58
	 * mot(s) à chercher
59
	 */
5 aperonnet 60
	private String motsAChercher = "";
638 aurelien 61
 
62
	private final int KEY_ENTER = 13;
5 aperonnet 63
 
2 aperonnet 64
	/**
65
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
66
	 */
67
	@SuppressWarnings("unused")
5 aperonnet 68
	private BarreRechercheFiltreVue() {
69
		super();
2 aperonnet 70
	}
5 aperonnet 71
 
2 aperonnet 72
	/**
5 aperonnet 73
	 * Constructeur avec médiateur
74
	 *
2 aperonnet 75
	 * @param im
76
	 */
5 aperonnet 77
	public BarreRechercheFiltreVue(ImageMediateur im) {
638 aurelien 78
 
5 aperonnet 79
		super();
638 aurelien 80
		setLayout(new HorizontalLayout(3));
5 aperonnet 81
		iMediateur = im;
82
 
83
		champRecherche = new TextField();
638 aurelien 84
 
85
		boutonRechercher = new Button("OK");
5 aperonnet 86
 
87
		add(champRecherche);
638 aurelien 88
		add(boutonRechercher);
5 aperonnet 89
 
90
		setPaddings(5);
91
		setBorder(false);
92
		setAutoWidth(true);
93
		setCollapsible(true);
638 aurelien 94
 
5 aperonnet 95
		ajouterListeners();
2 aperonnet 96
	}
5 aperonnet 97
 
2 aperonnet 98
	/**
99
	 * ajoute des listeners
100
	 */
638 aurelien 101
	public void ajouterListeners() {
102
 
103
			boutonRechercher.addListener(new ButtonListenerAdapter() {
104
 
105
				public void onClick(Button button, EventObject e) {
106
					valider();
107
					iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());
108
				}
109
			});
110
 
111
			champRecherche.addKeyPressListener(new EventCallback()	{
112
 
113
	    	    public void execute(EventObject e) {
114
 
115
		    		switch(e.getKey()) {
116
		    			case KEY_ENTER:
117
		    				valider();
118
		    				iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());
119
		    			break;
120
		    		}
121
	    	    }
122
			});
2 aperonnet 123
	}
5 aperonnet 124
 
2 aperonnet 125
	/**
126
	 * Fonction héritée de l'interface rafraichissable
127
	 */
128
	public void rafraichir(Object nouvelleDonnees,
129
			boolean repandreRaffraichissement) {
5 aperonnet 130
 
131
		filtreModifie = false;
132
 
2 aperonnet 133
	}
134
 
135
	/**
136
	 * renvoie l'état du filtre (modifié ou non)
5 aperonnet 137
	 *
2 aperonnet 138
	 * @return l'état du filtre
139
	 */
140
	public boolean renvoyerEtatFiltre() {
5 aperonnet 141
 
142
		return filtreModifie;
2 aperonnet 143
	}
144
 
145
	/**
146
	 * Renvoie le nom du filtre
5 aperonnet 147
	 *
2 aperonnet 148
	 * @return le nom du filtre
149
	 */
150
	public String renvoyerNomFiltre() {
5 aperonnet 151
 
965 aurelien 152
		return "Recherche ";
2 aperonnet 153
	}
5 aperonnet 154
 
2 aperonnet 155
	/**
156
	 * Renvoie un tableau contenant le nom du champ à filtrer et la valeur
5 aperonnet 157
	 *
2 aperonnet 158
	 * @return un tableau contenant le nom du champ à filtrer et sa valeur
159
	 */
160
	public String[] renvoyerValeursAFiltrer() {
5 aperonnet 161
 
162
		valider() ;
965 aurelien 163
		String[] valeurFiltre = { "recherche", motsAChercher };
5 aperonnet 164
		return valeurFiltre;
2 aperonnet 165
	}
5 aperonnet 166
 
2 aperonnet 167
	/**
168
	 * Accesseur pour le médiateur
5 aperonnet 169
	 *
170
	 * @return le médiateur associé
2 aperonnet 171
	 */
5 aperonnet 172
	public ImageMediateur getIMediateur() {
173
		return iMediateur;
2 aperonnet 174
	}
5 aperonnet 175
 
2 aperonnet 176
	/**
5 aperonnet 177
	 * Effectue quelque opérations dans la classe et envoie une requête de
178
	 * données au médiateur
2 aperonnet 179
	 */
5 aperonnet 180
	public void valider() {
181
		filtreModifie = true;
182
		motsAChercher = champRecherche.getText();
2 aperonnet 183
	}
5 aperonnet 184
 
2 aperonnet 185
	/**
186
	 * Affiche la fenetre
187
	 */
188
	public void afficherFiltre() {
5 aperonnet 189
 
190
		champRecherche.setValue(motsAChercher);
2 aperonnet 191
	}
192
 
680 aurelien 193
	public void viderFiltre() {
194
		champRecherche.setValue("");
195
	}
196
 
2 aperonnet 197
}