Subversion Repositories eFlore/Applications.cel

Rev

Rev 723 | Rev 1292 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 723 Rev 965
1
package org.tela_botanica.client.vues.image.filtres;
1
package org.tela_botanica.client.vues.image.filtres;
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
4
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
5
import org.tela_botanica.client.vues.observation.filtres.ArbreDateObservationFiltreVue;
5
import org.tela_botanica.client.vues.observation.filtres.ArbreDateObservationFiltreVue;
6
 
6
 
7
import com.google.gwt.core.client.GWT;
7
import com.google.gwt.core.client.GWT;
8
import com.google.gwt.core.client.JavaScriptObject;
8
import com.google.gwt.core.client.JavaScriptObject;
9
import com.google.gwt.user.client.Window;
9
import com.google.gwt.user.client.Window;
10
import com.gwtext.client.core.EventObject;
10
import com.gwtext.client.core.EventObject;
11
import com.gwtext.client.core.Ext;
11
import com.gwtext.client.core.Ext;
12
import com.gwtext.client.widgets.BoxComponent;
12
import com.gwtext.client.widgets.BoxComponent;
13
import com.gwtext.client.widgets.Button;
13
import com.gwtext.client.widgets.Button;
14
import com.gwtext.client.widgets.Component;
14
import com.gwtext.client.widgets.Component;
15
import com.gwtext.client.widgets.Container;
15
import com.gwtext.client.widgets.Container;
16
import com.gwtext.client.widgets.Panel;
16
import com.gwtext.client.widgets.Panel;
17
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
17
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
18
import com.gwtext.client.widgets.event.ContainerListener;
18
import com.gwtext.client.widgets.event.ContainerListener;
19
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
19
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
20
import com.gwtext.client.widgets.layout.RowLayout;
20
import com.gwtext.client.widgets.layout.RowLayout;
21
import com.gwtext.client.widgets.layout.RowLayoutData;
21
import com.gwtext.client.widgets.layout.RowLayoutData;
22
import com.gwtext.client.widgets.layout.VerticalLayout;
22
import com.gwtext.client.widgets.layout.VerticalLayout;
23
 
23
 
24
/**
24
/**
25
 * Panneau contenant les filtres qu'on peut appliquer aux images
25
 * Panneau contenant les filtres qu'on peut appliquer aux images
26
 * 
26
 * 
27
 * @author aurelien
27
 * @author aurelien
28
 * 
28
 * 
29
 */
29
 */
30
public class PanneauFiltresImagesVues extends Panel {
30
public class PanneauFiltresImagesVues extends Panel {
31
 
31
 
32
	/**
32
	/**
33
	 * Le médiateur associé
33
	 * Le médiateur associé
34
	 */
34
	 */
35
	private ImageMediateur iMediateur = null;
35
	private ImageMediateur iMediateur = null;
36
 
36
 
37
	/**
37
	/**
38
	 * L'arbre pour la recherche par mots clés
38
	 * L'arbre pour la recherche par mots clés
39
	 */
39
	 */
40
	private ArbreMotsClesFiltreVue motsClesFiltres = null;
40
	private ArbreMotsClesFiltreVue motsClesFiltres = null;
41
	
41
	
42
	/**
42
	/**
43
	 * L'arbre pour la recherche par mots clés
43
	 * L'arbre pour la recherche par mots clés
44
	 */
44
	 */
45
	private ArbreDateImageFiltreVue arbreDateImageFiltreVue = null;
45
	private ArbreDateImageFiltreVue arbreDateImageFiltreVue = null;
46
	
46
	
47
	/**
47
	/**
48
	 * La barre de recherche par commentaires
48
	 * La barre de recherche libre
49
	 */
49
	 */
50
	private BarreRechercheFiltreVue rechercheLibreFiltreVue = null;
50
	private BarreRechercheFiltreVue rechercheLibreFiltreVue = null;
51
 
51
 
52
	/**
52
	/**
53
	 * Recherche par date
-
 
54
	 */
-
 
55
	private DateFiltreVue dateFiltreVues = null;
-
 
56
 
-
 
57
	/**
-
 
58
	 * Recherche par contenu du tampon
53
	 * Recherche par contenu du tampon
59
	 */
54
	 */
60
	private SelectionFiltreVue selectionFiltreVue = null;
55
	private SelectionFiltreVue selectionFiltreVue = null;
61
 
56
 
62
	/**
57
	/**
63
	 * Bouton de validation
58
	 * Bouton de validation
64
	 */
59
	 */
65
	private Button valider = null;
60
	private Button valider = null;
66
 
61
 
67
	/**
62
	/**
68
	 * Construcuteur sans argument (privé car on ne doit pas l'utiliser)
63
	 * Construcuteur sans argument (privé car on ne doit pas l'utiliser)
69
	 */
64
	 */
70
	@SuppressWarnings("unused")
65
	@SuppressWarnings("unused")
71
	private PanneauFiltresImagesVues() {
66
	private PanneauFiltresImagesVues() {
72
		super();
67
		super();
73
	}
68
	}
74
 
69
 
75
	/**
70
	/**
76
	 * Constructeur avec arguments
71
	 * Constructeur avec arguments
77
	 * 
72
	 * 
78
	 * @param im
73
	 * @param im
79
	 *            le médiateur à associer
74
	 *            le médiateur à associer
80
	 */
75
	 */
81
	public PanneauFiltresImagesVues(ImageMediateur im) {
76
	public PanneauFiltresImagesVues(ImageMediateur im) {
82
		
77
		
83
		super("Filtres");
78
		super("Filtres");
84
		iMediateur = im;
79
		iMediateur = im;
85
		
80
		
86
		this.setCollapsible(true);
81
		this.setCollapsible(true);
87
		setLayout(new RowLayout());
82
		setLayout(new RowLayout());
88
 
83
 
89
		rechercheLibreFiltreVue = new BarreRechercheFiltreVue(im);
84
		rechercheLibreFiltreVue = new BarreRechercheFiltreVue(im);
90
		rechercheLibreFiltreVue.setTitle("Recherche libre");
85
		rechercheLibreFiltreVue.setTitle("Recherche libre");
91
		rechercheLibreFiltreVue.setCollapsible(true);
86
		rechercheLibreFiltreVue.setCollapsible(true);
92
		add(rechercheLibreFiltreVue, new RowLayoutData());
87
		add(rechercheLibreFiltreVue, new RowLayoutData());
93
		
88
		
94
		if(Ext.isIE()) {
89
		if(Ext.isIE()) {
95
			add(rechercheLibreFiltreVue);
90
			add(rechercheLibreFiltreVue);
96
			rechercheLibreFiltreVue.setHeight(110);
91
			rechercheLibreFiltreVue.setHeight(110);
97
		} else {
92
		} else {
98
			add(rechercheLibreFiltreVue,new RowLayoutData(100));
93
			add(rechercheLibreFiltreVue,new RowLayoutData(100));
99
		}
94
		}
100
 
95
 
101
		arbreDateImageFiltreVue = new ArbreDateImageFiltreVue(im) ;
96
		arbreDateImageFiltreVue = new ArbreDateImageFiltreVue(im) ;
102
		arbreDateImageFiltreVue.setWidth("100%") ;
97
		arbreDateImageFiltreVue.setWidth("100%") ;
103
		arbreDateImageFiltreVue.setBorder(false);
98
		arbreDateImageFiltreVue.setBorder(false);
104
		add(arbreDateImageFiltreVue, new RowLayoutData());
99
		add(arbreDateImageFiltreVue, new RowLayoutData());
105
 
100
 
106
		motsClesFiltres = new ArbreMotsClesFiltreVue(im);
101
		motsClesFiltres = new ArbreMotsClesFiltreVue(im);
107
		motsClesFiltres.setTitle("Mots clés");
102
		motsClesFiltres.setTitle("Mots clés");
108
		motsClesFiltres.setAutoScroll(true);
103
		motsClesFiltres.setAutoScroll(true);
109
		add(motsClesFiltres, new RowLayoutData());
104
		add(motsClesFiltres, new RowLayoutData());
110
 
105
 
111
		selectionFiltreVue = new SelectionFiltreVue(im);
106
		selectionFiltreVue = new SelectionFiltreVue(im);
112
		
107
		
113
		addListener(new ContainerListenerAdapter() {
108
		addListener(new ContainerListenerAdapter() {
114
 
109
 
115
			public void onRender(Component component) {
110
			public void onRender(Component component) {
116
				// TODO Auto-generated method stub
111
				// TODO Auto-generated method stub
117
 
112
 
118
				rechercheLibreFiltreVue.ajouterListeners();
113
				rechercheLibreFiltreVue.ajouterListeners();
119
				arbreDateImageFiltreVue.ajouterListeners();
114
				arbreDateImageFiltreVue.ajouterListeners();
120
			}
115
			}
121
		});
116
		});
122
	}
117
	}
123
 
118
 
124
	/**
119
	/**
125
	 * Accesseur pour le filtre des mots clés
120
	 * Accesseur pour le filtre des mots clés
126
	 * 
121
	 * 
127
	 * @return le filtre des mots clés
122
	 * @return le filtre des mots clés
128
	 */
123
	 */
129
	public ArbreMotsClesFiltreVue getMotsClesFiltre() {
124
	public ArbreMotsClesFiltreVue getMotsClesFiltre() {
130
		return motsClesFiltres;
125
		return motsClesFiltres;
131
	}
126
	}
132
 
127
 
133
	/**
128
	/**
134
	 * Accesseur pour le filtre général
129
	 * Accesseur pour le filtre général
135
	 * 
130
	 * 
136
	 * @return le filtre général
131
	 * @return le filtre général
137
	 */
132
	 */
138
	public BarreRechercheFiltreVue getBarreRecherche() {
133
	public BarreRechercheFiltreVue getBarreRecherche() {
139
		return rechercheLibreFiltreVue;
134
		return rechercheLibreFiltreVue;
140
	}
135
	}
141
	
136
	
142
	/**
137
	/**
143
	 * Accesseur pour le filtre des dates
138
	 * Accesseur pour le filtre des dates
144
	 * 
139
	 * 
145
	 * @return le filtre des dates
140
	 * @return le filtre des dates
146
	 */
141
	 */
147
	public ArbreDateImageFiltreVue getArbreDateRecherche() {
142
	public ArbreDateImageFiltreVue getArbreDateRecherche() {
148
		return arbreDateImageFiltreVue;
143
		return arbreDateImageFiltreVue;
149
	}
144
	}
150
 
145
 
151
	/**
146
	/**
152
	 * Renvoie un booléen indiquant si un des filtres a été modifié
147
	 * Renvoie un booléen indiquant si un des filtres a été modifié
153
	 * 
148
	 * 
154
	 * @return true sur un des filtres est modifié, false sinon
149
	 * @return true sur un des filtres est modifié, false sinon
155
	 */
150
	 */
156
	public boolean renvoyerEtatFiltre() {
151
	public boolean renvoyerEtatFiltre() {
157
 
152
 
158
		return (motsClesFiltres.renvoyerEtatFiltre()
153
		return (motsClesFiltres.renvoyerEtatFiltre()
159
				|| rechercheLibreFiltreVue.renvoyerEtatFiltre()
154
				|| rechercheLibreFiltreVue.renvoyerEtatFiltre()
160
				|| arbreDateImageFiltreVue.renvoyerEtatFiltre() 
155
				|| arbreDateImageFiltreVue.renvoyerEtatFiltre() 
161
				|| selectionFiltreVue.renvoyerEtatFiltre());
156
				|| selectionFiltreVue.renvoyerEtatFiltre());
162
	}
157
	}
163
 
158
 
164
	/**
159
	/**
165
	 * Renvoie un tableau à 2 niveaux contenant des paires "nom_de_filtre",
160
	 * Renvoie un tableau à 2 niveaux contenant des paires "nom_de_filtre",
166
	 * "valeur"
161
	 * "valeur"
167
	 * 
162
	 * 
168
	 * @return un tableau contenant les noms et les valeurs à filtrer
163
	 * @return un tableau contenant les noms et les valeurs à filtrer
169
	 */
164
	 */
170
	public String[][] renvoyerValeursAFiltrer() {
165
	public String[][] renvoyerValeursAFiltrer() {
171
		
166
		
172
		String[] filtresDates = arbreDateImageFiltreVue.renvoyerValeursAFiltrer();
167
		String[] filtresDates = arbreDateImageFiltreVue.renvoyerValeursAFiltrer();
173
		
168
		
174
		int lgSup = 0;
169
		int lgSup = 0;
175
		
170
		
176
		if(filtresDates.length > 0) {
171
		if(filtresDates.length > 0) {
177
			String[] nomFiltresDates = filtresDates[0].split(",");
172
			String[] nomFiltresDates = filtresDates[0].split(",");
178
			String[] valFiltresDates = filtresDates[1].split(",");
173
			String[] valFiltresDates = filtresDates[1].split(",");
179
			lgSup = Math.max(nomFiltresDates.length, valFiltresDates.length);
174
			lgSup = Math.max(nomFiltresDates.length, valFiltresDates.length);
180
		}
175
		}
181
		
176
		
182
		String[][] filtres = new String[3 + lgSup][2];
177
		String[][] filtres = new String[3 + lgSup][2];
183
		
178
		
184
		for(int i=3; i < filtres.length; i++) {
179
		for(int i=3; i < filtres.length; i++) {
185
			filtres[i][0] = filtresDates[0].split(",")[i - 3];
180
			filtres[i][0] = filtresDates[0].split(",")[i - 3];
186
			filtres[i][1] = filtresDates[1].split(",")[i -3];
181
			filtres[i][1] = filtresDates[1].split(",")[i -3];
187
		}
182
		}
188
		
183
		
189
		filtres[0] = motsClesFiltres.renvoyerValeursAFiltrer();
184
		filtres[0] = motsClesFiltres.renvoyerValeursAFiltrer();
190
		filtres[1] = rechercheLibreFiltreVue.renvoyerValeursAFiltrer();
185
		filtres[1] = rechercheLibreFiltreVue.renvoyerValeursAFiltrer();
191
		filtres[2] = selectionFiltreVue.renvoyerValeursAFiltrer();
186
		filtres[2] = selectionFiltreVue.renvoyerValeursAFiltrer();
192
		
187
		
193
		return filtres;
188
		return filtres;
194
	}
189
	}
195
 
190
 
196
	public void viderFiltres() {
191
	public void viderFiltres() {
197
		motsClesFiltres.viderFiltre();
192
		motsClesFiltres.viderFiltre();
198
		rechercheLibreFiltreVue.viderFiltre();
193
		rechercheLibreFiltreVue.viderFiltre();
199
		arbreDateImageFiltreVue.viderFiltre();
194
		arbreDateImageFiltreVue.viderFiltre();
200
		selectionFiltreVue.viderFiltre();
195
		selectionFiltreVue.viderFiltre();
201
	}
196
	}
202
 
197
 
203
	public void viderFiltre(String nom) {
198
	public void viderFiltre(String nom) {
204
		
199
		
205
		if(nom.equals("ci_meta_mots_cles")) {
200
		if(nom.equals("id_mots_cles")) {
206
			motsClesFiltres.viderFiltre();
201
			motsClesFiltres.viderFiltre();
207
		}
202
		}
208
		
203
		
209
		if(nom.equals("ci_recherche_generale")) {
204
		if(nom.equals("recherche")) {
210
			rechercheLibreFiltreVue.viderFiltre();
205
			rechercheLibreFiltreVue.viderFiltre();
211
		}
206
		}
212
		
207
		
213
		if(nom.equals("annee") || nom.equals("mois") || nom.equals("jour")) {
208
		if(nom.equals("annee") || nom.equals("mois") || nom.equals("jour")) {
214
			arbreDateImageFiltreVue.viderFiltre(nom);
209
			arbreDateImageFiltreVue.viderFiltre(nom);
215
		}
210
		}
216
		
211
		
217
		if(nom.equals("ci_id_tampon")) {
212
		if(nom.equals("ci_id_tampon")) {
218
			selectionFiltreVue.viderFiltre();
213
			selectionFiltreVue.viderFiltre();
219
		}
214
		}
220
		
215
		
221
	}
216
	}
222
 
217
 
223
}
218
}