Subversion Repositories eFlore/Applications.coel

Rev

Rev 444 | Rev 453 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
60 jpm 1
package org.tela_botanica.client;
2
 
231 jp_milcent 3
import java.util.Iterator;
134 jpm 4
import java.util.List;
5
 
61 jpm 6
import org.tela_botanica.client.composants.AideFenetre;
60 jpm 7
import org.tela_botanica.client.composants.IdentificationFenetre;
66 jpm 8
import org.tela_botanica.client.composants.ParametreFenetre;
358 jp_milcent 9
import org.tela_botanica.client.i18n.Constantes;
119 jpm 10
import org.tela_botanica.client.interfaces.Rafraichissable;
447 jp_milcent 11
import org.tela_botanica.client.modeles.Collection;
61 jpm 12
import org.tela_botanica.client.modeles.Configuration;
156 jp_milcent 13
import org.tela_botanica.client.modeles.Information;
327 jp_milcent 14
import org.tela_botanica.client.modeles.MenuApplicationId;
142 gduche 15
import org.tela_botanica.client.modeles.Personne;
128 gduche 16
import org.tela_botanica.client.modeles.PersonneListe;
245 jp_milcent 17
import org.tela_botanica.client.modeles.Projet;
268 jp_milcent 18
import org.tela_botanica.client.modeles.ProjetListe;
107 aurelien 19
import org.tela_botanica.client.modeles.Publication;
20
import org.tela_botanica.client.modeles.PublicationListe;
60 jpm 21
import org.tela_botanica.client.modeles.Structure;
209 jp_milcent 22
import org.tela_botanica.client.modeles.StructureAPersonne;
231 jp_milcent 23
import org.tela_botanica.client.modeles.StructureAPersonneListe;
188 jp_milcent 24
import org.tela_botanica.client.modeles.StructureConservation;
69 jpm 25
import org.tela_botanica.client.modeles.StructureListe;
195 jp_milcent 26
import org.tela_botanica.client.modeles.StructureValorisation;
61 jpm 27
import org.tela_botanica.client.modeles.Utilisateur;
91 jpm 28
import org.tela_botanica.client.modeles.ValeurListe;
447 jp_milcent 29
import org.tela_botanica.client.vues.CollectionListeVue;
444 jp_milcent 30
import org.tela_botanica.client.vues.ContenuVue;
31
import org.tela_botanica.client.vues.EnteteVue;
438 gduche 32
import org.tela_botanica.client.vues.PersonneForm;
444 jp_milcent 33
import org.tela_botanica.client.vues.PublicationForm;
34
import org.tela_botanica.client.vues.StructureForm;
438 gduche 35
import org.tela_botanica.client.vues.PersonneDetailVue;
128 gduche 36
import org.tela_botanica.client.vues.PersonneVue;
332 gduche 37
import org.tela_botanica.client.vues.PopupChargement;
444 jp_milcent 38
import org.tela_botanica.client.vues.PublicationDetailVue;
107 aurelien 39
import org.tela_botanica.client.vues.PublicationVue;
443 jp_milcent 40
import org.tela_botanica.client.vues.StatutVue;
441 jp_milcent 41
import org.tela_botanica.client.vues.StructureDetailVue;
60 jpm 42
import org.tela_botanica.client.vues.StructureVue;
444 jp_milcent 43
import org.tela_botanica.client.vues.MenuVue;
60 jpm 44
 
45
import com.extjs.gxt.ui.client.Registry;
46
import com.extjs.gxt.ui.client.Style.LayoutRegion;
315 gduche 47
import com.extjs.gxt.ui.client.event.ComponentEvent;
48
import com.extjs.gxt.ui.client.event.Listener;
60 jpm 49
import com.extjs.gxt.ui.client.util.Margins;
315 gduche 50
import com.extjs.gxt.ui.client.widget.Dialog;
156 jp_milcent 51
import com.extjs.gxt.ui.client.widget.Info;
315 gduche 52
import com.extjs.gxt.ui.client.widget.MessageBox;
358 jp_milcent 53
import com.extjs.gxt.ui.client.widget.StatusBar;
60 jpm 54
import com.extjs.gxt.ui.client.widget.Viewport;
315 gduche 55
import com.extjs.gxt.ui.client.widget.button.Button;
60 jpm 56
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
57
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
91 jpm 58
import com.google.gwt.core.client.GWT;
60 jpm 59
import com.google.gwt.user.client.Window;
60
import com.google.gwt.user.client.ui.RootPanel;
61
 
277 jp_milcent 62
public class Mediateur implements Rafraichissable {
60 jpm 63
 
358 jp_milcent 64
	private Viewport viewport;
119 jpm 65
	private Modele modele = null;
369 jp_milcent 66
	public Constantes i18nC;
119 jpm 67
 
444 jp_milcent 68
	private EnteteVue panneauNord = null;
69
	private MenuVue panneauOuest = null;
70
	private ContenuVue panneauCentre = null;
443 jp_milcent 71
	private StatutVue panneauSud = null;
156 jp_milcent 72
	private Rafraichissable contenuPanneauCentre = null;
60 jpm 73
 
358 jp_milcent 74
	private IdentificationFenetre fenetreIdentification = null;
75
 
60 jpm 76
	public Mediateur() {
77
		// Enregistrement du Médiateur dans le Registre
78
		Registry.register(RegistreId.MEDIATEUR, this);
358 jp_milcent 79
		// Gestion de l'i18n
369 jp_milcent 80
		i18nC = GWT.create(Constantes.class);
60 jpm 81
		// Création du Modèle qui s'enregistre lui même dans le Registre
119 jpm 82
		modele = new Modele();
277 jp_milcent 83
	    // Création de l'utilisateur courrant
84
		Registry.register(RegistreId.UTILISATEUR_COURANT, new Utilisateur(null, false));
65 jpm 85
		this.connecterUtilisateur(null, null);
277 jp_milcent 86
	    // Création du projet courrant
87
		Registry.register(RegistreId.PROJET_COURANT, new Projet());
65 jpm 88
 
60 jpm 89
		// Création du Viewport qui contient la disposition globale de l'application
90
		viewport = new Viewport();
91
		viewport.setLayout(new BorderLayout());
92
 
93
		// Création des différents panneaux
94
	    creerPanneauNord();
95
	    creerPanneauOuest();
96
	    creerPanneauCentral();
358 jp_milcent 97
	    creerPanneauSud();
60 jpm 98
 
99
		// Registry utile car présent partout!
100
		Registry.register(RegistreId.VIEWPORT, viewport);
101
		Registry.register(RegistreId.PANNEAU_OUEST, panneauOuest);
102
		Registry.register(RegistreId.PANNEAU_CENTRE, panneauCentre);
358 jp_milcent 103
		Registry.register(RegistreId.PANNEAU_SUD, panneauSud);
60 jpm 104
 
105
		// Chargement du menu
327 jp_milcent 106
		chargeMenuApplication();
60 jpm 107
 
108
		// Retour à GWT du Viewport une fois constuit
109
		RootPanel.get().add(viewport);
332 gduche 110
 
111
		masquerPopinChargement();
60 jpm 112
	}
113
 
156 jp_milcent 114
	//+----------------------------------------------------------------------------------------------------------------+
115
	//												GESTION des PANNEAUX PRINCIPAUX
116
	//+----------------------------------------------------------------------------------------------------------------+
119 jpm 117
 
60 jpm 118
	private void creerPanneauNord() {
444 jp_milcent 119
		panneauNord = new EnteteVue(this);
60 jpm 120
 
121
		BorderLayoutData regionNord = new BorderLayoutData(LayoutRegion.NORTH, 100);
122
		regionNord.setCollapsible(true);
123
		regionNord.setFloatable(true);
124
		regionNord.setSplit(false);
125
		regionNord.setMargins(new Margins(5, 5, 0, 5));
126
 
127
		viewport.add(panneauNord, regionNord);
128
	}
129
 
130
	private void creerPanneauOuest() {
444 jp_milcent 131
		panneauOuest = new MenuVue(this);
60 jpm 132
 
133
		BorderLayoutData regionOuest = new BorderLayoutData(LayoutRegion.WEST, 200);
134
		regionOuest.setSplit(true);
135
		regionOuest.setCollapsible(true);
136
		regionOuest.setMargins(new Margins(5));
137
 
138
		viewport.add(panneauOuest, regionOuest);
139
	}
140
 
141
	private void creerPanneauCentral() {
444 jp_milcent 142
		panneauCentre = new ContenuVue(this);
60 jpm 143
 
144
		BorderLayoutData regionCentre = new BorderLayoutData(LayoutRegion.CENTER);
145
		regionCentre.setMargins(new Margins(5, 5, 5, 0));
146
 
147
		viewport.add(panneauCentre, regionCentre);
148
	}
358 jp_milcent 149
 
150
	private void creerPanneauSud() {
443 jp_milcent 151
		panneauSud = new StatutVue();
358 jp_milcent 152
 
369 jp_milcent 153
		BorderLayoutData regionSud = new BorderLayoutData(LayoutRegion.SOUTH, 20);
358 jp_milcent 154
		regionSud.setCollapsible(true);
155
		regionSud.setFloatable(true);
156
		regionSud.setSplit(false);
157
		regionSud.setMargins(new Margins(0));
158
 
159
		viewport.add(panneauSud, regionSud);
160
	}
60 jpm 161
 
369 jp_milcent 162
	public void actualiserPanneauCentral() {
414 gduche 163
		System.out.println(panneauCentre);
369 jp_milcent 164
		panneauCentre.layout();
165
	}
166
 
156 jp_milcent 167
	//+----------------------------------------------------------------------------------------------------------------+
168
	//												GESTION du MENU
169
	//+----------------------------------------------------------------------------------------------------------------+
170
 
327 jp_milcent 171
	public void chargeMenuApplication() {
444 jp_milcent 172
		((MenuVue) Registry.get(RegistreId.PANNEAU_OUEST)).chargerMenus();
60 jpm 173
	}
174
 
327 jp_milcent 175
	public void clicMenu(String codeMenuClique) {
358 jp_milcent 176
		activerChargement(codeMenuClique);
60 jpm 177
		panneauCentre.removeAll();
327 jp_milcent 178
		if (codeMenuClique.equals(MenuApplicationId.STRUCTURE)) {
277 jp_milcent 179
			modele.selectionnerStructure(panneauCentre, getProjetId(), null);
327 jp_milcent 180
		} else if (codeMenuClique.equals(MenuApplicationId.PUBLICATION)) {
277 jp_milcent 181
			modele.selectionnerPublications(panneauCentre);
327 jp_milcent 182
		} else if (codeMenuClique.equals(MenuApplicationId.PERSONNE)) {
414 gduche 183
 
277 jp_milcent 184
			modele.selectionnerPersonne(panneauCentre, null, getProjetId(), null);
379 jp_milcent 185
		} else {
327 jp_milcent 186
			GWT.log("Non implémenté! Menu id : "+codeMenuClique, null);
60 jpm 187
		}
188
		panneauCentre.layout();
189
	}
190
 
358 jp_milcent 191
	public void activerChargement(String message) {
192
		afficherPopinChargement();
369 jp_milcent 193
		panneauSud.showBusy(i18nC.chargement()+" "+message);
358 jp_milcent 194
	}
195
 
196
	public void desactiverChargement() {
197
		masquerPopinChargement();
198
		panneauSud.clear();
199
	}
200
 
156 jp_milcent 201
	//+----------------------------------------------------------------------------------------------------------------+
202
	//												GESTION DES FENÊTRES
203
	//+----------------------------------------------------------------------------------------------------------------+
60 jpm 204
 
61 jpm 205
	public void ouvrirAide() {
206
		AideFenetre aideFenetre = new AideFenetre();
207
		aideFenetre.show();
66 jpm 208
		// FIXME : apparament le fade In/Fade Out pose problème sur les navigateurs...
209
		//aideFenetre.el().fadeIn(FxConfig.NONE);
61 jpm 210
	}
211
 
212
	public void ouvrirParametres() {
66 jpm 213
		ParametreFenetre parametresFenetre = new ParametreFenetre();
214
		parametresFenetre.show();
61 jpm 215
	}
216
 
217
	public void ouvrirIdentification() {
358 jp_milcent 218
		fenetreIdentification = new IdentificationFenetre();
219
		fenetreIdentification.show();
61 jpm 220
	}
221
 
222
	public void ouvrirApplis(String id) {
223
		if (id.equals(ComposantId.MENU_CEL)) {
224
			Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Carnet en ligne", "");
225
		} else if (id.equals(ComposantId.MENU_BEL)) {
134 jpm 226
			Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Biblio en ligne", "");
61 jpm 227
		}
228
	}
229
 
156 jp_milcent 230
	//+----------------------------------------------------------------------------------------------------------------+
231
	//												GESTION de l'UTILISATEUR et de l'IDENTIFICATION
232
	//+----------------------------------------------------------------------------------------------------------------+
245 jp_milcent 233
	/**
234
	 * Retourne l'identifiant de l'utilisateur courrant de l'application.
235
	 */
156 jp_milcent 236
	public String getUtilisateurId() {
277 jp_milcent 237
		String id = null;
238
		Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
239
		if (!utilisateurCourant.getId().equals("")) {
240
			id = utilisateurCourant.getId();
241
		}
242
		return id;
156 jp_milcent 243
	}
244
 
65 jpm 245
	public void connecterUtilisateur(String login, String mdp) {
277 jp_milcent 246
		modele.connecterUtilisateur(this, login, mdp);
64 jpm 247
	}
248
 
65 jpm 249
	public void deconnecterUtilisateur() {
277 jp_milcent 250
		modele.deconnecterUtilisateur(this);
64 jpm 251
	}
65 jpm 252
 
64 jpm 253
	public void mettreAJourEtatIdentification(Utilisateur utilisateur) {
156 jp_milcent 254
		// Mise à jour du registre
277 jp_milcent 255
		Registry.register(RegistreId.UTILISATEUR_COURANT, utilisateur);
156 jp_milcent 256
		// Création de l'information de mise à jour de l'utilisateur
257
		Information info = new Information("maj_utilisateur");
358 jp_milcent 258
 
259
		// Rafraichissement de la fenêtre d'Identification
260
		if (fenetreIdentification != null) {
261
			fenetreIdentification.rafraichir(info);
262
		}
156 jp_milcent 263
 
264
		// Rafraichissement du panneau Nord
265
		panneauNord.rafraichir(info);
266
 
267
		// Rafraichissement du panneau Centre
268
		if (contenuPanneauCentre != null) {
269
			contenuPanneauCentre.rafraichir(info);
270
		}
61 jpm 271
	}
66 jpm 272
 
156 jp_milcent 273
	//+----------------------------------------------------------------------------------------------------------------+
447 jp_milcent 274
	//												GESTION DES VALEURS ET LISTES
275
	//+----------------------------------------------------------------------------------------------------------------+
276
 
277
	public void afficherListeValeurs(ValeurListe nouvelleDonnees) {
278
		if (panneauCentre.getId().equals(ComposantId.PANNEAU_STRUCTURE_FORM)) {
279
			((StructureForm) panneauCentre.getItem(0)).rafraichir(nouvelleDonnees);
280
		} else {
281
			GWT.log("Aucun panneau trouvé pour afficher la liste de valeur", null);
282
		}
283
	}
284
 
285
 
286
	//+----------------------------------------------------------------------------------------------------------------+
287
	//												GESTION des PROJETS
288
	//+----------------------------------------------------------------------------------------------------------------+
289
 
290
	/**
291
	 * Retourne l'identifiant du projet courrant de l'application.
292
	 */
293
	public String getProjetId() {
294
		String id = null;
295
		Projet projetCourant = (Projet) Registry.get(RegistreId.PROJET_COURANT);
296
		if (projetCourant != null && !projetCourant.getId().equals("")) {
297
			id = projetCourant.getId();
298
		}
299
		return id;
300
	}
301
 
302
	//Greg : ajout d'un écouteur pour le changement liste projet
303
	public void selectionnerProjets(Rafraichissable vue)	{
304
		modele.selectionnerProjets(vue);
305
	}
306
 
307
	public void afficherListeProjets(ProjetListe projets)	{
308
		panneauOuest.rafraichir(projets);
309
	}
310
 
311
	public void selectionnerProjetCourant(Projet projetSelectionne) {
312
		Registry.register(RegistreId.PROJET_COURANT, projetSelectionne);
313
		if (contenuPanneauCentre instanceof PersonneVue)	{
314
			modele.selectionnerPersonne(contenuPanneauCentre, null, getProjetId(), null);
315
			//FIXME Le rafraichissement du panneau ne se fait pas!
316
		} else if (contenuPanneauCentre instanceof StructureVue)	{
317
			modele.obtenirListeStructures(contenuPanneauCentre, getProjetId());
318
		}
319
	}
320
 
321
	//+----------------------------------------------------------------------------------------------------------------+
322
	//												GESTION DES STRUCTURES
323
	//+----------------------------------------------------------------------------------------------------------------+
324
 
325
	public void clicListeStructure(Structure structure) {
326
		contenuPanneauCentre.rafraichir(structure);
327
		if (structure.getPersonnel() == null) {
328
			selectionnerStructureAPersonne(contenuPanneauCentre, structure.getId(), StructureAPersonne.ROLE_EQUIPE);
329
		} else {
330
			GWT.log("OK personnel déjà chargé", null);
331
		}
332
	}
333
 
334
	public void afficherListeStructures(StructureListe structuresACharger) {
335
		// TODO : créer dès l'initialisation de l'application InsitutionVue et la cacher
336
		StructureVue institutionVue = new StructureVue(this);
337
		panneauCentre.add(institutionVue);
338
		panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_LISTE);
339
		contenuPanneauCentre = institutionVue;
340
		institutionVue.rafraichir(structuresACharger);
341
	}
342
 
343
	public void clicAjouterStructure() {
344
		panneauCentre.removeAll();
345
		StructureForm structureForm = new StructureForm(this, StructureForm.MODE_AJOUTER);
346
		panneauCentre.add(structureForm);
347
		panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_FORM);
348
		panneauCentre.layout();
349
	}
350
 
351
	public void clicModifierStructure(List<Structure> structureSelection) {
352
		if (structureSelection.size() == 0) {
353
			Info.display("Information", "Veuillez sélectionner une structure.");
354
		} else if (structureSelection.size() > 1) {
355
			Info.display("Information", "Veuillez sélectionner une seule structure à la fois.");
356
		} else if (structureSelection.size() == 1) {
357
			panneauCentre.removeAll();
358
			StructureForm structureForm = new StructureForm(this, StructureForm.MODE_MODIFIER);
359
			panneauCentre.add(structureForm);
360
			panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_FORM);
361
 
362
			selectionnerStructure(structureForm, structureSelection.get(0).getId());
363
			selectionnerStructureAPersonne(structureForm, structureSelection.get(0).getId(), StructureAPersonne.ROLE_EQUIPE);
364
 
365
			panneauCentre.layout();
366
		} else {
367
			Info.display("Erreur", "Une erreur est survenue dans la méthode clicModifierStructure() du Médiateur.");
368
		}
369
 
370
	}
371
 
372
	public void clicSupprimerStructure(final Rafraichissable vue, final List<Structure> structureSelection) {
373
		if (structureSelection.size() == 0) {
374
			Info.display("Information", "Veuillez sélectionner une structure.");
375
		} else if(structureSelection.size() > 0) {
376
			String message = "Êtes vous sur de vouloir supprimer les structures sélectionnées ?";
377
			if (structureSelection.size() == 1) {
378
				message = "Êtes vous sur de vouloir supprimer la structure sélectionnée ?";
379
			}
380
 
381
 
382
			final Listener listenerSuppression = new Listener<ComponentEvent>() {
383
 
384
			       public void handleEvent(ComponentEvent ce) {
385
 
386
			    	   Dialog dialog = (Dialog) ce.component;
387
			    	   Button btn = dialog.getButtonPressed();
388
 
389
			    	   if (btn.getText().equals(dialog.yesText))	{
390
			    		   	String idStr = "" ;
391
							for(int i = 0 ; i < structureSelection.size() ; i++) {
392
								idStr += structureSelection.get(i).getId()+"," ;
393
							}
394
							modele.supprimerStructure(vue, getUtilisateurId(), idStr);
395
					       }
396
				      }
397
				     };
398
 
399
			MessageBox.confirm("Supprimer une structure", message, listenerSuppression);
400
 
401
		} else {
402
			Info.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerStructure() du Médiateur.");
403
		}
404
	}
405
 
406
	public void selectionnerStructure(Rafraichissable vue, String structureId) {
407
		GWT.log("Structure : "+structureId, null);
408
		modele.selectionnerStructure(vue, null, structureId);
409
	}
410
 
411
	/**
412
	 * TODO : afficher un message du type "Structure ajoutée".
413
	 * Lance la creation d'une structure
414
	 * @param les données de la structure saisie
415
	 */
416
	public void ajouterStructure(Rafraichissable vue, Structure structure, StructureConservation conservation, StructureValorisation valorisation) {
417
		modele.ajouterStructure(vue, getUtilisateurId(), structure, conservation, valorisation);
418
	}
419
 
420
	public void modifierStructure(Rafraichissable vue, String structureId, Structure structure, StructureConservation conservation, StructureValorisation valorisation) {
421
		modele.modifierStructure(vue, getUtilisateurId(), structureId, structure, conservation, valorisation);
422
	}
423
 
424
	//+----------------------------------------------------------------------------------------------------------------+
425
	// GESTION de la relation STRUCTURE A PERSONNE
426
	public void selectionnerStructureAPersonne(Rafraichissable vue, String structureId, String roleId) {
427
		GWT.log("Structure : "+structureId, null);
428
		modele.selectionnerStructureAPersonne(vue, getUtilisateurId(), null, structureId, roleId);
429
	}
430
 
431
	public void modifierStructureAPersonne(Rafraichissable vue, StructureAPersonneListe personnelModifie) {
432
		if (personnelModifie != null && personnelModifie.size() > 0) {
433
			GWT.log("Mediateur :modif", null);
434
			for (Iterator<String> it = personnelModifie.keySet().iterator(); it.hasNext();) {
435
				modele.modifierStructureAPersonne(vue, getUtilisateurId(), (StructureAPersonne) personnelModifie.get(it.next()));
436
			}
437
		}
438
	}
439
 
440
	public void ajouterStructureAPersonne(Rafraichissable vue, String structureId, StructureAPersonneListe personnelAjoute) {
441
		if (personnelAjoute != null && personnelAjoute.size() > 0) {
442
			for (Iterator<String> it = personnelAjoute.keySet().iterator(); it.hasNext();) {
443
				modele.ajouterStructureAPersonne(vue, getUtilisateurId(), structureId, (StructureAPersonne) personnelAjoute.get(it.next()));
444
			}
445
		}
446
	}
447
 
448
	public void supprimerStructureAPersonne(Rafraichissable vue, StructureAPersonneListe personnelSupprime) {
449
		if (personnelSupprime != null && personnelSupprime.size() > 0) {
450
			String idStrAPer = "" ;
451
			for (Iterator<String> it = personnelSupprime.keySet().iterator(); it.hasNext();) {
452
					idStrAPer += personnelSupprime.get(it.next()).getId()+"," ;
453
			}
454
			modele.supprimerStructureAPersonne(vue, getUtilisateurId(), idStrAPer);
455
		}
456
	}
457
 
458
	//+----------------------------------------------------------------------------------------------------------------+
459
	//												GESTION des COLLECTIONS
460
	//+----------------------------------------------------------------------------------------------------------------+
461
 
462
	public void clicAjouterCollection() {
463
		// TODO Auto-generated method stub
464
 
465
	}
466
 
467
	public void clicModifierCollection(List<Collection> selection) {
468
		// TODO Auto-generated method stub
469
 
470
	}
471
 
472
	public void clicSupprimerCollection(CollectionListeVue collectionListeVue,
473
			List<Collection> collectionsASupprimer) {
474
		// TODO Auto-generated method stub
475
 
476
	}
477
 
478
	//+----------------------------------------------------------------------------------------------------------------+
156 jp_milcent 479
	//												GESTION DES PERSONNES
480
	//+----------------------------------------------------------------------------------------------------------------+
481
 
482
	public void clicListePersonne(Personne personne)	{
438 gduche 483
		((PersonneDetailVue) Registry.get(RegistreId.PANNEAU_PERSONNE_DETAIL)).rafraichir(personne);
156 jp_milcent 484
 
69 jpm 485
	}
486
 
278 jp_milcent 487
	public void afficherListePersonnes(PersonneListe personnesACharger)	{
414 gduche 488
 
489
		PersonneVue personneVue = new PersonneVue();
490
		contenuPanneauCentre = personneVue;
491
		panneauCentre.add(personneVue);
492
 
278 jp_milcent 493
		contenuPanneauCentre.rafraichir(personnesACharger);
494
		//contenuPanneauCentre.layout();
156 jp_milcent 495
	}
496
 
128 gduche 497
	public void clicAjouterPersonne()	{
332 gduche 498
 
499
		afficherPopinChargement();
500
 
277 jp_milcent 501
		panneauCentre.removeAll();
438 gduche 502
		PersonneForm formulairePersonneVue = new PersonneForm();
277 jp_milcent 503
		contenuPanneauCentre = formulairePersonneVue;
504
		panneauCentre.add(formulairePersonneVue);
505
		panneauCentre.layout();
128 gduche 506
	}
507
 
285 gduche 508
	public void clicModifierPersonne(Personne personne)	{
509
		if (personne!=null)	{
510
			panneauCentre.removeAll();
438 gduche 511
			PersonneForm formulairePersonneVue = new PersonneForm();
285 gduche 512
			contenuPanneauCentre = formulairePersonneVue;
513
			panneauCentre.add(formulairePersonneVue);
349 gduche 514
 
515
			selectionnerPersonne(formulairePersonneVue, personne);
516
 
517
			panneauCentre.layout();
518
 
519
 
285 gduche 520
		}
521
	}
522
 
349 gduche 523
	public void selectionnerPersonne(Rafraichissable vue, Personne personne)	{
524
		modele.selectionnerPersonne(vue, personne.getId(), null, null);
525
	}
285 gduche 526
 
315 gduche 527
	public void clicSupprimerPersonne(final Rafraichissable vue,final List<Personne> personneSelection) {
245 jp_milcent 528
 
529
		String ids = "" ;
530
 
531
		if (personneSelection.size() == 0) {
532
			Info.display("Information", "Veuillez sélectionner une personne.");
533
		} else if(personneSelection.size() > 0) {
534
			String message = "Êtes vous sur de vouloir supprimer les personnes sélectionnées ?";
535
			if (personneSelection.size() == 1) {
536
				message = "Êtes vous sur de vouloir supprimer la personne sélectionnée ?";
537
			}
315 gduche 538
 
539
 
540
			final Listener listenerSuppression = new Listener<ComponentEvent>() {
541
 
327 jp_milcent 542
				public void handleEvent(ComponentEvent ce) {
543
					Dialog dialog = (Dialog) ce.component;
544
					Button btn = dialog.getButtonPressed();
545
 
546
					if (btn.getText().equals(dialog.yesText)) {
547
						String idStr = "" ;
347 gduche 548
						Iterator<Personne> itPersonne = personneSelection.iterator();
549
						while (itPersonne.hasNext()) {
550
							Personne personneCourante = itPersonne.next();
551
							idStr += personneCourante.getId();
389 gduche 552
							idStr +=",";
327 jp_milcent 553
						}
329 jp_milcent 554
						modele.supprimerPersonne(vue, idStr);
327 jp_milcent 555
					}
556
				}
557
			};
315 gduche 558
 
559
			MessageBox.confirm("Supprimer une personne", message, listenerSuppression);
245 jp_milcent 560
		} else {
561
			Info.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerPersonne() du Médiateur.");
562
		}
563
	}
277 jp_milcent 564
 
565
	public void selectionnerPersonneParNomComplet(Rafraichissable vue, String projetId, String nomComplet) {
566
		modele.selectionnerPersonne(vue, null, projetId, nomComplet);
567
	}
245 jp_milcent 568
 
389 gduche 569
	public void enregistrerPersonne(Rafraichissable vue, Personne personne){
429 gduche 570
		if (personne.getId()!=null && !personne.getId().trim().equals("")) {
571
			modele.modifierPersonne(vue, personne);
572
		}	else {
573
			modele.ajouterPersonne(vue, personne);
574
		}
575
 
389 gduche 576
	}
577
 
156 jp_milcent 578
	//+----------------------------------------------------------------------------------------------------------------+
579
	//												GESTION DES PUBLICATIONS
580
	//+----------------------------------------------------------------------------------------------------------------+
581
 
107 aurelien 582
	public void afficherListePublication(PublicationListe nouvelleDonnees) {
583
		PublicationVue publicationVue = new PublicationVue() ;
228 aurelien 584
		panneauCentre.removeAll();
107 aurelien 585
		panneauCentre.add(publicationVue);
186 gduche 586
		contenuPanneauCentre = publicationVue;
107 aurelien 587
		publicationVue.rafraichir(nouvelleDonnees);
588
 
589
	}
590
 
591
	public void clicListePublication(Publication publication) {
379 jp_milcent 592
		panneauCentre.rafraichir(publication);
107 aurelien 593
	}
594
 
595
	public void clicAjouterPublication() {
223 aurelien 596
		panneauCentre.removeAll();
444 jp_milcent 597
		PublicationForm publicationForm = new PublicationForm();
598
		panneauCentre.add(publicationForm);
223 aurelien 599
		panneauCentre.setId(ComposantId.PANNEAU_FORM_PUBLICATION);
600
		panneauCentre.layout();
107 aurelien 601
	}
156 jp_milcent 602
 
245 jp_milcent 603
	public void clicModifierPublication(List<Publication> publicationListe) {
604
		if(publicationListe.size() <= 0) {
315 gduche 605
			MessageBox.alert("Attention", "Vous devez sélectionner une publication", null);
379 jp_milcent 606
		} else {
245 jp_milcent 607
			Publication pubAModifier = publicationListe.get(publicationListe.size() -1);
608
			panneauCentre.removeAll();
444 jp_milcent 609
			PublicationForm publicationForm = new PublicationForm();
610
			panneauCentre.add(publicationForm);
245 jp_milcent 611
			panneauCentre.setId(ComposantId.PANNEAU_FORM_PUBLICATION);
612
			panneauCentre.layout();
444 jp_milcent 613
			publicationForm.rafraichir(pubAModifier);
245 jp_milcent 614
		}
615
	}
616
 
315 gduche 617
	public void clicSupprimerPublication(final List<Publication> publicationListe) {
245 jp_milcent 618
		if(publicationListe.size() <= 0) {
315 gduche 619
			MessageBox.alert("Attention", "Vous devez sélectionner une publication", null);
379 jp_milcent 620
		} else {
245 jp_milcent 621
			String message = "" ;
622
			if(publicationListe.size() == 1) {
623
				message = "Voulez-vous vraiment supprimer cette publication ?";
624
			}
625
			else {
626
				message = "Voulez-vous vraiment supprimer ces publication ?";
627
			}
315 gduche 628
 
629
 
630
			final Listener listenerSuppression = new Listener<ComponentEvent>() {
631
				public void handleEvent(ComponentEvent ce) {
632
 
633
					Dialog dialog = (Dialog) ce.component;
634
				    Button btn = dialog.getButtonPressed();
635
 
379 jp_milcent 636
				    if (btn.getText().equals(dialog.yesText)) {
315 gduche 637
				    	modele.supprimerPublication(contenuPanneauCentre, getUtilisateurId(),publicationListe);
638
				    }
639
				}
640
			};
641
 
642
			MessageBox.confirm("Supprimer une publication", message, listenerSuppression);
245 jp_milcent 643
		}
644
 
645
	}
646
 
444 jp_milcent 647
	public void ajouterPublication(PublicationForm publicationForm, Publication publi) {
277 jp_milcent 648
		modele.ajouterPublication(contenuPanneauCentre, getUtilisateurId(),publi);
245 jp_milcent 649
	}
650
 
444 jp_milcent 651
	public void modifierPublication(PublicationForm publicationForm, Publication publi) {
277 jp_milcent 652
		modele.modifierPublication(contenuPanneauCentre, getUtilisateurId(),publi);
245 jp_milcent 653
	}
654
 
277 jp_milcent 655
	public void clicObtenirListeEditeurs(Rafraichissable vue) {
656
		modele.selectionnerStructure(vue, null, null);
245 jp_milcent 657
	}
658
 
277 jp_milcent 659
	public void clicObtenirListeAuteurs(Rafraichissable vue) {
660
		modele.selectionnerPersonne(vue, null, null, null);
245 jp_milcent 661
	}
662
 
156 jp_milcent 663
	//+----------------------------------------------------------------------------------------------------------------+
447 jp_milcent 664
	//												RAFRAICHISSEMENT
156 jp_milcent 665
	//+----------------------------------------------------------------------------------------------------------------+
666
 
277 jp_milcent 667
	public void rafraichir(Object nouvelleDonnees) {
668
		if (nouvelleDonnees instanceof Utilisateur) {
669
			mettreAJourEtatIdentification((Utilisateur) nouvelleDonnees);
278 jp_milcent 670
		} else {
671
			GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null);
277 jp_milcent 672
		}
673
	}
281 gduche 674
 
675
	/**
676
	 * Récupère la liste et rafraichit la vue donnée
677
	 *
678
	 * @param la vue à rafraichir
679
	 * @param l'id de la liste à récupérer
680
	 * */
369 jp_milcent 681
	public void obtenirListeValeurEtRafraichir(Rafraichissable vue, String listeId)	{
682
		modele.obtenirListeValeurs(vue, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId));
281 gduche 683
	}
288 gduche 684
 
369 jp_milcent 685
	public void obtenirValeurEtRafraichir(Rafraichissable vue, String listeId, String identifiantValeur)	{
686
		modele.obtenirValeur(vue, "abv", ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId), identifiantValeur);
301 gduche 687
	}
688
 
288 gduche 689
	public void obtenirListeRegionsEtRafraichir(Rafraichissable vue, String strListeId, String strPays)	{
690
		modele.obtenirListeRegion(vue, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(strListeId), strPays+".__");
691
	}
332 gduche 692
 
693
	/**
694
	 * 	Affiche la popin de chargement
695
	 */
696
	public void afficherPopinChargement()	{
697
		((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).center();
698
	}
699
 
700
 
701
	public void masquerPopinChargement()	{
702
		((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).hide();
703
	}
447 jp_milcent 704
 
277 jp_milcent 705
}