Subversion Repositories eFlore/Applications.coel

Rev

Rev 142 | Rev 159 | 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
 
134 jpm 3
import java.util.List;
4
 
61 jpm 5
import org.tela_botanica.client.composants.AideFenetre;
60 jpm 6
import org.tela_botanica.client.composants.IdentificationFenetre;
66 jpm 7
import org.tela_botanica.client.composants.ParametreFenetre;
119 jpm 8
import org.tela_botanica.client.interfaces.Rafraichissable;
61 jpm 9
import org.tela_botanica.client.modeles.Configuration;
156 jp_milcent 10
import org.tela_botanica.client.modeles.Information;
60 jpm 11
import org.tela_botanica.client.modeles.Menu;
142 gduche 12
import org.tela_botanica.client.modeles.Personne;
128 gduche 13
import org.tela_botanica.client.modeles.PersonneListe;
142 gduche 14
import org.tela_botanica.client.modeles.ProjetsListe;
107 aurelien 15
import org.tela_botanica.client.modeles.Publication;
16
import org.tela_botanica.client.modeles.PublicationListe;
60 jpm 17
import org.tela_botanica.client.modeles.Structure;
69 jpm 18
import org.tela_botanica.client.modeles.StructureListe;
61 jpm 19
import org.tela_botanica.client.modeles.Utilisateur;
91 jpm 20
import org.tela_botanica.client.modeles.ValeurListe;
60 jpm 21
import org.tela_botanica.client.vues.ContenuPanneauVue;
22
import org.tela_botanica.client.vues.EntetePanneauVue;
69 jpm 23
import org.tela_botanica.client.vues.FormStructureVue;
142 gduche 24
import org.tela_botanica.client.vues.PersonneDetailPanneauVue;
128 gduche 25
import org.tela_botanica.client.vues.PersonneVue;
107 aurelien 26
import org.tela_botanica.client.vues.PublicationDetailPanneauVue;
27
import org.tela_botanica.client.vues.PublicationVue;
60 jpm 28
import org.tela_botanica.client.vues.StructureDetailPanneauVue;
156 jp_milcent 29
import org.tela_botanica.client.vues.StructureListePanneauVue;
60 jpm 30
import org.tela_botanica.client.vues.StructureVue;
31
import org.tela_botanica.client.vues.MenuPanneauVue;
32
 
33
import com.extjs.gxt.ui.client.Registry;
34
import com.extjs.gxt.ui.client.Style.LayoutRegion;
35
import com.extjs.gxt.ui.client.util.Margins;
156 jp_milcent 36
import com.extjs.gxt.ui.client.widget.Info;
37
import com.extjs.gxt.ui.client.widget.LayoutContainer;
60 jpm 38
import com.extjs.gxt.ui.client.widget.Viewport;
39
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
40
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
91 jpm 41
import com.google.gwt.core.client.GWT;
60 jpm 42
import com.google.gwt.user.client.Window;
43
import com.google.gwt.user.client.ui.RootPanel;
44
 
45
public class Mediateur {
46
 
119 jpm 47
	private Modele modele = null;
48
	private Utilisateur utilisateur = null;
49
 
60 jpm 50
	private Viewport viewport;
51
	private EntetePanneauVue panneauNord = null;
52
	private MenuPanneauVue panneauOuest = null;
53
	private ContenuPanneauVue panneauCentre = null;
156 jp_milcent 54
	private Rafraichissable contenuPanneauCentre = null;
60 jpm 55
 
119 jpm 56
 
60 jpm 57
	public Mediateur() {
58
		// Enregistrement du Médiateur dans le Registre
59
		Registry.register(RegistreId.MEDIATEUR, this);
60
		// Création du Modèle qui s'enregistre lui même dans le Registre
119 jpm 61
		modele = new Modele();
64 jpm 62
	    // Création de l'utilsateur courrant
119 jpm 63
		utilisateur = new Utilisateur(null, false);
65 jpm 64
		Registry.register(RegistreId.UTILISATEUR, utilisateur);
65
		this.connecterUtilisateur(null, null);
66
 
60 jpm 67
		// Création du Viewport qui contient la disposition globale de l'application
68
		viewport = new Viewport();
69
		viewport.setLayout(new BorderLayout());
70
 
71
		// Création des différents panneaux
72
	    creerPanneauNord();
73
	    creerPanneauOuest();
74
	    creerPanneauCentral();
75
 
76
		// Registry utile car présent partout!
77
		Registry.register(RegistreId.VIEWPORT, viewport);
78
		Registry.register(RegistreId.PANNEAU_OUEST, panneauOuest);
79
		Registry.register(RegistreId.PANNEAU_CENTRE, panneauCentre);
80
 
81
		// Chargement du menu
82
		chargeMenu(panneauOuest.listerMenu());
83
 
84
		// Retour à GWT du Viewport une fois constuit
85
		RootPanel.get().add(viewport);
86
	}
87
 
156 jp_milcent 88
	//+----------------------------------------------------------------------------------------------------------------+
89
	//												GESTION des PANNEAUX PRINCIPAUX
90
	//+----------------------------------------------------------------------------------------------------------------+
119 jpm 91
 
60 jpm 92
	private void creerPanneauNord() {
93
		panneauNord = new EntetePanneauVue();
94
 
95
		BorderLayoutData regionNord = new BorderLayoutData(LayoutRegion.NORTH, 100);
96
		regionNord.setCollapsible(true);
97
		regionNord.setFloatable(true);
98
		regionNord.setSplit(false);
99
		regionNord.setMargins(new Margins(5, 5, 0, 5));
100
 
101
		viewport.add(panneauNord, regionNord);
102
	}
103
 
104
	private void creerPanneauOuest() {
105
		panneauOuest = new MenuPanneauVue();
106
 
107
		BorderLayoutData regionOuest = new BorderLayoutData(LayoutRegion.WEST, 200);
108
		regionOuest.setSplit(true);
109
		regionOuest.setCollapsible(true);
110
		regionOuest.setMargins(new Margins(5));
111
 
112
		viewport.add(panneauOuest, regionOuest);
113
	}
114
 
115
	private void creerPanneauCentral() {
116
		panneauCentre = new ContenuPanneauVue();
117
 
118
		BorderLayoutData regionCentre = new BorderLayoutData(LayoutRegion.CENTER);
119
		regionCentre.setMargins(new Margins(5, 5, 5, 0));
120
 
121
		viewport.add(panneauCentre, regionCentre);
122
	}
123
 
156 jp_milcent 124
	//+----------------------------------------------------------------------------------------------------------------+
125
	//												GESTION du MENU
126
	//+----------------------------------------------------------------------------------------------------------------+
127
 
60 jpm 128
	public void chargeMenu(Menu menus) {
129
		((MenuPanneauVue) Registry.get(RegistreId.PANNEAU_OUEST)).rafraichir(menus);
130
	}
131
 
132
	public void clicMenu(String s) {
133
		panneauCentre.removeAll();
134
		if (s.equals("Institutions")) {
156 jp_milcent 135
			((Modele) Registry.get(RegistreId.MODELE)).selectionnerStructures(getUtilisateurId());
107 aurelien 136
		}else if (s.equals("Publications")) {
137
			((Modele) Registry.get(RegistreId.MODELE)).obtenirListePublications();
138
		}
128 gduche 139
		else if (s.equals("Personnes")) {
140
			((Modele) Registry.get(RegistreId.MODELE)).obtenirListePersonnes();
141
		}
107 aurelien 142
		else {
60 jpm 143
			Window.alert("Non implémenté!");
144
		}
145
		panneauCentre.layout();
146
	}
147
 
156 jp_milcent 148
	//+----------------------------------------------------------------------------------------------------------------+
149
	//												GESTION DES FENÊTRES
150
	//+----------------------------------------------------------------------------------------------------------------+
60 jpm 151
 
61 jpm 152
	public void ouvrirAide() {
153
		AideFenetre aideFenetre = new AideFenetre();
154
		aideFenetre.show();
66 jpm 155
		// FIXME : apparament le fade In/Fade Out pose problème sur les navigateurs...
156
		//aideFenetre.el().fadeIn(FxConfig.NONE);
61 jpm 157
	}
158
 
159
	public void ouvrirParametres() {
66 jpm 160
		ParametreFenetre parametresFenetre = new ParametreFenetre();
161
		parametresFenetre.show();
61 jpm 162
	}
163
 
164
	public void ouvrirIdentification() {
165
		IdentificationFenetre identifFenetre = new IdentificationFenetre();
166
		identifFenetre.show();
167
	}
168
 
169
	public void ouvrirApplis(String id) {
170
		if (id.equals(ComposantId.MENU_CEL)) {
171
			Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Carnet en ligne", "");
172
		} else if (id.equals(ComposantId.MENU_BEL)) {
134 jpm 173
			Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Biblio en ligne", "");
61 jpm 174
		}
175
	}
176
 
156 jp_milcent 177
	//+----------------------------------------------------------------------------------------------------------------+
178
	//												GESTION de l'UTILISATEUR et de l'IDENTIFICATION
179
	//+----------------------------------------------------------------------------------------------------------------+
180
 
181
	public String getUtilisateurId() {
182
		return utilisateur.getId();
183
	}
184
 
185
	public void clicIdentification() {
186
		// Gestion du login
187
		IdentificationFenetre dialog = new IdentificationFenetre();
188
	    dialog.setClosable(false);
189
	    dialog.show();
190
	}
191
 
65 jpm 192
	public void connecterUtilisateur(String login, String mdp) {
193
		((Modele) Registry.get(RegistreId.MODELE)).connecterUtilisateur(login, mdp);
64 jpm 194
	}
195
 
65 jpm 196
	public void deconnecterUtilisateur() {
197
		((Modele) Registry.get(RegistreId.MODELE)).deconnecterUtilisateur();
64 jpm 198
	}
65 jpm 199
 
64 jpm 200
	public void mettreAJourEtatIdentification(Utilisateur utilisateur) {
156 jp_milcent 201
		// Mise à jour du registre
202
		Registry.register(RegistreId.UTILISATEUR, utilisateur);
203
 
204
		// Création de l'information de mise à jour de l'utilisateur
205
		Information info = new Information("maj_utilisateur");
206
 
207
		// Rafraichissement du panneau Nord
208
		panneauNord.rafraichir(info);
209
 
210
		// Rafraichissement du panneau Centre
211
		if (contenuPanneauCentre != null) {
212
			contenuPanneauCentre.rafraichir(info);
213
		}
61 jpm 214
	}
66 jpm 215
 
156 jp_milcent 216
	//+----------------------------------------------------------------------------------------------------------------+
217
	//												GESTION DES PERSONNES
218
	//+----------------------------------------------------------------------------------------------------------------+
219
 
220
	public void clicListePersonne(Personne personne)	{
221
		((PersonneDetailPanneauVue) Registry.get(RegistreId.PANNEAU_PERSONNE_DETAIL)).rafraichir(personne);
222
 
69 jpm 223
	}
224
 
156 jp_milcent 225
	public void afficherListePersonnes(PersonneListe nouvelleDonnees)	{
226
		PersonneVue personneVue = new PersonneVue();
227
		panneauCentre.add(personneVue);
228
		personneVue.rafraichir(nouvelleDonnees);
229
	}
230
 
128 gduche 231
	/* GREG : Ajouter Personne
232
	 * Gestion du clic dans le menu gauche
233
	 * Affiche le formulaire
234
	 * */
235
	public void clicAjouterPersonne()	{
236
		GWT.log("ajouter pers", null);
237
	}
238
 
156 jp_milcent 239
	//+----------------------------------------------------------------------------------------------------------------+
240
	//												GESTION DES VALEURS ET LISTES
241
	//+----------------------------------------------------------------------------------------------------------------+
242
 
91 jpm 243
	public void afficherListeValeurs(ValeurListe nouvelleDonnees) {
156 jp_milcent 244
		if (panneauCentre.getId().equals(ComposantId.PANNEAU_STRUCTURE_FORM)) {
91 jpm 245
			((FormStructureVue) panneauCentre.getItem(0)).rafraichir(nouvelleDonnees);
246
		} else {
247
			GWT.log("Aucun panneau trouvé pour afficher la liste de valeur", null);
248
		}
249
	}
250
 
156 jp_milcent 251
	//+----------------------------------------------------------------------------------------------------------------+
252
	//												GESTION DES PUBLICATIONS
253
	//+----------------------------------------------------------------------------------------------------------------+
254
 
107 aurelien 255
	public void afficherListePublication(PublicationListe nouvelleDonnees) {
256
 
257
		PublicationVue publicationVue = new PublicationVue() ;
258
		panneauCentre.add(publicationVue);
259
		publicationVue.rafraichir(nouvelleDonnees);
260
 
261
	}
262
 
263
	public void clicListePublication(Publication publication) {
264
 
265
		((PublicationDetailPanneauVue) Registry.get(RegistreId.PANNEAU_PUBLICATION_DETAIL)).rafraichir(publication);
266
	}
267
 
268
	public void clicAjouterPublication() {
269
		// TODO Auto-generated method stub
270
 
271
	}
156 jp_milcent 272
 
273
	//+----------------------------------------------------------------------------------------------------------------+
274
	//												GESTION DES STRUCTURES
275
	//+----------------------------------------------------------------------------------------------------------------+
276
 
277
	public void clicListeInstitution(Structure institution) {
278
		((StructureDetailPanneauVue) Registry.get(RegistreId.PANNEAU_INSTITUTION_DETAIL)).rafraichir(institution);
279
	}
280
 
281
	public void afficherListeStructures(StructureListe nouvelleDonnees) {
282
		// TODO : créer dès l'initialisation de l'application InsitutionVue et la cacher
283
		StructureVue institutionVue = new StructureVue();
284
		panneauCentre.add(institutionVue);
285
		panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_LISTE);
286
		contenuPanneauCentre = institutionVue;
287
		institutionVue.rafraichir(nouvelleDonnees);
288
	}
289
 
290
	public void clicAjouterStructure() {
291
		panneauCentre.removeAll();
292
		FormStructureVue formStructureVue = new FormStructureVue();
293
		panneauCentre.add(formStructureVue);
294
		panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_FORM);
295
		panneauCentre.layout();
296
	}
297
 
119 jpm 298
	/**
299
	 * TODO : afficher un message du type "Structure ajoutée".
300
	 * Lance la creation d'une structure
301
	 * @param les données de la structure saisie
302
	 */
303
	public void ajouterStructure(Rafraichissable vue, Structure structure) {
134 jpm 304
		modele.ajouterStructure(vue, getUtilisateurId(), structure);
119 jpm 305
	}
107 aurelien 306
 
134 jpm 307
	public void clicSupprimerStructure(Rafraichissable vue, List<Structure> structureSelection) {
156 jp_milcent 308
		if (structureSelection.size() == 0) {
309
			Info.display("Information", "Veuillez sélectionner une structure.");
310
		} else if(structureSelection.size() > 0) {
311
			String message = "Êtes vous sur de vouloir supprimer les structures sélectionnées ?";
312
			if (structureSelection.size() == 1) {
313
				message = "Êtes vous sur de vouloir supprimer la structure sélectionnée ?";
314
			}
315
			if(Window.confirm(message)) {
134 jpm 316
					String idStr = "" ;
317
					for(int i = 0 ; i < structureSelection.size() ; i++) {
318
						idStr += structureSelection.get(i).getId()+"," ;
319
					}
156 jp_milcent 320
					modele.supprimerStructure(vue, getUtilisateurId(), idStr);
134 jpm 321
			}
322
		} else {
156 jp_milcent 323
			Info.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerStructure() du Médiateur.");
134 jpm 324
		}
325
	}
142 gduche 326
 
156 jp_milcent 327
	public void clicModifierStructure(List<Structure> structureSelection) {
328
		if(structureSelection.size() == 0) {
329
			Info.display("Information", "Veuillez sélectionner une structure.");
330
		} else if(structureSelection.size() > 1) {
331
			Info.display("Information", "Veuillez sélectionner une seule structure à la fois.");
332
		} else if(structureSelection.size() == 1) {
333
			panneauCentre.removeAll();
334
			FormStructureVue formStructureVue = new FormStructureVue();
335
			panneauCentre.add(formStructureVue);
336
			panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_FORM);
337
 
338
			String idStr = "" ;
339
			for(int i = 0 ; i < structureSelection.size() ; i++) {
340
				idStr = structureSelection.get(i).getId();
341
			}
342
			modele.selectionnerStructure(formStructureVue, getUtilisateurId(), idStr);
343
 
344
			panneauCentre.layout();
345
		} else {
346
			Info.display("Erreur", "Une erreur est survenue dans la méthode clicModifierStructure() du Médiateur.");
347
		}
348
 
349
	}
350
 
351
	public void modifierStructure(Rafraichissable vue, Structure structure) {
352
		modele.modifierStructure(vue, getUtilisateurId(), structure);
353
	}
354
 
355
	//+----------------------------------------------------------------------------------------------------------------+
356
	//												GESTION des PROJETS
357
	//+----------------------------------------------------------------------------------------------------------------+
358
 
142 gduche 359
	//Greg : ajout d'un écouteur pour le changement liste projet
360
	public void rafraichirListeProjets()	{
361
		((Modele) Registry.get(RegistreId.MODELE)).obtenirListeProjets();
362
	}
363
 
364
	public void afficherListeProjets(ProjetsListe projets)	{
365
		((MenuPanneauVue) Registry.get(RegistreId.PANNEAU_OUEST)).rafraichir(projets);
366
	}
134 jpm 367
}