Subversion Repositories eFlore/Applications.cel

Rev

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

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