Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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