Subversion Repositories eFlore/Applications.coel

Rev

Go to most recent revision | Details | 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;
60 jpm 10
import org.tela_botanica.client.modeles.Menu;
142 gduche 11
import org.tela_botanica.client.modeles.Personne;
128 gduche 12
import org.tela_botanica.client.modeles.PersonneListe;
142 gduche 13
import org.tela_botanica.client.modeles.ProjetsListe;
107 aurelien 14
import org.tela_botanica.client.modeles.Publication;
15
import org.tela_botanica.client.modeles.PublicationListe;
60 jpm 16
import org.tela_botanica.client.modeles.Structure;
69 jpm 17
import org.tela_botanica.client.modeles.StructureListe;
61 jpm 18
import org.tela_botanica.client.modeles.Utilisateur;
91 jpm 19
import org.tela_botanica.client.modeles.ValeurListe;
60 jpm 20
import org.tela_botanica.client.vues.ContenuPanneauVue;
21
import org.tela_botanica.client.vues.EntetePanneauVue;
69 jpm 22
import org.tela_botanica.client.vues.FormStructureVue;
142 gduche 23
import org.tela_botanica.client.vues.PersonneDetailPanneauVue;
128 gduche 24
import org.tela_botanica.client.vues.PersonneVue;
107 aurelien 25
import org.tela_botanica.client.vues.PublicationDetailPanneauVue;
26
import org.tela_botanica.client.vues.PublicationVue;
60 jpm 27
import org.tela_botanica.client.vues.StructureDetailPanneauVue;
28
import org.tela_botanica.client.vues.StructureVue;
29
import org.tela_botanica.client.vues.MenuPanneauVue;
30
 
31
import com.extjs.gxt.ui.client.Registry;
32
import com.extjs.gxt.ui.client.Style.LayoutRegion;
33
import com.extjs.gxt.ui.client.util.Margins;
34
import com.extjs.gxt.ui.client.widget.Viewport;
35
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
36
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
91 jpm 37
import com.google.gwt.core.client.GWT;
60 jpm 38
import com.google.gwt.user.client.Window;
39
import com.google.gwt.user.client.ui.RootPanel;
40
 
41
public class Mediateur {
42
 
119 jpm 43
	private Modele modele = null;
44
	private Utilisateur utilisateur = null;
45
 
60 jpm 46
	private Viewport viewport;
47
	private EntetePanneauVue panneauNord = null;
48
	private MenuPanneauVue panneauOuest = null;
49
	private ContenuPanneauVue panneauCentre = null;
50
 
119 jpm 51
 
60 jpm 52
	public Mediateur() {
53
		// Enregistrement du Médiateur dans le Registre
54
		Registry.register(RegistreId.MEDIATEUR, this);
55
		// Création du Modèle qui s'enregistre lui même dans le Registre
119 jpm 56
		modele = new Modele();
64 jpm 57
	    // Création de l'utilsateur courrant
119 jpm 58
		utilisateur = new Utilisateur(null, false);
65 jpm 59
		Registry.register(RegistreId.UTILISATEUR, utilisateur);
60
		this.connecterUtilisateur(null, null);
61
 
60 jpm 62
		// Création du Viewport qui contient la disposition globale de l'application
63
		viewport = new Viewport();
64
		viewport.setLayout(new BorderLayout());
65
 
66
		// Création des différents panneaux
67
	    creerPanneauNord();
68
	    creerPanneauOuest();
69
	    creerPanneauCentral();
70
 
71
		// Registry utile car présent partout!
72
		Registry.register(RegistreId.VIEWPORT, viewport);
73
		Registry.register(RegistreId.PANNEAU_OUEST, panneauOuest);
74
		Registry.register(RegistreId.PANNEAU_CENTRE, panneauCentre);
75
 
76
		// Chargement du menu
77
		chargeMenu(panneauOuest.listerMenu());
78
 
79
		// Retour à GWT du Viewport une fois constuit
80
		RootPanel.get().add(viewport);
81
	}
82
 
119 jpm 83
	public String getUtilisateurId() {
84
		return utilisateur.getId();
85
	}
86
 
60 jpm 87
	private void creerPanneauNord() {
88
		panneauNord = new EntetePanneauVue();
89
 
90
		BorderLayoutData regionNord = new BorderLayoutData(LayoutRegion.NORTH, 100);
91
		regionNord.setCollapsible(true);
92
		regionNord.setFloatable(true);
93
		regionNord.setSplit(false);
94
		regionNord.setMargins(new Margins(5, 5, 0, 5));
95
 
96
		viewport.add(panneauNord, regionNord);
97
	}
98
 
99
	private void creerPanneauOuest() {
100
		panneauOuest = new MenuPanneauVue();
101
 
102
		BorderLayoutData regionOuest = new BorderLayoutData(LayoutRegion.WEST, 200);
103
		regionOuest.setSplit(true);
104
		regionOuest.setCollapsible(true);
105
		regionOuest.setMargins(new Margins(5));
106
 
107
		viewport.add(panneauOuest, regionOuest);
108
	}
109
 
110
	private void creerPanneauCentral() {
111
		panneauCentre = new ContenuPanneauVue();
112
 
113
		BorderLayoutData regionCentre = new BorderLayoutData(LayoutRegion.CENTER);
114
		regionCentre.setMargins(new Margins(5, 5, 5, 0));
115
 
116
		viewport.add(panneauCentre, regionCentre);
117
	}
118
 
119
	public void chargeMenu(Menu menus) {
120
		((MenuPanneauVue) Registry.get(RegistreId.PANNEAU_OUEST)).rafraichir(menus);
121
	}
122
 
123
	public void clicMenu(String s) {
124
		panneauCentre.removeAll();
125
		if (s.equals("Institutions")) {
126
			((Modele) Registry.get(RegistreId.MODELE)).obtenirListeInstitutions();
107 aurelien 127
		}else if (s.equals("Publications")) {
128
			((Modele) Registry.get(RegistreId.MODELE)).obtenirListePublications();
129
		}
128 gduche 130
		else if (s.equals("Personnes")) {
131
			((Modele) Registry.get(RegistreId.MODELE)).obtenirListePersonnes();
132
		}
107 aurelien 133
		else {
60 jpm 134
			Window.alert("Non implémenté!");
135
		}
136
		panneauCentre.layout();
137
	}
138
 
139
	public void clicIdentification() {
140
		// Gestion du login
141
		IdentificationFenetre dialog = new IdentificationFenetre();
142
	    dialog.setClosable(false);
143
	    dialog.show();
144
	}
145
 
146
	public void clicListeInstitution(Structure institution) {
147
		((StructureDetailPanneauVue) Registry.get(RegistreId.PANNEAU_INSTITUTION_DETAIL)).rafraichir(institution);
148
	}
142 gduche 149
 
150
	public void clicListePersonne(Personne personne)	{
151
		((PersonneDetailPanneauVue) Registry.get(RegistreId.PANNEAU_PERSONNE_DETAIL)).rafraichir(personne);
152
 
153
	}
60 jpm 154
 
69 jpm 155
	public void afficherListeInstitutions(StructureListe nouvelleDonnees) {
60 jpm 156
		// TODO : créer dès l'initialisation de l'application InsitutionVue et la cacher
157
		StructureVue institutionVue = new StructureVue();
158
		panneauCentre.add(institutionVue);
159
		institutionVue.rafraichir(nouvelleDonnees);
160
	}
61 jpm 161
 
128 gduche 162
	public void afficherListePersonnes(PersonneListe nouvelleDonnees)	{
163
		PersonneVue personneVue = new PersonneVue();
164
		panneauCentre.add(personneVue);
165
		personneVue.rafraichir(nouvelleDonnees);
166
	}
167
 
61 jpm 168
	public void ouvrirAide() {
169
		AideFenetre aideFenetre = new AideFenetre();
170
		aideFenetre.show();
66 jpm 171
		// FIXME : apparament le fade In/Fade Out pose problème sur les navigateurs...
172
		//aideFenetre.el().fadeIn(FxConfig.NONE);
61 jpm 173
	}
174
 
175
	public void ouvrirParametres() {
66 jpm 176
		ParametreFenetre parametresFenetre = new ParametreFenetre();
177
		parametresFenetre.show();
61 jpm 178
	}
179
 
180
	public void ouvrirIdentification() {
181
		IdentificationFenetre identifFenetre = new IdentificationFenetre();
182
		identifFenetre.show();
183
	}
184
 
185
	public void ouvrirApplis(String id) {
186
		if (id.equals(ComposantId.MENU_CEL)) {
187
			Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Carnet en ligne", "");
188
		} else if (id.equals(ComposantId.MENU_BEL)) {
134 jpm 189
			Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Biblio en ligne", "");
61 jpm 190
		}
191
	}
192
 
65 jpm 193
	public void connecterUtilisateur(String login, String mdp) {
194
		((Modele) Registry.get(RegistreId.MODELE)).connecterUtilisateur(login, mdp);
64 jpm 195
	}
196
 
65 jpm 197
	public void deconnecterUtilisateur() {
198
		((Modele) Registry.get(RegistreId.MODELE)).deconnecterUtilisateur();
64 jpm 199
	}
65 jpm 200
 
64 jpm 201
	public void mettreAJourEtatIdentification(Utilisateur utilisateur) {
65 jpm 202
		panneauNord.rafraichir(utilisateur);
61 jpm 203
	}
66 jpm 204
 
69 jpm 205
	public void clicAjouterStructure() {
206
		panneauCentre.removeAll();
207
		FormStructureVue formStructureVue = new FormStructureVue();
208
		panneauCentre.add(formStructureVue);
91 jpm 209
		panneauCentre.setId(ComposantId.PANNEAU_FORM_STRUCTURE);
69 jpm 210
		panneauCentre.layout();
211
	}
212
 
128 gduche 213
	/* GREG : Ajouter Personne
214
	 * Gestion du clic dans le menu gauche
215
	 * Affiche le formulaire
216
	 * */
217
	public void clicAjouterPersonne()	{
218
		GWT.log("ajouter pers", null);
219
	}
220
 
221
 
91 jpm 222
	public void afficherListeValeurs(ValeurListe nouvelleDonnees) {
223
		if (panneauCentre.getId().equals(ComposantId.PANNEAU_FORM_STRUCTURE)) {
224
			((FormStructureVue) panneauCentre.getItem(0)).rafraichir(nouvelleDonnees);
225
		} else {
226
			GWT.log("Aucun panneau trouvé pour afficher la liste de valeur", null);
227
		}
228
	}
229
 
107 aurelien 230
	public void afficherListePublication(PublicationListe nouvelleDonnees) {
231
 
232
		PublicationVue publicationVue = new PublicationVue() ;
233
		panneauCentre.add(publicationVue);
234
		publicationVue.rafraichir(nouvelleDonnees);
235
 
236
	}
237
 
238
	public void clicListePublication(Publication publication) {
239
 
240
		((PublicationDetailPanneauVue) Registry.get(RegistreId.PANNEAU_PUBLICATION_DETAIL)).rafraichir(publication);
241
	}
242
 
243
	public void clicAjouterPublication() {
244
		// TODO Auto-generated method stub
245
 
246
	}
119 jpm 247
	/**
248
	 * TODO : afficher un message du type "Structure ajoutée".
249
	 * Lance la creation d'une structure
250
	 * @param les données de la structure saisie
251
	 */
252
	public void ajouterStructure(Rafraichissable vue, Structure structure) {
134 jpm 253
		modele.ajouterStructure(vue, getUtilisateurId(), structure);
119 jpm 254
	}
107 aurelien 255
 
134 jpm 256
	public void clicSupprimerStructure(Rafraichissable vue, List<Structure> structureSelection) {
257
		if(structureSelection.size() > 0) {
258
			if(Window.confirm("Êtes vous sur de vouloir supprimer les structures sélectionnées ?")) {
259
					String idStr = "" ;
260
					for(int i = 0 ; i < structureSelection.size() ; i++) {
261
						idStr += structureSelection.get(i).getId()+"," ;
262
					}
263
					modele.supprimerListeStructure(vue, getUtilisateurId(), idStr) ;
264
			}
265
		} else {
266
			Window.alert("Aucune structure sélectionnée");
267
		}
268
	}
142 gduche 269
 
270
	//Greg : ajout d'un écouteur pour le changement liste projet
271
	public void rafraichirListeProjets()	{
272
		((Modele) Registry.get(RegistreId.MODELE)).obtenirListeProjets();
273
	}
274
 
275
	public void afficherListeProjets(ProjetsListe projets)	{
276
		((MenuPanneauVue) Registry.get(RegistreId.PANNEAU_OUEST)).rafraichir(projets);
277
	}
278
 
134 jpm 279
 
280
}