Subversion Repositories eFlore/Applications.cel

Rev

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