Subversion Repositories eFlore/Applications.cel

Rev

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