Subversion Repositories eFlore/Applications.cel

Rev

Rev 195 | Rev 401 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 195 Rev 208
1
package org.tela_botanica.client.vues.image;
1
package org.tela_botanica.client.vues.image;
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.ListePaginable;
4
import org.tela_botanica.client.interfaces.ListePaginable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.VueListable;
6
import org.tela_botanica.client.interfaces.VueListable;
7
import org.tela_botanica.client.vues.BarrePaginationVue;
7
import org.tela_botanica.client.vues.BarrePaginationVue;
8
 
8
 
9
import com.google.gwt.user.client.Element;
9
import com.google.gwt.user.client.Element;
10
import com.google.gwt.user.client.ui.HTML;
10
import com.google.gwt.user.client.ui.HTML;
11
import com.gwtext.client.core.EventCallback;
11
import com.gwtext.client.core.EventCallback;
12
import com.gwtext.client.core.EventObject;
12
import com.gwtext.client.core.EventObject;
13
import com.gwtext.client.core.Ext;
13
import com.gwtext.client.core.Ext;
14
import com.gwtext.client.core.ExtElement;
14
import com.gwtext.client.core.ExtElement;
15
import com.gwtext.client.core.XTemplate;
15
import com.gwtext.client.core.XTemplate;
16
import com.gwtext.client.data.FieldDef;
16
import com.gwtext.client.data.FieldDef;
17
import com.gwtext.client.data.IntegerFieldDef;
17
import com.gwtext.client.data.IntegerFieldDef;
18
import com.gwtext.client.data.Record;
18
import com.gwtext.client.data.Record;
19
import com.gwtext.client.data.RecordDef;
19
import com.gwtext.client.data.RecordDef;
20
import com.gwtext.client.data.Store;
20
import com.gwtext.client.data.Store;
21
import com.gwtext.client.data.StringFieldDef;
21
import com.gwtext.client.data.StringFieldDef;
22
import com.gwtext.client.dd.DragData;
22
import com.gwtext.client.dd.DragData;
23
import com.gwtext.client.dd.DragSource;
23
import com.gwtext.client.dd.DragSource;
24
import com.gwtext.client.dd.DropTarget;
24
import com.gwtext.client.dd.DropTarget;
25
import com.gwtext.client.dd.DropTargetConfig;
25
import com.gwtext.client.dd.DropTargetConfig;
26
import com.gwtext.client.util.Format;
26
import com.gwtext.client.util.Format;
27
import com.gwtext.client.widgets.Component;
27
import com.gwtext.client.widgets.Component;
28
import com.gwtext.client.widgets.Container;
28
import com.gwtext.client.widgets.Container;
29
import com.gwtext.client.widgets.DataView;
29
import com.gwtext.client.widgets.DataView;
30
import com.gwtext.client.widgets.Panel;
30
import com.gwtext.client.widgets.Panel;
31
import com.gwtext.client.widgets.event.ContainerListener;
31
import com.gwtext.client.widgets.event.ContainerListener;
32
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
32
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
-
 
33
import com.gwtext.client.widgets.event.DataViewListener;
33
import com.gwtext.client.widgets.event.DataViewListenerAdapter;
34
import com.gwtext.client.widgets.event.DataViewListenerAdapter;
34
import com.gwtext.client.widgets.event.PanelListenerAdapter;
35
import com.gwtext.client.widgets.event.PanelListenerAdapter;
35
import com.gwtext.client.widgets.grid.GridDragData;
36
import com.gwtext.client.widgets.grid.GridDragData;
36
 
37
 
37
/**
38
/**
38
 * Galerie d'images miniatures Avec barre de pagination
39
 * Galerie d'images miniatures Avec barre de pagination
39
 * 
40
 * 
40
 * @author aurelien
41
 * @author aurelien
41
 */
42
 */
42
public class GalerieImageVue extends Panel implements Rafraichissable,
43
public class GalerieImageVue extends Panel implements Rafraichissable,
43
		VueListable, ListePaginable {
44
		VueListable, ListePaginable {
44
 
45
 
45
	/**
46
	/**
46
	 * instance du médiateur
47
	 * instance du médiateur
47
	 */
48
	 */
48
	private ImageMediateur iMediateur = null;
49
	private ImageMediateur iMediateur = null;
49
	/**
50
	/**
50
	 * Dataview, littéralement "vue de données" qui permet de définir la manière
51
	 * Dataview, littéralement "vue de données" qui permet de définir la manière
51
	 * d'afficher les données
52
	 * d'afficher les données
52
	 */
53
	 */
53
	private DataView dView = null;
54
	private DataView dView = null;
54
	/**
55
	/**
55
	 * Dataview, littéralement "vue de données" qui permet de définir la manière
56
	 * Dataview, littéralement "vue de données" qui permet de définir la manière
56
	 * d'afficher les données
57
	 * d'afficher les données
57
	 */
58
	 */
58
	private Store st = null;
59
	private Store st = null;
59
	/**
60
	/**
60
	 * Barre de pagination gérant l'affichage d'un nombre donné d'élements par
61
	 * Barre de pagination gérant l'affichage d'un nombre donné d'élements par
61
	 * page et la navigation entre eux
62
	 * page et la navigation entre eux
62
	 */
63
	 */
63
	private BarrePaginationVue pt = null;
64
	private BarrePaginationVue pt = null;
64
	/**
65
	/**
65
	 * Booleen indiquant si la galerie est instanciée ou pas
66
	 * Booleen indiquant si la galerie est instanciée ou pas
66
	 */
67
	 */
67
	private boolean estInstancie = false;
68
	private boolean estInstancie = false;
68
	
69
	
69
	private boolean garderRatio = false;
70
	private boolean garderRatio = true;
70
	
71
	
71
	private int tailleOr = 100 ;
72
	private int tailleOr = 100 ;
72
	
73
	
73
	boolean lienUploadInitialise = false ;
74
	boolean lienUploadInitialise = false ;
74
	
75
	
75
	HTML videPanel = null ;
76
	HTML videPanel = null ;
76
 
77
 
77
 
78
 
78
	/**
79
	/**
79
	 * Constructeur sans argument, privé car ne doit pas être utilisé
80
	 * Constructeur sans argument, privé car ne doit pas être utilisé
80
	 */
81
	 */
81
	@SuppressWarnings("unused")
82
	@SuppressWarnings("unused")
82
	private GalerieImageVue() {
83
	private GalerieImageVue() {
83
		super();
84
		super();
84
	}
85
	}
85
 
86
 
86
	/**
87
	/**
87
	 * Constructeur avec argument
88
	 * Constructeur avec argument
88
	 * 
89
	 * 
89
	 * @param im
90
	 * @param im
90
	 *            le médiateur avec lequel la vue va communiquer
91
	 *            le médiateur avec lequel la vue va communiquer
91
	 */
92
	 */
92
	public GalerieImageVue(ImageMediateur im) {
93
	public GalerieImageVue(ImageMediateur im) {
93
		super("Galerie");
94
		super("Galerie");
94
		iMediateur = im;
95
		iMediateur = im;
95
		
96
		
96
		// on ajoute des listeners au composant tout entier
97
		// on ajoute des listeners au composant tout entier
97
		this.addListener(new ContainerListenerAdapter() {
98
		this.addListener(new ContainerListenerAdapter() {
98
 
99
 
99
			// pour gagner du temps on n'instancie la vue en elle même que lors
100
			// pour gagner du temps on n'instancie la vue en elle même que lors
100
			// du premier affichage (lazy rendering)
101
			// du premier affichage (lazy rendering)
101
 
102
 
102
			public void onShow(Component component) {
103
			public void onShow(Component component) {
103
 
104
 
104
				if (!estInstancie) {
105
				if (!estInstancie) {
105
					initialiser();
106
					initialiser();
106
				}
107
				}
107
				
108
				
108
			}
109
			}
109
		});
110
		});
110
		
111
		
111
		AjouterListenersLiens();
112
		AjouterListenersLiens();
112
 
113
 
113
		// et on ajoute la tool bar
114
		// et on ajoute la tool bar
114
		pt = new BarrePaginationVue(this);
115
		pt = new BarrePaginationVue(this);
115
		pt.setLabelElement("Images");
116
		pt.setLabelElement("Images");
116
		pt.setTaillePageParDefaut(50);
117
		pt.setTaillePageParDefaut(50);
117
		this.setBottomToolbar(pt);
118
		this.setBottomToolbar(pt);
118
 
119
 
119
	}
120
	}
120
 
121
 
121
	/**
122
	/**
122
	 * Ajoute tous les listeners nécessaires à l'intercation utilisateur avec la
123
	 * Ajoute tous les listeners nécessaires à l'intercation utilisateur avec la
123
	 * vue de données
124
	 * vue de données
124
	 */
125
	 */
125
	public void ajouterListenersDataView() {
126
	public void ajouterListenersDataView() {
126
 
127
 
127
		// ajout de listeners pour la gestion de la selection
128
		// ajout de listeners pour la gestion de la selection
128
		// dans la galerie
129
		// dans la galerie
129
		
130
		
130
		dView.addListener(new DataViewListenerAdapter() {
131
		dView.addListener(new DataViewListenerAdapter() {
131
 
132
 
132
			// gestion du clic sur une image
133
			// gestion du clic sur une image
133
 
134
 
134
			public void onClick(DataView source, int index, Element node,
135
			public void onClick(DataView source, int index, Element node,
135
					EventObject e) {
136
					EventObject e) {
136
				
137
				
137
				// on en notifie le médiateur
138
				// on en notifie le médiateur
138
				getIMediateur().clicGalerieImage(index, node, e);
139
				getIMediateur().clicGalerieImage(index, node, e);
139
 
140
 
140
			}
141
			}
141
 
142
 
142
			// gestion du clic droit
143
			// gestion du clic droit
143
 
144
 
144
			public void onContextMenu(DataView source, int index, Element node,
145
			public void onContextMenu(DataView source, int index, Element node,
145
					EventObject e) {
146
					EventObject e) {
146
 
147
 
147
				// on stoppe l'évenement
148
				// on stoppe l'évenement
148
				e.stopEvent();
149
				e.stopEvent();
149
				// et on notifie le médiateur
150
				// et on notifie le médiateur
150
				getIMediateur().montrerContextMenu(e);
151
				getIMediateur().montrerContextMenu(e);
151
 
152
 
152
			}
153
			}
153
 
154
 
154
			// gestion du double clic
155
			// gestion du double clic
155
 
156
 
156
			public void onDblClick(DataView source, int index, Element node,
157
			public void onDblClick(DataView source, int index, Element node,
157
					EventObject e) {
158
					EventObject e) {
158
 
159
 
159
				// on notife le mediateur
160
				// on notife le mediateur
160
				getIMediateur().clicGalerieImage(index, node, e);
161
				getIMediateur().clicGalerieImage(index, node, e);
161
 
162
 
162
			}
163
			}
163
 
164
 
164
			// gestion des actions en fonction de la selection
165
			// gestion des actions en fonction de la selection
165
 
166
 
166
			public void onSelectionChange(DataView view, Element[] selections) {
167
			public void onSelectionChange(DataView view, Element[] selections) {
167
 
168
 
168
				// s'il n'y a aucun élement sélectionné
169
				// s'il n'y a aucun élement sélectionné
169
				if (selections.length <= 0) {
170
				if (selections.length <= 0) {
170
					// on en notifie le médiateur
171
					// on en notifie le médiateur
171
					getIMediateur().aucuneSelection();
172
					getIMediateur().aucuneSelection();
172
				} else {
173
				} else {
173
					// sinon on notifie le médiateur
174
					// sinon on notifie le médiateur
174
					getIMediateur().selection();
175
					getIMediateur().selection();
175
					// et on lui demande de synchroniser la séléction avec les
176
					// et on lui demande de synchroniser la séléction avec les
176
					// autres vues
177
					// autres vues
177
					getIMediateur().synchroniserSelection("galerie");
178
					getIMediateur().synchroniserSelection("galerie");
178
				}
179
				}
179
			}
180
			}
180
		});
181
		});
181
	}
182
	}
182
 
183
 
183
	/**
184
	/**
184
	 * Accesseur pour la dataview
185
	 * Accesseur pour la dataview
185
	 * 
186
	 * 
186
	 * @return la dataview
187
	 * @return la dataview
187
	 */
188
	 */
188
	public DataView getDView() {
189
	public DataView getDView() {
189
		return dView;
190
		return dView;
190
	}
191
	}
191
 
192
 
192
	/**
193
	/**
193
	 * Renvoie les ids des images sélectionnées
194
	 * Renvoie les ids des images sélectionnées
194
	 * 
195
	 * 
195
	 * @return un tableau de String contenant les identifiants des images
196
	 * @return un tableau de String contenant les identifiants des images
196
	 *         sélectionnées
197
	 *         sélectionnées
197
	 */
198
	 */
198
	public String[] getIdSelectionnees() {
199
	public String[] getIdSelectionnees() {
199
		Record[] selection = getDView().getSelectedRecords();
200
		Record[] selection = getDView().getSelectedRecords();
200
		int taille = selection.length;
201
		int taille = selection.length;
201
		String id_selection[] = new String[taille];
202
		String id_selection[] = new String[taille];
202
 
203
 
203
		for (int i = 0; i < selection.length; i++) {
204
		for (int i = 0; i < selection.length; i++) {
204
 
205
 
205
			id_selection[i] = selection[i].getAsString("num_image");
206
			id_selection[i] = selection[i].getAsString("num_image");
206
		}
207
		}
207
 
208
 
208
		return id_selection;
209
		return id_selection;
209
	}
210
	}
210
 
211
 
211
	/**
212
	/**
212
	 * Accesseur pour le médiateur
213
	 * Accesseur pour le médiateur
213
	 * 
214
	 * 
214
	 * @return le médiateur associé à la vue
215
	 * @return le médiateur associé à la vue
215
	 */
216
	 */
216
	public ImageMediateur getIMediateur() {
217
	public ImageMediateur getIMediateur() {
217
		return iMediateur;
218
		return iMediateur;
218
	}
219
	}
219
 
220
 
220
	/**
221
	/**
221
	 * Accesseur pour le store
222
	 * Accesseur pour le store
222
	 * 
223
	 * 
223
	 * @return le store associé à la vue
224
	 * @return le store associé à la vue
224
	 */
225
	 */
225
	public Store getSt() {
226
	public Store getSt() {
226
		return st;
227
		return st;
227
	}
228
	}
228
 
229
 
229
	/**
230
	/**
230
	 * Accesseur pour la toolbar
231
	 * Accesseur pour la toolbar
231
	 * 
232
	 * 
232
	 * @return la toolbar associée à la vue
233
	 * @return la toolbar associée à la vue
233
	 */
234
	 */
234
	public BarrePaginationVue getToolBarVue() {
235
	public BarrePaginationVue getToolBarVue() {
235
		return pt;
236
		return pt;
236
	}
237
	}
237
 
238
 
238
	/**
239
	/**
239
	 * Fonction d'initialisation du contenu (appelée lors du premier affichage
240
	 * Fonction d'initialisation du contenu (appelée lors du premier affichage
240
	 * de la liste)
241
	 * de la liste)
241
	 */
242
	 */
242
	public void initialiser() {
243
	public void initialiser() {
243
 
244
 
244
		// Preparation de la dataview et du template
245
		// Preparation de la dataview et du template
245
		// le template va créer une div contenant une image
246
		// le template va créer une div contenant une image
246
		// pour chacune des photos
247
		// pour chacune des photos
247
		final XTemplate template = new XTemplate(
248
		final XTemplate template = new XTemplate(
248
				new String[] {
249
				new String[] {
249
						"<tpl for='.'>",
250
						"<tpl for='.'>",
250
						"<div class='thumb-wrap' id='{num_image}'>",
251
						"<div class='thumb-wrap' id='{num_image}'>",
251
						"<div class='thumb'><img src='{url_image_M}' width='{taille_x_s} px' height='{taille_y_s} px' title='{num_image}'></div>",
252
						"<div class='thumb dview-list'><img src='{url_image_M}' width='{taille_x_s} px' height='{taille_y_s} px' title='{nom_original}'></div>",
252
						"<span>{nom}</span></div>", "</tpl>",
253
						"<span></span></div>", "</tpl>",
253
						"<div class='x-clear'></div>" });
254
						"<div class='x-clear'></div>" });
254
		// pour des raisons de performances on compile le template en une
255
		// pour des raisons de performances on compile le template en une
255
		// fonction
256
		// fonction
256
		template.compile();
257
		template.compile();
257
 
258
 
258
		// la dataview affichera les images en accord avec le template
259
		// la dataview affichera les images en accord avec le template
259
		// cree precedemment
260
		// cree precedemment
260
		dView = new DataView("div.thumb-wrap") {
261
		dView = new DataView("div.thumb-wrap") {
261
 
262
 
262
			public void prepareData(Data data) {
263
			public void prepareData(Data data) {
263
				data.setProperty("shortName", Format.ellipsis(data
264
				data.setProperty("shortName", Format.ellipsis(data
264
						.getProperty("num_image"), 15));
265
						.getProperty("nom_original"), 15));
265
				
266
				
266
				int[] XY = {data.getPropertyAsInt("taille_x") ,data.getPropertyAsInt("taille_y")} ;
267
				int[] XY = {data.getPropertyAsInt("taille_x") ,data.getPropertyAsInt("taille_y")} ;
267
				int[] XYresize ;
268
				int[] XYresize ;
268
				
269
				
269
				if(garderRatio) {
270
				if(garderRatio) {
270
					XYresize = calculerDimensions(XY);
271
					XYresize = calculerDimensions(XY);
271
				}
272
				}
272
				else {
273
				else {
273
					XYresize = new int[2] ;
274
					XYresize = new int[2] ;
274
					XYresize[0] = XYresize[1] = tailleOr ;
275
					XYresize[0] = XYresize[1] = tailleOr ;
275
					
276
					
276
				}
277
				}
277
				
278
				
278
				data.setProperty("taille_x_s", XYresize[0]);
279
				data.setProperty("taille_x_s", XYresize[0]);
279
				data.setProperty("taille_y_s", XYresize[1]);	
280
				data.setProperty("taille_y_s", XYresize[1]);	
280
			}
281
			}
281
		};
282
		};
282
		dView.setTpl(template);
283
		dView.setTpl(template);
283
 
284
 
284
		// parametre d'affichage de la dataview
285
		// parametre d'affichage de la dataview
285
		this.setAutoScroll(true);
286
		this.setAutoScroll(true);
286
		dView.setAutoHeight(true);
287
		dView.setAutoHeight(true);
287
		dView.setMultiSelect(true);
288
		dView.setMultiSelect(true);
288
		dView.setOverCls("x-view-over");
289
		dView.setOverCls("x-view-over");
289
		dView.setEmptyText("");
290
		dView.setEmptyText("");
290
 
291
 
291
		// creation du store
292
		// creation du store
292
		FieldDef defNumImage = new IntegerFieldDef("num_image");
293
		FieldDef defNumImage = new IntegerFieldDef("num_image");
-
 
294
		FieldDef defNomImage = new StringFieldDef("nom_original");
293
		FieldDef defDatImage = new StringFieldDef("dat_image");
295
		FieldDef defDatImage = new StringFieldDef("dat_image");
294
		FieldDef defLieImage = new StringFieldDef("lie_image");
296
		FieldDef defLieImage = new StringFieldDef("lie_image");
295
		FieldDef defAppImage = new StringFieldDef("app_image");
297
		FieldDef defAppImage = new StringFieldDef("app_image");
296
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
298
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
297
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
299
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
298
		FieldDef defUrlImage = new StringFieldDef("url_image");
300
		FieldDef defUrlImage = new StringFieldDef("url_image");
299
		FieldDef defTailleX = new IntegerFieldDef("taille_x");
301
		FieldDef defTailleX = new IntegerFieldDef("taille_x");
300
		FieldDef defTailleY = new IntegerFieldDef("taille_y");
302
		FieldDef defTailleY = new IntegerFieldDef("taille_y");
301
		FieldDef[] defTab = { defNumImage, defDatImage, defLieImage,
303
		FieldDef[] defTab = { defNumImage, defNomImage, defDatImage, defLieImage,
302
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage,defTailleX,defTailleY};
304
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage,defTailleX,defTailleY};
303
		RecordDef rd = new RecordDef(defTab);
305
		RecordDef rd = new RecordDef(defTab);
304
		st = new Store(rd);
306
		st = new Store(rd);
305
		dView.setStore(st);
307
		dView.setStore(st);
306
 
308
 
307
		this.getDView().setLoadingText("chargement");
309
		this.getDView().setLoadingText("chargement");
308
 
310
 
309
		this.add(dView);
311
		this.add(dView);
310
		dView.hide();
312
		dView.hide();
311
		
313
		
312
		videPanel = new HTML("<div class=\"avertissement\" >Aucune image à afficher. <br/> <a id=\"lienUploadMultiple\" href=\"#\" > Cliquez ici pour ajouter un dossier entier ou plusieurs fichiers </a> (nécessite Java) <br/> " +
314
		videPanel = new HTML("<div class=\"avertissement\" >Aucune image à afficher. <br/> <a id=\"lienUploadMultiple\" href=\"#\" > Cliquez ici pour ajouter un dossier entier ou plusieurs fichiers </a> (nécessite Java) <br/> " +
313
				"			<a id=\"lienUploadSimple\" href=\"#\" > Cliquez ici pour ajouter un fichier à la fois </a> <br/> " +
315
				"			<a id=\"lienUploadSimple\" href=\"#\" > Cliquez ici pour ajouter un fichier à la fois </a> <br/> " +
314
				"			Pour ajouter des images plus tard, allez dans le menu Fichier -> Ajouter des images </div>");
316
				"			Pour ajouter des images plus tard, allez dans le menu Fichier -> Ajouter des images </div>");
315
		this.add(videPanel);
317
		this.add(videPanel);
316
		
318
		
317
		// ajouts de la gestion des evenements pour la dataview
319
		// ajouts de la gestion des evenements pour la dataview
318
		configDragAndDrop() ;
320
		configDragAndDrop() ;
319
		ajouterListenersDataView();
321
		ajouterListenersDataView();
320
		
322
		
321
		estInstancie = true ;
323
		estInstancie = true ;
322
		
324
		
323
	}
325
	}
324
	
326
	
325
	public void configDragAndDrop()
327
	public void configDragAndDrop()
326
	{
328
	{
327
		// on fabrique la nouvelle configuration
329
		// on fabrique la nouvelle configuration
328
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
330
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
329
		DropTargetConfig dtc = new DropTargetConfig();
331
		DropTargetConfig dtc = new DropTargetConfig();
330
		dtc.setdDdGroup("DragGroupName");
332
		dtc.setdDdGroup("DragGroupName");
331
 
333
 
332
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
334
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
333
		@SuppressWarnings("unused")
335
		@SuppressWarnings("unused")
334
		DropTarget tg = new DropTarget(this, dtc)
336
		DropTarget tg = new DropTarget(this, dtc)
335
		{
337
		{
336
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){		
338
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){		
337
				
339
				
338
				// si les données proviennent d'une grille
340
				// si les données proviennent d'une grille
339
				if(data instanceof GridDragData)
341
				if(data instanceof GridDragData)
340
		    	{
342
		    	{
341
					// on appelle le médiateur
343
					// on appelle le médiateur
342
		    		  	return iMediateur.lierObsDD(source, e, data,getId()) ;   
344
		    		  	return iMediateur.lierObsDD(source, e, data,getId()) ;   
343
		    	}
345
		    	}
344
				return false ;
346
				return false ;
345
			}
347
			}
346
			
348
			
347
			public String notifyOver(DragSource source, EventObject e, DragData data){
349
			public String notifyOver(DragSource source, EventObject e, DragData data){
348
			    return "x-dd-drop-ok";
350
			    return "x-dd-drop-ok";
349
			}
351
			}
350
		};
352
		};
351
        
353
        
352
	}
354
	}
353
 
355
 
354
	/**
356
	/**
355
	 * Méthode héritée de l'interface rafraichissable
357
	 * Méthode héritée de l'interface rafraichissable
356
	 */
358
	 */
357
	public void rafraichir(Object nouvelleDonnees,
359
	public void rafraichir(Object nouvelleDonnees,
358
			boolean repandreRafraichissement) {
360
			boolean repandreRafraichissement) {
359
 
361
 
360
		// si l'objet reçu est un store
362
		// si l'objet reçu est un store
361
		if (nouvelleDonnees instanceof Store) {
363
		if (nouvelleDonnees instanceof Store) {
362
 
364
 
363
				st = (Store) nouvelleDonnees;
365
				st = (Store) nouvelleDonnees;
364
				
366
				
365
			if(st.getCount() != 0) {
367
			if(st.getCount() != 0) {
366
				
368
				
367
				// on le charge
369
				// on le charge
368
				st.load();
370
				st.load();
369
	
371
	
370
				if(videPanel.isVisible()) {
372
				if(videPanel.isVisible()) {
371
					videPanel.setVisible(false) ;
373
					videPanel.setVisible(false) ;
372
				}
374
				}
373
				
375
				
374
				if(!dView.isVisible()) {
376
				if(!dView.isVisible()) {
375
					dView.setVisible(true);
377
					dView.setVisible(true);
376
				}
378
				}
377
					// on l'affecte à la vue
379
					// on l'affecte à la vue
378
					dView.setStore(st);
380
					dView.setStore(st);
379
					// et on rafrachit la vue
381
					// et on rafrachit la vue
380
					dView.refresh();
382
					dView.refresh();
381
			}
383
			}
382
			else 
384
			else 
383
			{
385
			{
384
				st.removeAll();
386
				st.removeAll();
385
				st.load();
387
				st.load();
386
				dView.setStore(st);
388
				dView.setStore(st);
387
				
389
				
388
				if(dView.isVisible()) {
390
				if(dView.isVisible()) {
389
					dView.hide() ;
391
					dView.hide() ;
390
				}
392
				}
391
				
393
				
392
				if(!videPanel.isVisible()) {
394
				if(!videPanel.isVisible()) {
393
					videPanel.setVisible(true);
395
					videPanel.setVisible(true);
394
					AjouterListenersLiens();
396
					AjouterListenersLiens();
395
				}
397
				}
396
				
398
				
397
			}
399
			}
398
		}
400
		}
399
 
401
 
400
		// si le composant doit répandre le rafraichissement
402
		// si le composant doit répandre le rafraichissement
401
		if (repandreRafraichissement) {
403
		if (repandreRafraichissement) {
402
			// il en notifie le médiateur en lui donnant une copie des données
404
			// il en notifie le médiateur en lui donnant une copie des données
403
			// et en notifiant qu'il en est l'expéditeur
405
			// et en notifiant qu'il en est l'expéditeur
404
			getIMediateur().synchroniserDonneesZoomListeGalerie(
406
			getIMediateur().synchroniserDonneesZoomListeGalerie(
405
					nouvelleDonnees, this);
407
					nouvelleDonnees, this);
406
		}	
408
		}	
407
	}
409
	}
408
 
410
 
409
	/**
411
	/**
410
	 * Méthode héritée de l'interface VueListable Sélectionne les images dans la
412
	 * Méthode héritée de l'interface VueListable Sélectionne les images dans la
411
	 * galerie suivant les identifiants donnés en paramètres
413
	 * galerie suivant les identifiants donnés en paramètres
412
	 * 
414
	 * 
413
	 * @param ids
415
	 * @param ids
414
	 *            les identifiants des images à sélectionner
416
	 *            les identifiants des images à sélectionner
415
	 */
417
	 */
416
	public void selectionnerImages(int[] ids) {
418
	public void selectionnerImages(int[] ids) {
417
 
419
 
418
		getDView().select(ids);
420
		getDView().select(ids);
419
 
421
 
420
	}
422
	}
421
 
423
 
422
	public void changerNumeroPage(int pageCourante) {
424
	public void changerNumeroPage(int pageCourante) {
423
		
425
		
424
		iMediateur.changerNumeroPage(pageCourante) ;
426
		iMediateur.changerNumeroPage(pageCourante) ;
425
		
427
		
426
	}
428
	}
427
 
429
 
428
	public void changerTaillePage(int nouvelleTaillePage) {
430
	public void changerTaillePage(int nouvelleTaillePage) {
429
		
431
		
430
		iMediateur.changerTaillePage(nouvelleTaillePage) ;
432
		iMediateur.changerTaillePage(nouvelleTaillePage) ;
431
	}
433
	}
432
	
434
	
433
	public int[] calculerDimensions(int[] tailleXY) {
435
	public int[] calculerDimensions(int[] tailleXY) {
434
	    
436
	    
435
		float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
437
		float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
436
        float tailleOr = this.tailleOr ;
438
        float tailleOr = this.tailleOr ;
437
        float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
439
        float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
438
        float[] XYresize = new float[2];
440
        float[] XYresize = new float[2];
439
        
441
        
440
        if(maxTaille == tailleXY[0]) {
442
        if(maxTaille == tailleXY[0]) {
441
            float rapport = tailleXYf[1]/tailleXYf[0] ;
443
            float rapport = tailleXYf[1]/tailleXYf[0] ;
442
            XYresize[0] = tailleOr ;
444
            XYresize[0] = tailleOr ;
443
            XYresize[1] = tailleOr*rapport ;
445
            XYresize[1] = tailleOr*rapport ;
444
        }else {
446
        }else {
445
            float rapport = tailleXYf[0]/tailleXYf[1] ;
447
            float rapport = tailleXYf[0]/tailleXYf[1] ;
446
            XYresize[1] = tailleOr ;
448
            XYresize[1] = tailleOr ;
447
            XYresize[0] = tailleOr*rapport ;
449
            XYresize[0] = tailleOr*rapport ;
448
        }
450
        }
449
        
451
        
450
        int[] res = {Math.round(XYresize[0]),Math.round(XYresize[1])} ;
452
        int[] res = {Math.round(XYresize[0]),Math.round(XYresize[1])} ;
451
        
453
        
452
        return res;
454
        return res;
453
    }
455
    }
454
	
456
	
455
	private void AjouterListenersLiens() {
457
	private void AjouterListenersLiens() {
456
 
458
 
457
		addListener(new PanelListenerAdapter() {
459
		addListener(new PanelListenerAdapter() {
458
			
460
			
459
			public void onAfterLayout(Container c) {
461
			public void onAfterLayout(Container c) {
460
				ExtElement uploadS = Ext.get("lienUploadSimple");
462
				ExtElement uploadS = Ext.get("lienUploadSimple");
461
				uploadS.removeAllListeners();
463
				uploadS.removeAllListeners();
462
				uploadS.addListener("click", new EventCallback() {
464
				uploadS.addListener("click", new EventCallback() {
463
					public void execute(EventObject e) {
465
					public void execute(EventObject e) {
464
						getIMediateur().uploaderImages(false);
466
						getIMediateur().uploaderImages(false);
465
					}
467
					}
466
					
468
					
467
				}) ;
469
				}) ;
468
			
470
			
469
				ExtElement uploadM = Ext.get("lienUploadMultiple");
471
				ExtElement uploadM = Ext.get("lienUploadMultiple");
470
				uploadM.removeAllListeners();
472
				uploadM.removeAllListeners();
471
				uploadM.addListener("click", new EventCallback() {
473
				uploadM.addListener("click", new EventCallback() {
472
					public void execute(EventObject e) {
474
					public void execute(EventObject e) {
473
						getIMediateur().uploaderImages(true);
475
						getIMediateur().uploaderImages(true);
474
					}
476
					}
475
				});
477
				});
476
			}
478
			}
477
 
479
 
478
		});
480
		});
479
	}
481
	}
480
}
482
}