Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
195 david 1
package org.tela_botanica.client.vues.image;
2 aperonnet 2
 
3
import org.tela_botanica.client.image.ImageMediateur;
720 aurelien 4
import org.tela_botanica.client.util.Util;
195 david 5
import org.tela_botanica.client.vues.MenuAideVue;
2 aperonnet 6
 
799 aurelien 7
import com.google.gwt.core.client.JavaScriptObject;
684 aurelien 8
import com.google.gwt.dev.util.collect.HashMap;
9
import com.google.gwt.user.client.Window;
10
import com.gwtext.client.core.EventCallback;
11
import com.gwtext.client.core.EventObject;
12
import com.gwtext.client.core.Ext;
799 aurelien 13
import com.gwtext.client.widgets.Button;
14
import com.gwtext.client.widgets.Component;
15
import com.gwtext.client.widgets.SplitButton;
2 aperonnet 16
import com.gwtext.client.widgets.Toolbar;
706 aurelien 17
import com.gwtext.client.widgets.ToolbarButton;
684 aurelien 18
import com.gwtext.client.widgets.ToolbarItem;
2 aperonnet 19
import com.gwtext.client.widgets.ToolbarMenuButton;
684 aurelien 20
import com.gwtext.client.widgets.ToolbarTextItem;
799 aurelien 21
import com.gwtext.client.widgets.event.SplitButtonListener;
22
import com.gwtext.client.widgets.event.SplitButtonListenerAdapter;
23
import com.gwtext.client.widgets.menu.Menu;
2 aperonnet 24
 
25
/**
5 aperonnet 26
 * Barre d'outils contenant le menu de gestion des images (accessible aussi par
27
 * un clic droit dans la galerie) et d'autres menus et boutons utiles
28
 *
2 aperonnet 29
 * @author aurelien
5 aperonnet 30
 *
2 aperonnet 31
 */
32
public class BarreOutilsVue extends Toolbar {
5 aperonnet 33
 
2 aperonnet 34
	/**
35
	 * Un bouton qui sert à déployer le menu
36
	 */
5 aperonnet 37
	ToolbarMenuButton images = null;
2 aperonnet 38
	/**
39
	 * Un bouton qui sert à déployer le menu
40
	 */
5 aperonnet 41
	ToolbarMenuButton utilisateur = null;
81 jpm 42
 
43
	/**
44
	 * Bouton pour déployer le menu d'aide
45
	 */
46
	ToolbarMenuButton aide = null ;
5 aperonnet 47
 
2 aperonnet 48
	/**
49
	 * Le médiateur associé à la toolbar
50
	 */
5 aperonnet 51
	ImageMediateur iMediateur = null;
2 aperonnet 52
	/**
53
	 * Le menu de gestion des images
54
	 */
5 aperonnet 55
	MenuImageVue imageMenu = null;
56
 
2 aperonnet 57
	/**
58
	 * Le menu de gestion des filtres
59
	 */
706 aurelien 60
	OptionsImages imageMenuEtendu = null;
684 aurelien 61
 
62
	/**
63
	 * L'item affichant les filtres en cours
64
	 */
65
	ToolbarTextItem texteFiltres;
5 aperonnet 66
 
2 aperonnet 67
	/**
68
	 * Le menu de gestion utilisateur
69
	 */
5 aperonnet 70
	MenuIdVue idMenu = null;
81 jpm 71
 
72
	/**
73
	 * Menu de gestion d'aide
74
	 */
75
	MenuAideVue aideMenu = null ;
2 aperonnet 76
 
77
	/**
78
	 * Constructeur sans argument (ne doit pas être utilisé donc privé)
79
	 */
80
	@SuppressWarnings("unused")
5 aperonnet 81
	private BarreOutilsVue() {
82
		super();
2 aperonnet 83
	}
5 aperonnet 84
 
2 aperonnet 85
	/**
86
	 * Constructeur avec paramètres
5 aperonnet 87
	 *
88
	 * @param im
89
	 *            le médiateur à associer à la vue
2 aperonnet 90
	 */
91
	public BarreOutilsVue(ImageMediateur im) {
5 aperonnet 92
 
93
		super();
94
 
95
		iMediateur = im;
96
 
97
		imageMenu = new MenuImageVue(im);
706 aurelien 98
		imageMenuEtendu = new OptionsImages(im);
140 aurelien 99
		//aideMenu = new MenuAideVue(im);
706 aurelien 100
		//images = new ToolbarMenuButton("Fichiers", imageMenu);
140 aurelien 101
		//aide = new ToolbarMenuButton("Aide", aideMenu);
684 aurelien 102
 
103
		texteFiltres = new ToolbarTextItem("");
104
 
799 aurelien 105
		final ToolbarMenuButton menuImage = new ToolbarMenuButton("Ajouter des images", imageMenuEtendu.getMenuImage());
106
		menuImage.addListener(new SplitButtonListenerAdapter() {
107
 
108
			@Override
109
			public void onArrowClick(SplitButton menuButton, EventObject e) {
110
				menuImage.showMenu();
111
			}
112
 
113
			@Override
114
			public void onClick(Button button, EventObject e) {
115
				menuImage.showMenu();
116
			}
117
		});
118
 
706 aurelien 119
		ToolbarButton menuSuppression = imageMenuEtendu.getBoutonSuppression();
799 aurelien 120
		final ToolbarMenuButton menuTampon = new ToolbarMenuButton("Tampon", imageMenuEtendu.getMenuTampon());
121
		menuTampon.addListener(new SplitButtonListenerAdapter() {
122
 
123
			@Override
124
			public void onArrowClick(SplitButton menuButton, EventObject e) {
125
				menuTampon.showMenu();
126
			}
127
 
128
			@Override
129
			public void onClick(Button button, EventObject e) {
130
				menuTampon.showMenu();
131
			}
132
		});
684 aurelien 133
 
706 aurelien 134
		this.addButton(menuImage);
135
		this.addButton(menuSuppression);
136
		this.addButton(menuTampon);
137
 
684 aurelien 138
		this.addItem(texteFiltres);
140 aurelien 139
		//this.addButton(aide);
2 aperonnet 140
	}
141
 
142
	/**
143
	 * @return the images
144
	 */
145
	public ToolbarMenuButton getImages() {
146
		return images;
147
	}
148
 
149
	/**
150
	 * @return the iMediateur
151
	 */
152
	public ImageMediateur getIMediateur() {
153
		return iMediateur;
154
	}
684 aurelien 155
 
156
	public void setFiltresEnCours(String[][] filtresEnCours) {
157
 
158
		String texteFiltresEnCours = "";
159
 
160
		for(int i = 0; i < filtresEnCours.length; i++) {
161
			if(Util.filtreValide(filtresEnCours[i])) {
162
 
163
				if(!texteFiltresEnCours.equals("")) {
164
					texteFiltresEnCours += " - ";
165
				}
166
 
167
				texteFiltresEnCours += "<span class=\"affichage_filtre\">"+
168
											transformerNomFiltre(filtresEnCours[i][0])+": "+transformerValeurFiltre(filtresEnCours[i][0], filtresEnCours[i][1])+
169
									   " <input value=\"X\" type=\"button\" rel=\""+filtresEnCours[i][0]+"\" id=\"bouton_raz_filtres_img"+filtresEnCours[i][0]+"\" />"+
170
										"</span>";
171
			}
172
		}
173
 
174
		if(!texteFiltresEnCours.equals("")) {
175
			texteFiltresEnCours = "- <span class=\"indicateur_filtres\"> Filtres - "+texteFiltresEnCours+"</span>";
176
		}
177
 
178
		texteFiltres.setText(texteFiltresEnCours);
179
 
180
		for(int i = 0; i < filtresEnCours.length; i++) {
181
 
182
			if(Util.filtreValide(filtresEnCours[i])) {
183
				if(Ext.get("bouton_raz_filtres_img"+filtresEnCours[i][0]) != null) {
184
 
185
					Ext.get("bouton_raz_filtres_img"+filtresEnCours[i][0]).addListener("click", new EventCallback() {
186
 
187
						public void execute(EventObject e) {
188
							e.stopEvent();
189
							iMediateur.viderFiltre(e.getTarget().getAttribute("rel"));
190
						}
191
 
192
					});
193
				}
194
			}
195
		}
196
	}
197
 
198
	private String transformerNomFiltre(String nomFiltre) {
199
 
200
		//TODO: si le nombre de filtre s'agrandit faire une hashmap
201
		// (pas la peine pour le moment, un seul nom à changer)
202
		if(nomFiltre.equals("ci_recherche_generale")) {
203
			nomFiltre = "recherche";
204
		}
205
 
206
		//TODO: si le nombre de filtre s'agrandit faire une hashmap
207
		// (pas la peine pour le moment, un seul nom à changer)
208
		if(nomFiltre.equals("ci_meta_mots_cles")) {
209
			nomFiltre = "mots clés";
210
		}
211
 
212
		return nomFiltre;
213
 
214
	}
215
 
216
	private String transformerValeurFiltre(String nomFiltre, String valeurFiltre) {
217
 
218
		String valeurFiltreTransformee = valeurFiltre;
219
 
220
		if(nomFiltre.equals("ci_meta_mots_cles")) {
221
 
222
			String[] tabMotsCles = valeurFiltre.split(";");
223
			String[] tabMotsClesTexte = iMediateur.obtenirTexteMotsCles(tabMotsCles);
224
 
225
			if(tabMotsClesTexte.length > 1) {
226
				valeurFiltreTransformee = Util.implode(",", tabMotsClesTexte);
227
			} else {
228
				valeurFiltreTransformee = tabMotsClesTexte[0];
229
			}
230
		}
231
 
232
		if(nomFiltre.equals("mois")) {
233
			valeurFiltreTransformee = Util.renvoyerMois(Integer.parseInt(valeurFiltre));
234
		}
2 aperonnet 235
 
684 aurelien 236
		return valeurFiltreTransformee;
237
 
238
	}
239
 
2 aperonnet 240
}