Subversion Repositories eFlore/Applications.cel

Rev

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