Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | 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;
5
 
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
 
1018 aurelien 54
	private Item gestionMotsCles = null;
55
 
145 aurelien 56
	private Menu mn = null ;
5 aperonnet 57
 
58
	/**
59
	 * Constructeur sans argument (privé car ne doit être utilisé)
60
	 */
2 aperonnet 61
	@SuppressWarnings("unused")
5 aperonnet 62
	private MenuImageVue() {
2 aperonnet 63
		super();
64
	}
5 aperonnet 65
 
2 aperonnet 66
	/**
67
	 * Constructeur avec paramètre
5 aperonnet 68
	 *
69
	 * @param im
70
	 *            le médiateur à associer
2 aperonnet 71
	 */
5 aperonnet 72
	public MenuImageVue(ImageMediateur im) {
73
		super();
74
 
75
		iMediateur = im;
145 aurelien 76
 
77
		mn = new Menu();
2615 aurelien 78
			uploadMultiple = new Item(Msg.get("plusieurs-fichiers-images-fois"));
79
			uploadSimple = new Item(Msg.get("un-fichier-image-fois"));
145 aurelien 80
 
81
		mn.addItem(uploadMultiple);
82
		mn.addItem(uploadSimple);
5 aperonnet 83
 
2 aperonnet 84
		// on construit le menu
2615 aurelien 85
		uploaderImage = new MenuItem(Msg.get("ajouter-images"), mn);
86
		supprimerImage = new Item(Msg.get("indication-supprimer-images"));
87
		gestionMotsCles = new Item(Msg.get("gerer-mots-cles"));
88
		ajouterImageSelection = new Item(Msg.get("ajouter-images-tampon"));
89
		viderSelection = new Item(Msg.get("vider-tampon"));
90
		afficherSelection = new Item(Msg.get("afficher-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
 
1292 aurelien 111
			@Override
2 aperonnet 112
			public void onItemClick(BaseItem item, EventObject e) {
145 aurelien 113
 
2 aperonnet 114
				// si c'est la suppression
5 aperonnet 115
				if (item.equals(supprimerImage)) {
2 aperonnet 116
					// on notifie le médiateur
5 aperonnet 117
					getIMediateur().supprimerImages();
2 aperonnet 118
				}
5 aperonnet 119
 
120
				// si c'est l'ajout à la sélection
121
				if (item.equals(ajouterImageSelection)) {
122
					getIMediateur().ajouterImagesSelection();
123
				}
124
 
125
				// si c'est le vidage de la sélection
126
				if (item.equals(viderSelection)) {
127
					getIMediateur().viderSelection();
128
				}
129
 
81 jpm 130
				// si c'est l'affichage de la selection
5 aperonnet 131
				if (item.equals(afficherSelection)) {
132
					getIMediateur().afficherIdSelectionImages();
133
				}
81 jpm 134
 
1018 aurelien 135
				// si c'est l'affichage de la selection
136
				if (item.equals(gestionMotsCles)) {
137
					getIMediateur().afficherFenetreGestionMotsCles();
138
				}
139
 
2 aperonnet 140
				// enfin, on cache le menu
5 aperonnet 141
				hide();
142
 
2 aperonnet 143
			}
173 aurelien 144
 
1292 aurelien 145
			@Override
173 aurelien 146
			public void onShow(Menu menu) {
147
				if(getIMediateur().getCompteSelection() != 0) {
148
					afficherSelection.enable();
149
					viderSelection.enable();
150
				}
151
				else {
152
					afficherSelection.disable();
153
					viderSelection.disable();
154
				}
155
			}
5 aperonnet 156
 
157
		});
145 aurelien 158
 
159
		mn.addListener(new MenuListenerAdapter() {
160
 
1292 aurelien 161
			@Override
145 aurelien 162
			public void onItemClick(BaseItem item, EventObject e) {
163
 
164
				// si c'est l'upload
165
				if (item.equals(uploadMultiple)) {
166
					// on notifie le médiateur
167
					getIMediateur().uploaderImages(true);
168
				}
169
 
170
				// si c'est l'upload
171
				if (item.equals(uploadSimple)) {
172
					// on notifie le médiateur
173
					getIMediateur().uploaderImages(false);
174
				}
175
			}
176
 
177
		});
173 aurelien 178
 
2 aperonnet 179
	}
5 aperonnet 180
 
2 aperonnet 181
	/**
182
	 * Accesseur pour le médiateur
5 aperonnet 183
	 *
2 aperonnet 184
	 * @return le médiateur associé à la vue
185
	 */
5 aperonnet 186
	public ImageMediateur getIMediateur() {
187
		return iMediateur;
2 aperonnet 188
	}
189
 
190
}