Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

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