Subversion Repositories eFlore/Applications.cel

Rev

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