Subversion Repositories eFlore/Applications.cel

Rev

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