Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1645 Rev 1657
1
package org.tela_botanica.client.vues.personne;
1
package org.tela_botanica.client.vues.personne;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
-
 
4
import java.util.Iterator;
4
import java.util.List;
5
import java.util.List;
5
 
6
 
6
 
7
 
7
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.RegistreId;
9
import org.tela_botanica.client.RegistreId;
9
import org.tela_botanica.client.composants.ChampFiltreRecherche;
10
import org.tela_botanica.client.composants.ChampFiltreRecherche;
10
import org.tela_botanica.client.composants.InfoLogger;
11
import org.tela_botanica.client.composants.InfoLogger;
11
import org.tela_botanica.client.images.Images;
12
import org.tela_botanica.client.images.Images;
12
import org.tela_botanica.client.interfaces.Rafraichissable;
13
import org.tela_botanica.client.interfaces.Rafraichissable;
13
import org.tela_botanica.client.modeles.Information;
14
import org.tela_botanica.client.modeles.Information;
14
import org.tela_botanica.client.modeles.Utilisateur;
15
import org.tela_botanica.client.modeles.Utilisateur;
15
import org.tela_botanica.client.modeles.personne.Personne;
16
import org.tela_botanica.client.modeles.personne.Personne;
16
import org.tela_botanica.client.modeles.personne.PersonneListe;
17
import org.tela_botanica.client.modeles.personne.PersonneListe;
17
import org.tela_botanica.client.modeles.projet.Projet;
18
import org.tela_botanica.client.modeles.projet.Projet;
18
import org.tela_botanica.client.util.Debug;
19
import org.tela_botanica.client.util.Debug;
19
import org.tela_botanica.client.vues.BarrePaginationVue;
20
import org.tela_botanica.client.vues.BarrePaginationVue;
20
 
21
 
21
import com.extjs.gxt.ui.client.Registry;
22
import com.extjs.gxt.ui.client.Registry;
22
import com.extjs.gxt.ui.client.Style.SortDir;
23
import com.extjs.gxt.ui.client.Style.SortDir;
-
 
24
import com.extjs.gxt.ui.client.data.ModelComparer;
23
import com.extjs.gxt.ui.client.event.BaseEvent;
25
import com.extjs.gxt.ui.client.event.BaseEvent;
24
import com.extjs.gxt.ui.client.event.ButtonEvent;
26
import com.extjs.gxt.ui.client.event.ButtonEvent;
25
import com.extjs.gxt.ui.client.event.Events;
27
import com.extjs.gxt.ui.client.event.Events;
26
import com.extjs.gxt.ui.client.event.Listener;
28
import com.extjs.gxt.ui.client.event.Listener;
27
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
29
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
28
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
30
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
29
import com.extjs.gxt.ui.client.event.SelectionListener;
31
import com.extjs.gxt.ui.client.event.SelectionListener;
30
import com.extjs.gxt.ui.client.store.ListStore;
32
import com.extjs.gxt.ui.client.store.ListStore;
-
 
33
import com.extjs.gxt.ui.client.store.Store;
-
 
34
import com.extjs.gxt.ui.client.store.StoreSorter;
31
import com.extjs.gxt.ui.client.widget.ContentPanel;
35
import com.extjs.gxt.ui.client.widget.ContentPanel;
32
import com.extjs.gxt.ui.client.widget.button.Button;
36
import com.extjs.gxt.ui.client.widget.button.Button;
33
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
37
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
34
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
38
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
35
import com.extjs.gxt.ui.client.widget.grid.Grid;
39
import com.extjs.gxt.ui.client.widget.grid.Grid;
36
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
40
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
37
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
41
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
38
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
42
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
39
import com.google.gwt.core.client.GWT;
43
import com.google.gwt.core.client.GWT;
40
import com.google.gwt.i18n.client.Constants;
44
import com.google.gwt.i18n.client.Constants;
41
 
45
 
42
public class PersonneListeVue extends ContentPanel implements Rafraichissable {
46
public class PersonneListeVue extends ContentPanel implements Rafraichissable {
43
	
47
	
44
	private Mediateur mediateur = null ;
48
	private Mediateur mediateur = null ;
45
	
49
	
46
	private Grid<Personne> grille = null;
50
	private Grid<Personne> grille = null;
47
	private ListStore<Personne> store = null;
51
	private ListStore<Personne> store = null;
48
	
52
	
49
	private ChampFiltreRecherche champFiltreRecherche = null;
53
	private ChampFiltreRecherche champFiltreRecherche = null;
50
	private BarrePaginationVue pagination = null;
54
	private BarrePaginationVue pagination = null;
51
	
55
	
52
	private ColumnModel modeleColonnes = null;
56
	private ColumnModel modeleColonnes = null;
53
	private Button ajouter = null;
57
	private Button ajouter = null;
54
	private Button modifier = null;
58
	private Button modifier = null;
55
	private Button supprimer = null;
59
	private Button supprimer = null;
56
	
60
	
57
	private int indexElementSelectionne = 0;
61
	private int indexElementSelectionne = 0;
58
	private Personne personneSelectionnee = null;
62
	private Personne personneSelectionnee = null;
59
	
63
	
60
	public PersonneListeVue() {
64
	public PersonneListeVue() {
61
		mediateur = Registry.get(RegistreId.MEDIATEUR);
65
		mediateur = Registry.get(RegistreId.MEDIATEUR);
62
		Constants i18nC = mediateur.i18nC;
66
		Constants i18nC = mediateur.i18nC;
63
		
67
		
64
		setHeading(Mediateur.i18nC.personneListeLabel());
68
		setHeading(Mediateur.i18nC.personneListeLabel());
65
		setLayout(new FitLayout());
69
		setLayout(new FitLayout());
66
		
70
		
67
		//Définition de la barre d'outil
71
		//Définition de la barre d'outil
68
		ToolBar toolBar = new ToolBar();
72
		ToolBar toolBar = new ToolBar();
69
		ajouter = new Button(Mediateur.i18nC.ajouter());
73
		ajouter = new Button(Mediateur.i18nC.ajouter());
70
		ajouter.setIcon(Images.ICONES.ajouter());
74
		ajouter.setIcon(Images.ICONES.ajouter());
71
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
75
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
72
			public void componentSelected(ButtonEvent ce) {  
76
			public void componentSelected(ButtonEvent ce) {  
73
				mediateur.clicAjouterPersonne();
77
				mediateur.clicAjouterPersonne();
74
			}  
78
			}  
75
		});
79
		});
76
		ajouter.setToolTip(mediateur.i18nC.indicationCreerUneFiche()+" "+mediateur.i18nC.collectionSingulier());
80
		ajouter.setToolTip(mediateur.i18nC.indicationCreerUneFiche()+" "+mediateur.i18nC.collectionSingulier());
77
		toolBar.add(ajouter);
81
		toolBar.add(ajouter);
78
 
82
 
79
		modifier = new Button(Mediateur.i18nC.modifier());
83
		modifier = new Button(Mediateur.i18nC.modifier());
80
		modifier.setIcon(Images.ICONES.formModifier());
84
		modifier.setIcon(Images.ICONES.formModifier());
81
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {  
85
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {  
82
			public void componentSelected(ButtonEvent ce) {  
86
			public void componentSelected(ButtonEvent ce) {  
83
				mediateur.clicModifierPersonne(grille.getSelectionModel().getSelectedItems());
87
				mediateur.clicModifierPersonne(grille.getSelectionModel().getSelectedItems());
84
			}  
88
			}  
85
		});
89
		});
86
		modifier.setToolTip(mediateur.i18nC.indicationModifierUneFiche());
90
		modifier.setToolTip(mediateur.i18nC.indicationModifierUneFiche());
87
		toolBar.add(modifier);
91
		toolBar.add(modifier);
88
		
92
		
89
		supprimer = new Button(Mediateur.i18nC.supprimer());
93
		supprimer = new Button(Mediateur.i18nC.supprimer());
90
		supprimer.setIcon(Images.ICONES.supprimer());
94
		supprimer.setIcon(Images.ICONES.supprimer());
91
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {  
95
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {  
92
			public void componentSelected(ButtonEvent ce) {  
96
			public void componentSelected(ButtonEvent ce) {  
93
				clicSupprimerPersonne(grille.getSelectionModel().getSelectedItems());
97
				clicSupprimerPersonne(grille.getSelectionModel().getSelectedItems());
94
			}  
98
			}  
95
		});
99
		});
96
		supprimer.setToolTip(mediateur.i18nC.indicationSupprimerUneFiche());
100
		supprimer.setToolTip(mediateur.i18nC.indicationSupprimerUneFiche());
97
		toolBar.add(supprimer);
101
		toolBar.add(supprimer);
98
		setTopComponent(toolBar);
102
		setTopComponent(toolBar);
99
 
103
 
100
		// Définition des colomnes de la grille:
104
		// Définition des colomnes de la grille:
101
		List<ColumnConfig> lstColumns = new ArrayList<ColumnConfig>();
105
		List<ColumnConfig> lstColumns = new ArrayList<ColumnConfig>();
102
		lstColumns.add(new ColumnConfig("id_personne", "Id", 45));
106
		lstColumns.add(new ColumnConfig("id_personne", "Id", 45));
103
		lstColumns.add(new ColumnConfig("nom", "Nom", 100));
107
		lstColumns.add(new ColumnConfig("nom", "Nom", 100));
104
		lstColumns.add(new ColumnConfig("prenom", "Prénom", 100));
108
		lstColumns.add(new ColumnConfig("prenom", "Prénom", 100));
105
		lstColumns.add(new ColumnConfig("fmt_nom_complet", "Nom Complet", 200));
109
		lstColumns.add(new ColumnConfig("fmt_nom_complet", "Nom Complet", 200));
106
		lstColumns.add(new ColumnConfig("code_postal", "Code postal", 100));
110
		lstColumns.add(new ColumnConfig("code_postal", "Code postal", 100));
107
		lstColumns.add(new ColumnConfig("ville", "Ville", 100));
111
		lstColumns.add(new ColumnConfig("ville", "Ville", 100));
108
		lstColumns.add(new ColumnConfig("_courriel_princ_", "Courriel", 200));
112
		lstColumns.add(new ColumnConfig("_courriel_princ_", "Courriel", 200));
109
 
113
 
110
		lstColumns.get(0).setHidden(true);
114
		lstColumns.get(0).setHidden(true);
111
		lstColumns.get(1).setHidden(true);
115
		lstColumns.get(1).setHidden(true);
112
		lstColumns.get(2).setHidden(true);
116
		lstColumns.get(2).setHidden(true);
113
		
117
		
114
		modeleColonnes = new ColumnModel(lstColumns);
118
		modeleColonnes = new ColumnModel(lstColumns);
115
 
119
 
116
		// Définition de la grille
120
		// Définition de la grille
117
		GridSelectionModel<Personne> gsmSelectionGrille = new GridSelectionModel<Personne>();
121
		GridSelectionModel<Personne> gsmSelectionGrille = new GridSelectionModel<Personne>();
118
		gsmSelectionGrille.addSelectionChangedListener(new SelectionChangedListener<Personne>() {
122
		gsmSelectionGrille.addSelectionChangedListener(new SelectionChangedListener<Personne>() {
119
			public void selectionChanged(SelectionChangedEvent<Personne> event) {
123
			public void selectionChanged(SelectionChangedEvent<Personne> event) {
120
				personneSelectionnee = (Personne) event.getSelectedItem();
124
				personneSelectionnee = (Personne) event.getSelectedItem();
121
				indexElementSelectionne = store.indexOf(personneSelectionnee);
125
				indexElementSelectionne = store.indexOf(personneSelectionnee);
122
				clicListe(personneSelectionnee);
126
				clicListe(personneSelectionnee);
123
			}
127
			}
124
		});
128
		});
125
		
129
		
126
		store = new ListStore<Personne>();
130
		store = new ListStore<Personne>();
127
		store.sort("fmt_nom_complet", SortDir.ASC);
131
		store.sort("nom", SortDir.ASC);
128
		
132
		
129
		grille = new Grid<Personne>(store, modeleColonnes);		
133
		grille = new Grid<Personne>(store, modeleColonnes);		
130
		grille.setSelectionModel(gsmSelectionGrille);
134
		grille.setSelectionModel(gsmSelectionGrille);
131
		grille.setWidth("100%");
135
		grille.setWidth("100%");
132
		grille.setAutoExpandColumn("fmt_nom_complet");
136
		grille.setAutoExpandColumn("fmt_nom_complet");
133
		grille.getView().setAutoFill(true);
137
		grille.getView().setAutoFill(true);
134
		grille.getView().setForceFit(true);
138
		grille.getView().setForceFit(true);
135
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
139
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
136
			public void handleEvent(BaseEvent be) {
140
			public void handleEvent(BaseEvent be) {
137
				grille.getStore().sort("fmt_nom_complet", SortDir.ASC);
141
				grille.getStore().sort("nom", SortDir.ASC);
138
				grille.getSelectionModel().select(0, false);
142
				grille.getSelectionModel().select(0, false);
139
			}
143
			}
140
		});
144
		});
141
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>(){
145
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>(){
142
			public void handleEvent(BaseEvent be) {
146
			public void handleEvent(BaseEvent be) {
143
				modifier.fireEvent(Events.Select);
147
				modifier.fireEvent(Events.Select);
144
			}
148
			}
145
		});
149
		});
146
		add(grille);
150
		add(grille);
147
		
151
		
148
		PersonneListe personneListe = new PersonneListe();
152
		PersonneListe personneListe = new PersonneListe();
149
		champFiltreRecherche = new ChampFiltreRecherche(mediateur, toolBar, personneListe);
153
		champFiltreRecherche = new ChampFiltreRecherche(mediateur, toolBar, personneListe);
150
		// Définition de la barre de pagination
154
		// Définition de la barre de pagination
151
		pagination = new BarrePaginationVue(personneListe, mediateur);
155
		pagination = new BarrePaginationVue(personneListe, mediateur);
152
		setBottomComponent(pagination);
156
		setBottomComponent(pagination);
153
	}
157
	}
154
 
158
 
155
	private void clicListe(Personne personne) {
159
	private void clicListe(Personne personne) {
156
		if (personne != null && store.getCount() > 0) {
160
		if (personne != null && store.getCount() > 0) {
157
			mediateur.clicListePersonne(personne);
161
			mediateur.clicListePersonne(personne);
158
		}
162
		}
159
	}
163
	}
160
	
164
	
161
	private void clicSupprimerPersonne(List<Personne> personnesASupprimer) {
165
	private void clicSupprimerPersonne(List<Personne> personnesASupprimer) {
162
		if (store.getCount() > 0) {
166
		if (store.getCount() > 0) {
163
			mediateur.clicSupprimerPersonne(this, personnesASupprimer);
167
			mediateur.clicSupprimerPersonne(this, personnesASupprimer);
164
		}
168
		}
165
	}
169
	}
166
	
170
	
167
	private void gererEtatActivationBouton()	{
171
	private void gererEtatActivationBouton()	{
168
		int nbreElementDuMagazin = store.getCount();
172
		int nbreElementDuMagazin = store.getCount();
169
		ajouter.enable();
173
		ajouter.enable();
170
		if (nbreElementDuMagazin == 0) {
174
		if (nbreElementDuMagazin == 0) {
171
			supprimer.disable();
175
			supprimer.disable();
172
			modifier.disable();
176
			modifier.disable();
173
		} else if (nbreElementDuMagazin > 0) {
177
		} else if (nbreElementDuMagazin > 0) {
174
			modifier.enable();
178
			modifier.enable();
175
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
179
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
176
				supprimer.enable();
180
				supprimer.enable();
177
			}
181
			}
178
		}
182
		}
179
	}
183
	}
180
	
184
	
181
	public void rafraichir(Object nouvellesDonnees) {
185
	public void rafraichir(Object nouvellesDonnees) {
182
		
186
		
183
		if (nouvellesDonnees instanceof PersonneListe) {
187
		if (nouvellesDonnees instanceof PersonneListe) {
184
			PersonneListe listePersonnes = (PersonneListe) nouvellesDonnees;
188
			PersonneListe listePersonnes = (PersonneListe) nouvellesDonnees;
-
 
189
			
-
 
190
			// la grille de gxt est case sensitive, on harmonise donc tous les noms en majuscule et sans espaces
-
 
191
			// au début et à la fin  afin de pouvoir trier correctement 
-
 
192
			// (la colonne nom ne sert qu'au tri et n'est pas affichée)
-
 
193
			for (Iterator<Personne> iterator = listePersonnes.toList().iterator(); iterator.hasNext();) {
-
 
194
				 Personne personne =  iterator.next();
-
 
195
				 personne.setNom(personne.getNom().toUpperCase().trim());
-
 
196
			}
185
			
197
			
186
			champFiltreRecherche.setListePaginable(listePersonnes);
198
			champFiltreRecherche.setListePaginable(listePersonnes);
187
			pagination.setlistePaginable(listePersonnes);
199
			pagination.setlistePaginable(listePersonnes);
188
			pagination.rafraichir(listePersonnes.getPageTable());
200
			pagination.rafraichir(listePersonnes.getPageTable());
189
			
201
			
190
			if (listePersonnes != null) {
202
			if (listePersonnes != null) {
191
				List<Personne> liste = (List<Personne>) listePersonnes.toList();
203
				List<Personne> liste = (List<Personne>) listePersonnes.toList();
192
				store.removeAll();
204
				store.removeAll();
193
				store.add(liste);
205
				store.add(liste);
194
				
-
 
-
 
206
				store.sort("nom", SortDir.ASC);
195
				mediateur.actualiserPanneauCentral();
207
				mediateur.actualiserPanneauCentral();
196
				grille.fireEvent(Events.ViewReady);
208
				grille.fireEvent(Events.ViewReady);
197
			}
209
			}
198
		} else if (nouvellesDonnees instanceof Information)	{
210
		} else if (nouvellesDonnees instanceof Information)	{
199
			Information info = (Information) nouvellesDonnees;
211
			Information info = (Information) nouvellesDonnees;
200
			if (info.getType().equals("maj_utilisateur")) {
212
			if (info.getType().equals("maj_utilisateur")) {
201
				gererEtatActivationBouton();
213
				gererEtatActivationBouton();
202
			} else if(info.getType().equals("personne_modifiee")) {
214
			} else if(info.getType().equals("personne_modifiee")) {
203
				if(personneSelectionnee != null) {
215
				if(personneSelectionnee != null) {
204
					store.remove(indexElementSelectionne);
216
					store.remove(indexElementSelectionne);
205
					personneSelectionnee = null;
217
					personneSelectionnee = null;
206
				}
218
				}
207
				Personne personneModifiee = (Personne)info.getDonnee(0);
219
				Personne personneModifiee = (Personne)info.getDonnee(0);
208
				// au cas ou le bouton appliquer aurait été cliqué avant de valider
220
				// au cas ou le bouton appliquer aurait été cliqué avant de valider
209
				store.remove(personneModifiee);
221
				store.remove(personneModifiee);
210
				store.insert(personneModifiee, indexElementSelectionne);
222
				store.insert(personneModifiee, indexElementSelectionne);
211
				personneSelectionnee = personneModifiee;
223
				personneSelectionnee = personneModifiee;
212
				int indexElementSelectionne = store.indexOf(personneSelectionnee);
224
				int indexElementSelectionne = store.indexOf(personneSelectionnee);
213
				grille.getSelectionModel().select(indexElementSelectionne, false);
225
				grille.getSelectionModel().select(indexElementSelectionne, false);
214
				grille.getView().focusRow(indexElementSelectionne);
226
				grille.getView().focusRow(indexElementSelectionne);
215
				clicListe(personneSelectionnee);
227
				clicListe(personneSelectionnee);
216
			} else if (info.getType().equals("suppression_personne")) 	{
228
			} else if (info.getType().equals("suppression_personne")) 	{
217
				InfoLogger.display("Suppression de personne", info.getMessages().toString());	
229
				InfoLogger.display("Suppression de personne", info.getMessages().toString());	
218
				pagination.getlistePaginable().recharger();
230
				pagination.getlistePaginable().recharger();
219
				gererEtatActivationBouton();
231
				gererEtatActivationBouton();
220
			} else if (info.getType().equals("maj_utilisateur"))	{
232
			} else if (info.getType().equals("maj_utilisateur"))	{
221
				gererEtatActivationBouton();
233
				gererEtatActivationBouton();
222
			} else {
234
			} else {
223
				InfoLogger.display("Erreur", info.getMessages().toString(), true);
235
				InfoLogger.display("Erreur", info.getMessages().toString(), true);
224
			}
236
			}
225
		} else {
237
		} else {
226
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
238
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
227
		}
239
		}
228
		
240
		
229
		layout();
241
		layout();
230
	}
242
	}
231
}
243
}
232
 
244
 
233
 
245
 
234
 
246
 
235
 
247
 
236
 
248
 
237
 
249