Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 989 Rev 1292
1
package org.tela_botanica.client.vues.image;
1
package org.tela_botanica.client.vues.image;
2
 
2
 
3
import java.util.Iterator;
3
import java.util.Iterator;
4
 
4
 
5
import org.tela_botanica.client.image.ImageMediateur;
5
import org.tela_botanica.client.image.ImageMediateur;
6
import org.tela_botanica.client.interfaces.ListePaginable;
6
import org.tela_botanica.client.interfaces.ListePaginable;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.objets.ListeObservation;
8
import org.tela_botanica.client.modeles.objets.ListeObservation;
9
import org.tela_botanica.client.modeles.objets.Observation;
9
import org.tela_botanica.client.modeles.objets.Observation;
10
import org.tela_botanica.client.util.Util;
10
import org.tela_botanica.client.util.Util;
11
import org.tela_botanica.client.vues.MiniBarrePaginationVue;
11
import org.tela_botanica.client.vues.MiniBarrePaginationVue;
12
 
12
 
13
import com.google.gwt.user.client.Window;
13
import com.google.gwt.user.client.Window;
14
import com.gwtext.client.data.Record;
14
import com.gwtext.client.data.Record;
15
import com.gwtext.client.data.SimpleStore;
15
import com.gwtext.client.data.SimpleStore;
16
import com.gwtext.client.data.Store;
16
import com.gwtext.client.data.Store;
17
import com.gwtext.client.dd.DragSource;
17
import com.gwtext.client.dd.DragSource;
18
import com.gwtext.client.dd.DropTarget;
18
import com.gwtext.client.dd.DropTarget;
19
import com.gwtext.client.dd.DropTargetConfig;
19
import com.gwtext.client.dd.DropTargetConfig;
20
import com.gwtext.client.widgets.Component;
20
import com.gwtext.client.widgets.Component;
21
import com.gwtext.client.widgets.Container;
21
import com.gwtext.client.widgets.Container;
22
import com.gwtext.client.widgets.Toolbar;
22
import com.gwtext.client.widgets.Toolbar;
23
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
23
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
24
import com.gwtext.client.widgets.form.ComboBox;
24
import com.gwtext.client.widgets.form.ComboBox;
25
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
25
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
26
import com.gwtext.client.widgets.grid.CellMetadata;
26
import com.gwtext.client.widgets.grid.CellMetadata;
27
import com.gwtext.client.widgets.grid.ColumnConfig;
27
import com.gwtext.client.widgets.grid.ColumnConfig;
28
import com.gwtext.client.widgets.grid.ColumnModel;
28
import com.gwtext.client.widgets.grid.ColumnModel;
29
import com.gwtext.client.widgets.grid.GridDragData;
29
import com.gwtext.client.widgets.grid.GridDragData;
30
import com.gwtext.client.widgets.grid.GridPanel;
30
import com.gwtext.client.widgets.grid.GridPanel;
31
import com.gwtext.client.widgets.grid.Renderer;
31
import com.gwtext.client.widgets.grid.Renderer;
32
import com.gwtext.client.widgets.grid.event.GridListenerAdapter;
32
import com.gwtext.client.widgets.grid.event.GridListenerAdapter;
33
import com.gwtext.client.widgets.grid.event.GridRowListenerAdapter;
-
 
34
import com.gwtext.client.widgets.menu.BaseItem;
33
import com.gwtext.client.widgets.menu.BaseItem;
35
import com.gwtext.client.widgets.menu.Item;
34
import com.gwtext.client.widgets.menu.Item;
36
import com.gwtext.client.widgets.menu.Menu;
35
import com.gwtext.client.widgets.menu.Menu;
37
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
36
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
38
import com.gwtext.client.core.EventObject;
37
import com.gwtext.client.core.EventObject;
39
import com.gwtext.client.core.Ext;
38
import com.gwtext.client.core.Ext;
40
import com.gwtext.client.core.ExtElement;
39
import com.gwtext.client.core.ExtElement;
41
import com.gwtext.client.dd.DragData;
40
import com.gwtext.client.dd.DragData;
42
 
41
 
43
/**
42
/**
44
 * liste d'observation pour l'association d'images aux observations
43
 * liste d'observation pour l'association d'images aux observations
45
 * @author aurelien
44
 * @author aurelien
46
 *
45
 *
47
 */
46
 */
48
public class MiniListeObservationVue extends GridPanel implements Rafraichissable, ListePaginable {
47
public class MiniListeObservationVue extends GridPanel implements Rafraichissable, ListePaginable {
49
 
48
 
50
	/**
49
	/**
51
	 * Le médiateur associé à la vue
50
	 * Le médiateur associé à la vue
52
	 */
51
	 */
53
	private ImageMediateur iMediateur = null ;
52
	private ImageMediateur iMediateur = null ;
54
	
53
	
55
	/**
54
	/**
56
	 * Booléen d'instanciation
55
	 * Booléen d'instanciation
57
	 */
56
	 */
58
	private boolean estInstancie = false ;
57
	private boolean estInstancie = false ;
59
	
58
	
60
	/**
59
	/**
61
	 * Le modèle de colonnes
60
	 * Le modèle de colonnes
62
	 */
61
	 */
63
	private ColumnModel colModel = null ;
62
	private ColumnModel colModel = null ;
64
	
63
	
65
	private SimpleStore store = null ;
64
	private SimpleStore store = null ;
66
	
65
	
67
	private MiniBarrePaginationVue pgBar = new MiniBarrePaginationVue(this) ;
66
	private MiniBarrePaginationVue pgBar = new MiniBarrePaginationVue(this) ;
68
	
67
	
69
	private Toolbar bt = new Toolbar() ;
68
	private Toolbar bt = new Toolbar() ;
70
	
69
	
71
	/**
70
	/**
72
	 * Combobox permettant de selectionner le mode
71
	 * Combobox permettant de selectionner le mode
73
	 * modification ou bien création
72
	 * modification ou bien création
74
	 */
73
	 */
75
	private ComboBox selecteurMode = new ComboBox();
74
	private ComboBox selecteurMode = new ComboBox();
76
	
75
	
77
	Store storeMode = null ;
76
	Store storeMode = null ;
78
 
77
 
79
	private boolean liaison;
78
	private boolean liaison;
80
	
79
	
81
	int pageEnCours = 0;
80
	int pageEnCours = 0;
82
	
81
	
83
	int nbElements = 0;
82
	int nbElements = 0;
84
	
83
	
85
	int taillePage = 50;
84
	int taillePage = 50;
86
	
85
	
87
	private String modeleLieu = "IDLOCCOMMUNE, LIEUDIT, STATION";
86
	private String modeleLieu = "IDLOCCOMMUNE, LIEUDIT, STATION";
88
	
87
	
89
	/**
88
	/**
90
	 * Nombre de pages totales
89
	 * Nombre de pages totales
91
	 */
90
	 */
92
	private int pageMax = 1 ;
91
	private int pageMax = 1 ;
93
	
92
	
94
	/**
93
	/**
95
	 * Constructeur avec arguments
94
	 * Constructeur avec arguments
96
	 * @param im le médiateur à associer à la vue
95
	 * @param im le médiateur à associer à la vue
97
	 */
96
	 */
98
	public MiniListeObservationVue(ImageMediateur im)
97
	public MiniListeObservationVue(ImageMediateur im)
99
	{
98
	{
100
		iMediateur = im ;
99
		iMediateur = im ;
101
		
100
		
102
		this.setId("x-view-mini-obs") ;
101
		this.setId("x-view-mini-obs") ;
103
		
102
		
104
		// on construit le modèle de colonnes
103
		// on construit le modèle de colonnes
105
 
104
 
106
		// Le store suivant est ensuite remplacé par le store contenant les données obtenus depuis le serveur (cf rafraichir) 				
105
		// Le store suivant est ensuite remplacé par le store contenant les données obtenus depuis le serveur (cf rafraichir) 				
107
		Renderer colRend = new Renderer() {
106
		Renderer colRend = new Renderer() {
-
 
107
 
108
 
108
			@Override
109
			public String render(Object value, CellMetadata cellMetadata,
109
			public String render(Object value, CellMetadata cellMetadata,
110
					Record record, int rowIndex, int colNum, Store store) {
110
					Record record, int rowIndex, int colNum, Store store) {
111
				
111
				
112
				if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) {
112
				if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) {
113
				
113
				
114
					return "" ;
114
					return "" ;
115
				}	
115
				}	
116
				
116
				
117
				return value.toString() ;
117
				return value.toString() ;
118
			}
118
			}
119
			
119
			
120
		} ;
120
		} ;
121
		
121
		
122
		Renderer dateRend = new Renderer() {
122
		Renderer dateRend = new Renderer() {
-
 
123
 
123
 
124
			@Override
124
			public String render(Object value, CellMetadata cellMetadata,
125
			public String render(Object value, CellMetadata cellMetadata,
125
					Record record, int rowIndex, int colNum, Store store) {
126
					Record record, int rowIndex, int colNum, Store store) {
126
				
127
				
127
				if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) {
128
				if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) {
128
				
129
				
129
					return "" ;
130
					return "" ;
130
				}	
131
				}	
131
				else
132
				else
132
				{
133
				{
133
					String dateEntiere = value.toString() ;
134
					String dateEntiere = value.toString() ;
134
					String[] dateEtHeure = dateEntiere.split(" ", 2);
135
					String[] dateEtHeure = dateEntiere.split(" ", 2);
135
					if(verifierFormatDate(dateEtHeure[0])) {
136
					if(verifierFormatDate(dateEtHeure[0])) {
136
						String[] dateFormateeTab = dateEtHeure[0].split("-",3);
137
						String[] dateFormateeTab = dateEtHeure[0].split("-",3);
137
						return dateFormateeTab[2]+"/"+dateFormateeTab[1]+"/"+dateFormateeTab[0] ;
138
						return dateFormateeTab[2]+"/"+dateFormateeTab[1]+"/"+dateFormateeTab[0] ;
138
					}
139
					}
139
				}
140
				}
140
				
141
				
141
				return value.toString() ;
142
				return value.toString() ;
142
			}
143
			}
143
			
144
			
144
		} ;
145
		} ;
145
		
146
		
146
		// on crée un store simple contenant un petit set de données et deux colonnes
147
		// on crée un store simple contenant un petit set de données et deux colonnes
147
		store = new SimpleStore(new String[]{"transmis","plante","date","lieu","ordre_obs","id_obs"}, getObs());  
148
		store = new SimpleStore(new String[]{"transmis","plante","date","lieu","ordre_obs","id_obs"}, getObs());  
148
		ColumnConfig[] columns = { 
149
		ColumnConfig[] columns = { 
149
		new ColumnConfig("", "transmis", 30, true, new Renderer() {
150
		new ColumnConfig("", "transmis", 30, true, new Renderer() {
-
 
151
 
150
 
152
			@Override
151
			public String render(Object value, CellMetadata cellMetadata,
153
			public String render(Object value, CellMetadata cellMetadata,
152
					Record record, int rowIndex, int colNum, Store store) {
154
					Record record, int rowIndex, int colNum, Store store) {
153
				if(value.equals("1"))
155
				if(value.equals("1"))
154
				{
156
				{
155
					return "<img src=\"tela.png\"/></img>" ;
157
					return "<img src=\"tela.png\"/></img>" ;
156
				}
158
				}
157
				else
159
				else
158
				{
160
				{
159
					return "" ;
161
					return "" ;
160
				}
162
				}
161
			}
163
			}
162
			
164
			
163
		}),    
165
		}),    
164
		new ColumnConfig("Taxon", "plante", 145, true, colRend), 
166
		new ColumnConfig("Taxon", "plante", 145, true, colRend), 
165
		new ColumnConfig("Date", "date", 68, true, dateRend),
167
		new ColumnConfig("Date", "date", 68, true, dateRend),
166
		new ColumnConfig("Lieu", "lieu", 145, true, colRend),		
168
		new ColumnConfig("Lieu", "lieu", 145, true, colRend),		
167
		new ColumnConfig("Numero", "ordre_obs", 50, true, colRend), } ;
169
		new ColumnConfig("Numero", "ordre_obs", 50, true, colRend), } ;
168
		   
170
		   
169
        ColumnModel columnModel = new ColumnModel(columns);
171
        ColumnModel columnModel = new ColumnModel(columns);
170
         
172
         
171
        colModel = columnModel ;
173
        colModel = columnModel ;
172
 
174
 
173
         
175
         
174
        setTitle("Observations");  
176
        setTitle("Observations");  
175
        // on associe le modèle de colonnes
177
        // on associe le modèle de colonnes
176
        setColumnModel(columnModel);  
178
        setColumnModel(columnModel);  
177
        setAutoScroll(true) ;
179
        setAutoScroll(true) ;
178
        setHeight("100%") ;
180
        setHeight("100%") ;
179
		setAutoWidth(true) ; 
181
		setAutoWidth(true) ; 
180
        // on autorise le drag 'n drop pour un certain groupe
182
        // on autorise le drag 'n drop pour un certain groupe
181
 		this.setEnableDragDrop(true);
183
 		this.setEnableDragDrop(true);
182
 		this.setDdGroup("DragGroupName");
184
 		this.setDdGroup("DragGroupName");
183
        store.load();       
185
        store.load();       
184
		setStore(store) ;
186
		setStore(store) ;
185
		
187
		
186
		setBottomToolbar(pgBar) ;
188
		setBottomToolbar(pgBar) ;
187
		
189
		
188
		Object[][] mode = {{"toutes les observations",false} , {"observations liées", true} };
190
		Object[][] mode = {{"toutes les observations",false} , {"observations liées", true} };
189
		storeMode = new SimpleStore(new String[] { "nom_mode", "mode" },
191
		storeMode = new SimpleStore(new String[] { "nom_mode", "mode" },
190
				mode);
192
				mode);
191
		storeMode.load();
193
		storeMode.load();
192
		selecteurMode.setStore(storeMode);
194
		selecteurMode.setStore(storeMode);
193
		selecteurMode.setDisplayField("nom_mode") ;
195
		selecteurMode.setDisplayField("nom_mode") ;
194
		selecteurMode.setLabel("mode ") ;
196
		selecteurMode.setLabel("mode ") ;
195
		selecteurMode.setForceSelection(true) ;
197
		selecteurMode.setForceSelection(true) ;
196
		selecteurMode.setValue("toutes les observations") ;
198
		selecteurMode.setValue("toutes les observations") ;
197
		selecteurMode.setEditable(false) ;
199
		selecteurMode.setEditable(false) ;
198
		selecteurMode.setCls("x-selec-consult") ;
200
		selecteurMode.setCls("x-selec-consult") ;
199
		
201
		
200
		bt = new Toolbar() ;
202
		bt = new Toolbar() ;
201
		bt.addField(selecteurMode) ;
203
		bt.addField(selecteurMode) ;
202
		
204
		
203
		//this.setAutoExpandColumn("plante");
205
		//this.setAutoExpandColumn("plante");
204
		
206
		
205
		setTopToolbar(bt) ;
207
		setTopToolbar(bt) ;
206
		
208
		
207
		selecteurMode.addListener(new ComboBoxListenerAdapter() {
209
		selecteurMode.addListener(new ComboBoxListenerAdapter() {
-
 
210
 
208
 
211
			@Override
209
			public void onSelect(ComboBox comboBox, Record record, int index) {
212
			public void onSelect(ComboBox comboBox, Record record, int index) {
210
				
213
				
211
				// et on met la valeur à jour dans la combobox
214
				// et on met la valeur à jour dans la combobox
212
				comboBox.setValue(record.getAsString("nom_mode"));
215
				comboBox.setValue(record.getAsString("nom_mode"));
213
				setModification(record.getAsString("mode")) ;
216
				setModification(record.getAsString("mode")) ;
214
			}
217
			}
215
 
218
 
216
		});
219
		});
217
		
220
		
218
		setAutoScroll(true) ;
221
		setAutoScroll(true) ;
219
		// on configure le drag 'n drop
222
		// on configure le drag 'n drop
220
		configDragAndDrop() ;
223
		configDragAndDrop() ;
221
		
224
		
222
		this.addGridListener(new GridListenerAdapter() {
225
		this.addGridListener(new GridListenerAdapter() {
-
 
226
 
223
 
227
			@Override
224
			public void onContextMenu(EventObject e) {
228
			public void onContextMenu(EventObject e) {
225
				
229
				
226
				// si pas de selection, on selection au moins la ligne sur laquelle on a fait le clic
230
				// si pas de selection, on selection au moins la ligne sur laquelle on a fait le clic
227
				if(getSelectionModel().getSelections().length <= 0) {
231
				if(getSelectionModel().getSelections().length <= 0) {
228
					int index = getView().findRowIndex(e);
232
					int index = getView().findRowIndex(e);
229
			  		Record rddrop = getStore().getRecordAt(index) ;
233
			  		Record rddrop = getStore().getRecordAt(index) ;
230
					getSelectionModel().selectRecords(rddrop);
234
					getSelectionModel().selectRecords(rddrop);
231
				}
235
				}
232
				
236
				
233
				e.stopEvent() ;
237
				e.stopEvent() ;
234
				MenuLiaisonVue mlv = new MenuLiaisonVue(iMediateur,liaison) ;
238
				MenuLiaisonVue mlv = new MenuLiaisonVue(iMediateur,liaison) ;
235
				mlv.showAt(e.getXY()) ;
239
				mlv.showAt(e.getXY()) ;
236
				
240
				
237
			}
241
			}
238
			
242
			
239
		}) ;
243
		}) ;
240
		
244
		
241
		obtenirNombreMiniListeObservations();
245
		obtenirNombreMiniListeObservations();
242
	}
246
	}
243
	
247
	
244
	/**
248
	/**
245
	 * Configure le drag 'n drop pour la liste
249
	 * Configure le drag 'n drop pour la liste
246
	 */
250
	 */
247
	private void configDragAndDrop()
251
	private void configDragAndDrop()
248
	{
252
	{
249
		// on choisit le texte qui sera affiché lors d'un drag 'n drop
253
		// on choisit le texte qui sera affiché lors d'un drag 'n drop
250
		setDragDropText("Faites glisser la selection d'observations sur une image pour les lier") ;
254
		setDragDropText("Faites glisser la selection d'observations sur une image pour les lier") ;
251
		
255
		
252
		//On active le drag 'n drop
256
		//On active le drag 'n drop
253
		this.setEnableDragDrop(true);
257
		this.setEnableDragDrop(true);
254
 
258
 
255
		// on fabrique la nouvelle configuration
259
		// on fabrique la nouvelle configuration
256
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
260
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
257
		this.setDdGroup("DragGroupName");
261
		this.setDdGroup("DragGroupName");
258
		DropTargetConfig dtc = new DropTargetConfig();
262
		DropTargetConfig dtc = new DropTargetConfig();
259
		dtc.setdDdGroup("DragGroupName");
263
		dtc.setdDdGroup("DragGroupName");
260
 
264
 
261
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
265
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
262
		@SuppressWarnings("unused")
266
		@SuppressWarnings("unused")
263
		DropTarget tg = new DropTarget(this, dtc)
267
		DropTarget tg = new DropTarget(this, dtc)
264
		{
268
		{
-
 
269
			@Override
265
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){	
270
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){	
266
				
271
				
267
				// si on reçoit des données provenant d'une grille
272
				// si on reçoit des données provenant d'une grille
268
				if(data instanceof GridDragData)
273
				if(data instanceof GridDragData)
269
		    	  {
274
		    	  {
270
					// on la convertit 
275
					// on la convertit 
271
		    		  	GridDragData gdd = (GridDragData)data ;
276
		    		  	GridDragData gdd = (GridDragData)data ;
272
		    		  	// et on vérifie que les données ne viennent pas de l'élément courant
277
		    		  	// et on vérifie que les données ne viennent pas de l'élément courant
273
		    		  	if(gdd.getGrid().getId().equals("x-view-mini-obs"))
278
		    		  	if(gdd.getGrid().getId().equals("x-view-mini-obs"))
274
		    		  	{
279
		    		  	{
275
		    		  		return false ;
280
		    		  		return false ;
276
		    		  	}
281
		    		  	}
277
		    		  	else
282
		    		  	else
278
		    		  	{
283
		    		  	{
279
		    		  		// on appelle le médiateur
284
		    		  		// on appelle le médiateur
280
		    		  		return iMediateur.lierImagesDD(source, e, data) ;   
285
		    		  		return iMediateur.lierImagesDD(source, e, data) ;   
281
		    		  	}
286
		    		  	}
282
		    	  }
287
		    	  }
283
				return false ;
288
				return false ;
284
			}
289
			}
-
 
290
			
285
			
291
			@Override
286
			public String notifyOver(DragSource source, EventObject e, DragData data){
292
			public String notifyOver(DragSource source, EventObject e, DragData data){
287
			    return "x-dd-drop-ok";
293
			    return "x-dd-drop-ok";
288
			}
294
			}
289
		};
295
		};
290
        
296
        
291
	}
297
	}
292
	
298
	
293
	/**
299
	/**
294
	 * Méthode héritée de l'interface rafraichissable
300
	 * Méthode héritée de l'interface rafraichissable
295
	 */
301
	 */
-
 
302
	@Override
296
	public void rafraichir(Object nouvelleDonnees,
303
	public void rafraichir(Object nouvelleDonnees,
297
			boolean repandreRaffraichissement) {
304
			boolean repandreRaffraichissement) {
298
		
305
		
299
		if(nouvelleDonnees instanceof ListeObservation)
306
		if(nouvelleDonnees instanceof ListeObservation)
300
		{
307
		{
301
			if(this.getView() != null)
308
			if(this.getView() != null)
302
			{
309
			{
303
				ListeObservation data = (ListeObservation)nouvelleDonnees ;
310
				ListeObservation data = (ListeObservation)nouvelleDonnees ;
304
				String[][] listeObs = new String[data.size()][6] ;
311
				String[][] listeObs = new String[data.size()][6] ;
305
				int i = 0 ;
312
				int i = 0 ;
306
				
313
				
307
				for (Iterator it = data.keySet().iterator(); it.hasNext();) 
314
				for (Iterator it = data.keySet().iterator(); it.hasNext();) 
308
				{
315
				{
309
					
316
					
310
					Observation obs=(Observation) data.get(it.next());
317
					Observation obs=data.get(it.next());
311
					
318
					
312
					listeObs[i][0] = obs.getTransmis();
319
					listeObs[i][0] = obs.getTransmis();
313
					listeObs[i][1] = obs.getNomSaisi();
320
					listeObs[i][1] = obs.getNomSaisi();
314
					listeObs[i][2] = obs.getDate() ;
321
					listeObs[i][2] = obs.getDate() ;
315
					listeObs[i][3] = Util.formaterLieu(obs, modeleLieu);
322
					listeObs[i][3] = Util.formaterLieu(obs, modeleLieu);
316
					listeObs[i][4] = obs.getNumeroOrdre();
323
					listeObs[i][4] = obs.getNumeroOrdre();
317
					listeObs[i][5] = obs.getId();
324
					listeObs[i][5] = obs.getId();
318
				
325
				
319
					i++ ;
326
					i++ ;
320
				}
327
				}
321
	
328
	
322
				store = new SimpleStore(new String[]{"transmis","plante","date","lieu","ordre_obs","id_obs"}, listeObs);  	
329
				store = new SimpleStore(new String[]{"transmis","plante","date","lieu","ordre_obs","id_obs"}, listeObs);  	
323
				store.load();       
330
				store.load();       
324
				this.reconfigure(store, colModel) ;
331
				this.reconfigure(store, colModel) ;
325
			}
332
			}
326
			else
333
			else
327
			{
334
			{
328
				addListener(new ContainerListenerAdapter() {
335
				addListener(new ContainerListenerAdapter() {
-
 
336
					
329
					
337
					@Override
330
					public void onShow(Component c)
338
					public void onShow(Component c)
331
					{
339
					{
332
						obtenirNombreMiniListeObservations() ;
340
						obtenirNombreMiniListeObservations() ;
333
					}
341
					}
-
 
342
					
334
					
343
					@Override
335
					public void onAfterLayout(Container c)
344
					public void onAfterLayout(Container c)
336
					{
345
					{
337
						obtenirNombreMiniListeObservations() ;
346
						obtenirNombreMiniListeObservations() ;
338
					}
347
					}
339
					
348
					
340
				}) ;
349
				}) ;
341
			}
350
			}
342
	
351
	
343
		}
352
		}
344
		
353
		
345
		// Si on reçoit un tableau d'entiers
354
		// Si on reçoit un tableau d'entiers
346
		// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères
355
		// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères
347
		if(nouvelleDonnees instanceof int[])
356
		if(nouvelleDonnees instanceof int[])
348
		{
357
		{
349
			int[] pages = (int[])nouvelleDonnees ;
358
			int[] pages = (int[])nouvelleDonnees ;
350
			
359
			
351
			// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle
360
			// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle
352
			pageMax  = calculerNbPages(pages[0]) ;
361
			pageMax  = calculerNbPages(pages[0]) ;
353
			nbElements = pages[0];		
362
			nbElements = pages[0];		
354
			
363
			
355
			// et on notifie de le mediateur du changement des valeurs
364
			// et on notifie de le mediateur du changement des valeurs
356
			changerPageMaxEtCourante(pageMax,pageEnCours,taillePage,nbElements) ;
365
			changerPageMaxEtCourante(pageMax,pageEnCours,taillePage,nbElements) ;
357
			
366
			
358
			masquerChargement();
367
			masquerChargement();
359
			obtenirMiniListeObservations();
368
			obtenirMiniListeObservations();
360
		}
369
		}
361
		
370
		
362
		redimensionner();
371
		redimensionner();
363
		
372
		
364
		deMasquerChargement() ;
373
		deMasquerChargement() ;
365
		
374
		
366
	}
375
	}
367
	
376
	
368
	private void obtenirMiniListeObservations()
377
	private void obtenirMiniListeObservations()
369
	{
378
	{
370
		iMediateur.obtenirMiniListeObservations(this, taillePage, pageEnCours) ;
379
		iMediateur.obtenirMiniListeObservations(this, taillePage, pageEnCours) ;
371
	}
380
	}
372
	
381
	
373
	private void obtenirNombreMiniListeObservations()
382
	private void obtenirNombreMiniListeObservations()
374
	{
383
	{
375
		iMediateur.obtenirNombreMiniListeObservations(this) ;
384
		iMediateur.obtenirNombreMiniListeObservations(this) ;
376
	}
385
	}
377
	
386
	
378
	/**
387
	/**
379
	 * Renvoie le faux set de données pour le store
388
	 * Renvoie le faux set de données pour le store
380
	 * @return un tableau à deux colonnes int - String
389
	 * @return un tableau à deux colonnes int - String
381
	 */
390
	 */
382
	private Object[][] getObs() {  
391
	private Object[][] getObs() {  
383
	         return new Object[][]{  
392
	         return new Object[][]{  
384
		              
393
		              
385
	         } ;
394
	         } ;
386
	 }
395
	 }
-
 
396
	
387
	
397
	@Override
388
	public Store getStore()
398
	public Store getStore()
389
	{
399
	{
390
		return store ;
400
		return store ;
391
	}
401
	}
392
	
402
	
393
	public MiniBarrePaginationVue getBarrePagination()
403
	public MiniBarrePaginationVue getBarrePagination()
394
	{
404
	{
395
		return pgBar ;
405
		return pgBar ;
396
	}
406
	}
397
	
407
	
398
	private void setModification(String mode)
408
	private void setModification(String mode)
399
	{
409
	{
400
		if(mode.equals("true")) {
410
		if(mode.equals("true")) {
401
 
411
 
402
			liaison = true ;
412
			liaison = true ;
403
			selecteurMode.removeClass("x-selec-consult") ;
413
			selecteurMode.removeClass("x-selec-consult") ;
404
			selecteurMode.setCls("x-selec-liaison") ;
414
			selecteurMode.setCls("x-selec-liaison") ;
405
			getBarrePagination().disable();
415
			getBarrePagination().disable();
406
			doLayout();
416
			doLayout();
407
		}
417
		}
408
		else
418
		else
409
		{
419
		{
410
			liaison = false ;
420
			liaison = false ;
411
			selecteurMode.removeClass("x-selec-liaison") ;
421
			selecteurMode.removeClass("x-selec-liaison") ;
412
			selecteurMode.setCls("x-selec-consult") ;
422
			selecteurMode.setCls("x-selec-consult") ;
413
			getBarrePagination().enable();
423
			getBarrePagination().enable();
414
			doLayout();
424
			doLayout();
415
		}
425
		}
416
		
426
		
417
		store.removeAll() ;
427
		store.removeAll() ;
418
		iMediateur.changerModeLiaison(liaison) ;
428
		iMediateur.changerModeLiaison(liaison) ;
419
		
429
		
420
	}
430
	}
421
	
431
	
422
	public boolean getMode() {
432
	public boolean getMode() {
423
		return liaison ;
433
		return liaison ;
424
	}
434
	}
425
	
435
	
426
	/**
436
	/**
427
	 * Recherche l'élement actuellement affiché et affiche son message de chargement
437
	 * Recherche l'élement actuellement affiché et affiche son message de chargement
428
	 */
438
	 */
429
	public void masquerChargement()
439
	public void masquerChargement()
430
	{
440
	{
431
			ExtElement masked = Ext.get(getId()) ;
441
			ExtElement masked = Ext.get(getId()) ;
432
 
442
 
433
			if (masked!=null) {
443
			if (masked!=null) {
434
				masked.mask("Chargement") ;
444
				masked.mask("Chargement") ;
435
			}
445
			}
436
	}
446
	}
437
	
447
	
438
	/**
448
	/**
439
	 * Recherche l'élement actuellement affiché et affiche son message de chargement
449
	 * Recherche l'élement actuellement affiché et affiche son message de chargement
440
	 */
450
	 */
441
	public void deMasquerChargement()
451
	public void deMasquerChargement()
442
	{
452
	{
443
			ExtElement masked = Ext.get(getId()) ;
453
			ExtElement masked = Ext.get(getId()) ;
444
 
454
 
445
			if (masked!=null) {
455
			if (masked!=null) {
446
				masked.unmask() ;
456
				masked.unmask() ;
447
			}
457
			}
448
	}
458
	}
449
	
459
	
450
	public String getIdSelectionnees() {
460
	public String getIdSelectionnees() {
451
		
461
		
452
		Record[] sels = getSelectionModel().getSelections() ;
462
		Record[] sels = getSelectionModel().getSelections() ;
453
		
463
		
454
		String id = "";
464
		String id = "";
455
		
465
		
456
		for(int i = 0; i < sels.length; i++) {
466
		for(int i = 0; i < sels.length; i++) {
457
			id += ","+sels[i].getAsString("id_obs") ;
467
			id += ","+sels[i].getAsString("id_obs") ;
458
		}
468
		}
459
		
469
		
460
		id = id.replaceFirst(",", "");
470
		id = id.replaceFirst(",", "");
461
		
471
		
462
		return id ;
472
		return id ;
463
		
473
		
464
	}
474
	}
465
	
475
	
466
	public void supprimerLiaison() {
476
	public void supprimerLiaison() {
467
		
477
		
468
		
478
		
469
		Record[] rdObs = getSelectionModel().getSelections() ;
479
		Record[] rdObs = getSelectionModel().getSelections() ;
470
		
480
		
471
		for(int i = 0 ; i < rdObs.length ; i++) {
481
		for(int i = 0 ; i < rdObs.length ; i++) {
472
			
482
			
473
			getStore().remove(rdObs[i]) ;
483
			getStore().remove(rdObs[i]) ;
474
			this.getView().refresh() ;
484
			this.getView().refresh() ;
475
		
485
		
476
		}
486
		}
477
		
487
		
478
	}
488
	}
479
	
489
	
480
	public void redimensionner() {
490
	public void redimensionner() {
481
		if(getView() != null) {
491
		if(getView() != null) {
482
			
492
			
483
			int taille = 400;
493
			int taille = 400;
484
			
494
			
485
			if(Window.getClientHeight() > 800 ) {
495
			if(Window.getClientHeight() > 800 ) {
486
				taille = Window.getClientHeight() - 350;
496
				taille = Window.getClientHeight() - 350;
487
			}
497
			}
488
			setHeight(taille);
498
			setHeight(taille);
489
			getView().setForceFit(true);
499
			getView().setForceFit(true);
490
			doLayout();
500
			doLayout();
491
		}
501
		}
492
		else {
502
		else {
493
 
503
 
494
		}
504
		}
495
	}
505
	}
496
	
506
	
497
	/**
507
	/**
498
	 * Montre le menu de liaison aux coordonnées indiquées
508
	 * Montre le menu de liaison aux coordonnées indiquées
499
	 * @param e
509
	 * @param e
500
	 */
510
	 */
501
	public void montrerContextMenuLiaison(EventObject e) {
511
	public void montrerContextMenuLiaison(EventObject e) {
502
		
512
		
503
		final Menu liObs = new Menu();
513
		final Menu liObs = new Menu();
504
		final Item lierObservation = new Item("Lier aux images selectionnées");
514
		final Item lierObservation = new Item("Lier aux images selectionnées");
505
		liObs.addItem(lierObservation);
515
		liObs.addItem(lierObservation);
506
		
516
		
507
		liObs.addListener(new MenuListenerAdapter() {
517
		liObs.addListener(new MenuListenerAdapter() {
508
 
518
 
509
			// gestion du clic sur un item
519
			// gestion du clic sur un item
-
 
520
			@Override
510
			public void onItemClick(BaseItem item, EventObject ev) {
521
			public void onItemClick(BaseItem item, EventObject ev) {
511
 
522
 
512
				// si c'est la suppression
523
				// si c'est la suppression
513
				if (item.equals(lierObservation)) {
524
				if (item.equals(lierObservation)) {
514
					// on notifie le médiateur
525
					// on notifie le médiateur
515
 
526
 
516
				}
527
				}
517
				
528
				
518
				// enfin, on cache le menu
529
				// enfin, on cache le menu
519
				liObs.hide();
530
				liObs.hide();
520
 
531
 
521
			}
532
			}
522
 
533
 
523
		});
534
		});
524
		
535
		
525
		liObs.showAt(e.getXY());
536
		liObs.showAt(e.getXY());
526
	}
537
	}
-
 
538
 
527
 
539
	@Override
528
	public void changerNumeroPage(int pageCourante) {
540
	public void changerNumeroPage(int pageCourante) {
529
		
541
		
530
		pageEnCours = pageCourante ;	
542
		pageEnCours = pageCourante ;	
531
		masquerChargement();
543
		masquerChargement();
532
 
544
 
533
		// On lance le chargerment des observations
545
		// On lance le chargerment des observations
534
		iMediateur.obtenirNombreMiniListeObservations(this);
546
		iMediateur.obtenirNombreMiniListeObservations(this);
535
		
547
		
536
	}
548
	}
537
	
549
	
538
	/**
550
	/**
539
	 * Appelle le modèle pour qu'il change la taille de page utilisée
551
	 * Appelle le modèle pour qu'il change la taille de page utilisée
540
	 * @param nouvelleTaillePage la nouvelle taille de page
552
	 * @param nouvelleTaillePage la nouvelle taille de page
541
	 */
553
	 */
-
 
554
	
542
	
555
	@Override
543
	public void changerTaillePage(int nouvelleTaillePage)
556
	public void changerTaillePage(int nouvelleTaillePage)
544
	{
557
	{
545
	
558
	
546
		taillePage = nouvelleTaillePage ;
559
		taillePage = nouvelleTaillePage ;
547
		pageEnCours = calculerPageCourante(nbElements) ;
560
		pageEnCours = calculerPageCourante(nbElements) ;
548
 
561
 
549
		masquerChargement();
562
		masquerChargement();
550
 
563
 
551
		// On lance le chargerment des observations
564
		// On lance le chargerment des observations
552
		iMediateur.obtenirNombreMiniListeObservations(this);
565
		iMediateur.obtenirNombreMiniListeObservations(this);
553
		
566
		
554
		
567
		
555
		// et on met à jour la taille de page dans les barres d'outils
568
		// et on met à jour la taille de page dans les barres d'outils
556
		pgBar.selectionnerTaillePage(nouvelleTaillePage);
569
		pgBar.selectionnerTaillePage(nouvelleTaillePage);
557
		
570
		
558
		
571
		
559
	}
572
	}
560
	
573
	
561
	/**
574
	/**
562
	 * Met à jour les barre d'outils avec des nouvelles valeurs
575
	 * Met à jour les barre d'outils avec des nouvelles valeurs
563
	 * @param pageMax le nombre de pages
576
	 * @param pageMax le nombre de pages
564
	 * @param pageEncours la page en cours
577
	 * @param pageEncours la page en cours
565
	 * @param taillePage la taille de page
578
	 * @param taillePage la taille de page
566
	 * @param nbElement le nombre d'élements par page
579
	 * @param nbElement le nombre d'élements par page
567
	 */
580
	 */
568
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) 
581
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) 
569
	{
582
	{
570
				
583
				
571
		int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
584
		int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
572
		pgBar.rafraichir(pages, false) ;
585
		pgBar.rafraichir(pages, false) ;
573
		
586
		
574
	}
587
	}
575
	
588
	
576
	/**
589
	/**
577
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
590
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
578
	 * en cours
591
	 * en cours
579
	 * @param nbElements le nombre d'élements total
592
	 * @param nbElements le nombre d'élements total
580
	 * @return le nombre de pages 
593
	 * @return le nombre de pages 
581
	 */
594
	 */
582
	public int calculerNbPages(int nbElements)
595
	public int calculerNbPages(int nbElements)
583
	{
596
	{
584
		// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement
597
		// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement
585
		// pour eviter qu'il arrondisse mal la division
598
		// pour eviter qu'il arrondisse mal la division
586
		// nombre de pages = (nombre d'element / taille de la page) arrondie à l'entier superieur
599
		// nombre de pages = (nombre d'element / taille de la page) arrondie à l'entier superieur
587
		
600
		
588
		double nPage = (1.0*nbElements)/(1.0*taillePage) ; 
601
		double nPage = (1.0*nbElements)/(1.0*taillePage) ; 
589
		double nPageRound = Math.ceil(nPage) ;
602
		double nPageRound = Math.ceil(nPage) ;
590
		Double nPageInt = new Double(nPageRound) ;
603
		Double nPageInt = new Double(nPageRound) ;
591
		
604
		
592
		// on convertit en entier
605
		// on convertit en entier
593
		return nPageInt.intValue() ; 
606
		return nPageInt.intValue() ; 
594
	}
607
	}
595
 
608
 
596
	
609
	
597
	/**
610
	/**
598
	 * Recalcule la page en cours lors du changement du nombre d'élements
611
	 * Recalcule la page en cours lors du changement du nombre d'élements
599
	 * @param nbElements le nombre d'élements total
612
	 * @param nbElements le nombre d'élements total
600
	 * @return la nouvelle page encours
613
	 * @return la nouvelle page encours
601
	 */
614
	 */
602
	public int calculerPageCourante(int nbElements)
615
	public int calculerPageCourante(int nbElements)
603
	{
616
	{
604
		// on calcule le nombre de page
617
		// on calcule le nombre de page
605
		int nouvelNbPages = calculerNbPages(nbElements) ;
618
		int nouvelNbPages = calculerNbPages(nbElements) ;
606
		// la nouvelle page en cours
619
		// la nouvelle page en cours
607
		double nPageCourante = (1.0*pageEnCours)/(1.0*pageMax) * (1.0*nouvelNbPages) ;
620
		double nPageCourante = (1.0*pageEnCours)/(1.0*pageMax) * (1.0*nouvelNbPages) ;
608
		
621
		
609
		// on arrondit au supérieur
622
		// on arrondit au supérieur
610
		double nPageRound = Math.ceil(nPageCourante) ;
623
		double nPageRound = Math.ceil(nPageCourante) ;
611
		Double nPageInt = new Double(nPageRound) ;
624
		Double nPageInt = new Double(nPageRound) ;
612
		
625
		
613
		// on convertit en entier
626
		// on convertit en entier
614
		return Math.abs(nPageInt.intValue()) ; 
627
		return Math.abs(nPageInt.intValue()) ; 
615
	}
628
	}
616
	
629
	
617
	public boolean verifierFormatDate(String date) {
630
	public boolean verifierFormatDate(String date) {
618
		
631
		
619
		String regex = "[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}" ;
632
		String regex = "[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}" ;
620
		if(date.matches(regex) && !date.equals("0000-00-00")) {
633
		if(date.matches(regex) && !date.equals("0000-00-00")) {
621
			return true ;
634
			return true ;
622
		}
635
		}
623
		else {
636
		else {
624
			return false;
637
			return false;
625
		}
638
		}
626
	}
639
	}
627
}
640
}