Subversion Repositories eFlore/Applications.cel

Rev

Rev 173 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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