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