Subversion Repositories eFlore/Applications.cel

Rev

Rev 195 | 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;
4
 
5
import com.gwtext.client.core.EventObject;
6
import com.gwtext.client.widgets.menu.BaseItem;
7
import com.gwtext.client.widgets.menu.Item;
8
import com.gwtext.client.widgets.menu.Menu;
145 aurelien 9
import com.gwtext.client.widgets.menu.MenuItem;
2 aperonnet 10
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
11
 
12
/**
13
 * Menu de gestion des images
5 aperonnet 14
 *
2 aperonnet 15
 * @author aurelien
5 aperonnet 16
 *
2 aperonnet 17
 */
18
public class MenuImageVue extends Menu {
5 aperonnet 19
 
2 aperonnet 20
	/**
21
	 * Le médiateur associé à la vue
22
	 */
5 aperonnet 23
	private ImageMediateur iMediateur;
24
 
2 aperonnet 25
	/**
26
	 * Item pour l'upload
27
	 */
145 aurelien 28
	private MenuItem uploaderImage = null;
2 aperonnet 29
	/**
30
	 * Item pour la suppression
31
	 */
5 aperonnet 32
	private Item supprimerImage = null;
2 aperonnet 33
 
34
	/**
5 aperonnet 35
	 * Item pour l'ajout d'images à la selection
2 aperonnet 36
	 */
5 aperonnet 37
	private Item ajouterImageSelection = null;
38
 
39
	/**
40
	 * Item pour vider la selection d'images
41
	 */
42
	private Item viderSelection = null;
43
 
44
	/**
45
	 * Item pour lier la selection d'images
46
	 */
47
	private Item afficherSelection = null;
145 aurelien 48
 
49
	private Item uploadMultiple = null ;
50
 
51
	private Item uploadSimple = null ;
52
 
1018 aurelien 53
	private Item gestionMotsCles = null;
54
 
145 aurelien 55
	private Menu mn = null ;
5 aperonnet 56
 
57
	/**
58
	 * Constructeur sans argument (privé car ne doit être utilisé)
59
	 */
2 aperonnet 60
	@SuppressWarnings("unused")
5 aperonnet 61
	private MenuImageVue() {
2 aperonnet 62
		super();
63
	}
5 aperonnet 64
 
2 aperonnet 65
	/**
66
	 * Constructeur avec paramètre
5 aperonnet 67
	 *
68
	 * @param im
69
	 *            le médiateur à associer
2 aperonnet 70
	 */
5 aperonnet 71
	public MenuImageVue(ImageMediateur im) {
72
		super();
73
 
74
		iMediateur = im;
145 aurelien 75
 
76
		mn = new Menu();
77
			uploadMultiple = new Item("Plusieurs dossiers ou fichiers à la fois");
78
			uploadSimple = new Item("Un fichier à la la fois");
79
 
80
		mn.addItem(uploadMultiple);
81
		mn.addItem(uploadSimple);
5 aperonnet 82
 
2 aperonnet 83
		// on construit le menu
145 aurelien 84
		uploaderImage = new MenuItem("Ajouter des images", mn);
5 aperonnet 85
		supprimerImage = new Item("Supprimer les images selectionnées");
1018 aurelien 86
		gestionMotsCles = new Item("Gérer les mots clés");
5 aperonnet 87
		ajouterImageSelection = new Item(
88
				"Ajouter les images sélectionnées au tampon");
89
		viderSelection = new Item("Vider le tampon");
90
		afficherSelection = new Item("Afficher le tampon");
2 aperonnet 91
		addItem(uploaderImage);
5 aperonnet 92
		addItem(supprimerImage);
1018 aurelien 93
		addItem(gestionMotsCles);
5 aperonnet 94
		addSeparator() ;
95
		addItem(ajouterImageSelection);
96
		addItem(viderSelection);
97
		addItem(afficherSelection);
98
 
2 aperonnet 99
		// on ajoute les listeners
5 aperonnet 100
		ajouterListeners();
2 aperonnet 101
	}
5 aperonnet 102
 
2 aperonnet 103
	/**
104
	 * Ajoute les listeners pour la gestions des évènements
105
	 */
5 aperonnet 106
	private void ajouterListeners() {
2 aperonnet 107
		this.addListener(new MenuListenerAdapter() {
108
 
109
			// gestion du clic sur un item
5 aperonnet 110
 
2 aperonnet 111
			public void onItemClick(BaseItem item, EventObject e) {
145 aurelien 112
 
2 aperonnet 113
				// si c'est la suppression
5 aperonnet 114
				if (item.equals(supprimerImage)) {
2 aperonnet 115
					// on notifie le médiateur
5 aperonnet 116
					getIMediateur().supprimerImages();
2 aperonnet 117
				}
5 aperonnet 118
 
119
				// si c'est l'ajout à la sélection
120
				if (item.equals(ajouterImageSelection)) {
121
					getIMediateur().ajouterImagesSelection();
122
				}
123
 
124
				// si c'est le vidage de la sélection
125
				if (item.equals(viderSelection)) {
126
					getIMediateur().viderSelection();
127
				}
128
 
81 jpm 129
				// si c'est l'affichage de la selection
5 aperonnet 130
				if (item.equals(afficherSelection)) {
131
					getIMediateur().afficherIdSelectionImages();
132
				}
81 jpm 133
 
1018 aurelien 134
				// si c'est l'affichage de la selection
135
				if (item.equals(gestionMotsCles)) {
136
					getIMediateur().afficherFenetreGestionMotsCles();
137
				}
138
 
2 aperonnet 139
				// enfin, on cache le menu
5 aperonnet 140
				hide();
141
 
2 aperonnet 142
			}
173 aurelien 143
 
144
			public void onShow(Menu menu) {
145
				if(getIMediateur().getCompteSelection() != 0) {
146
					afficherSelection.enable();
147
					viderSelection.enable();
148
				}
149
				else {
150
					afficherSelection.disable();
151
					viderSelection.disable();
152
				}
153
			}
5 aperonnet 154
 
155
		});
145 aurelien 156
 
157
		mn.addListener(new MenuListenerAdapter() {
158
 
159
			public void onItemClick(BaseItem item, EventObject e) {
160
 
161
				// si c'est l'upload
162
				if (item.equals(uploadMultiple)) {
163
					// on notifie le médiateur
164
					getIMediateur().uploaderImages(true);
165
				}
166
 
167
				// si c'est l'upload
168
				if (item.equals(uploadSimple)) {
169
					// on notifie le médiateur
170
					getIMediateur().uploaderImages(false);
171
				}
172
			}
173
 
174
		});
173 aurelien 175
 
2 aperonnet 176
	}
5 aperonnet 177
 
2 aperonnet 178
	/**
179
	 * Accesseur pour le médiateur
5 aperonnet 180
	 *
2 aperonnet 181
	 * @return le médiateur associé à la vue
182
	 */
5 aperonnet 183
	public ImageMediateur getIMediateur() {
184
		return iMediateur;
2 aperonnet 185
	}
186
 
187
}