Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1645 Rev 1680
1
package org.tela_botanica.client.vues.structure;
1
package org.tela_botanica.client.vues.structure;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.List;
4
import java.util.List;
5
 
5
 
6
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.RegistreId;
7
import org.tela_botanica.client.RegistreId;
8
import org.tela_botanica.client.composants.ChampFiltreRecherche;
8
import org.tela_botanica.client.composants.ChampFiltreRecherche;
9
import org.tela_botanica.client.composants.InfoLogger;
9
import org.tela_botanica.client.composants.InfoLogger;
10
import org.tela_botanica.client.i18n.Constantes;
10
import org.tela_botanica.client.i18n.Constantes;
11
import org.tela_botanica.client.images.Images;
11
import org.tela_botanica.client.images.Images;
12
import org.tela_botanica.client.interfaces.Rafraichissable;
12
import org.tela_botanica.client.interfaces.Rafraichissable;
13
import org.tela_botanica.client.modeles.Information;
13
import org.tela_botanica.client.modeles.Information;
14
import org.tela_botanica.client.modeles.Utilisateur;
14
import org.tela_botanica.client.modeles.Utilisateur;
15
import org.tela_botanica.client.modeles.personne.Personne;
15
import org.tela_botanica.client.modeles.personne.Personne;
16
import org.tela_botanica.client.modeles.publication.Publication;
16
import org.tela_botanica.client.modeles.publication.Publication;
17
import org.tela_botanica.client.modeles.publication.PublicationListe;
17
import org.tela_botanica.client.modeles.publication.PublicationListe;
18
import org.tela_botanica.client.modeles.structure.Structure;
18
import org.tela_botanica.client.modeles.structure.Structure;
19
import org.tela_botanica.client.modeles.structure.StructureListe;
19
import org.tela_botanica.client.modeles.structure.StructureListe;
20
import org.tela_botanica.client.util.Debug;
20
import org.tela_botanica.client.util.Debug;
21
import org.tela_botanica.client.vues.BarrePaginationVue;
21
import org.tela_botanica.client.vues.BarrePaginationVue;
22
 
22
 
23
import com.extjs.gxt.ui.client.Registry;
23
import com.extjs.gxt.ui.client.Registry;
24
import com.extjs.gxt.ui.client.Style.SortDir;
24
import com.extjs.gxt.ui.client.Style.SortDir;
25
import com.extjs.gxt.ui.client.event.BaseEvent;
25
import com.extjs.gxt.ui.client.event.BaseEvent;
26
import com.extjs.gxt.ui.client.event.ButtonEvent;
26
import com.extjs.gxt.ui.client.event.ButtonEvent;
27
import com.extjs.gxt.ui.client.event.Events;
27
import com.extjs.gxt.ui.client.event.Events;
28
import com.extjs.gxt.ui.client.event.Listener;
28
import com.extjs.gxt.ui.client.event.Listener;
29
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
29
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
30
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
30
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
31
import com.extjs.gxt.ui.client.event.SelectionListener;
31
import com.extjs.gxt.ui.client.event.SelectionListener;
32
import com.extjs.gxt.ui.client.store.ListStore;
32
import com.extjs.gxt.ui.client.store.ListStore;
33
import com.extjs.gxt.ui.client.widget.ContentPanel;
33
import com.extjs.gxt.ui.client.widget.ContentPanel;
34
import com.extjs.gxt.ui.client.widget.button.Button;
34
import com.extjs.gxt.ui.client.widget.button.Button;
35
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
35
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
36
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
36
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
37
import com.extjs.gxt.ui.client.widget.grid.Grid;
37
import com.extjs.gxt.ui.client.widget.grid.Grid;
38
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
38
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
39
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
39
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
40
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
40
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
41
import com.google.gwt.core.client.GWT;
41
import com.google.gwt.core.client.GWT;
42
import com.google.gwt.user.client.Window;
42
import com.google.gwt.user.client.Window;
43
 
43
 
44
public class StructureListeVue extends ContentPanel implements Rafraichissable {
44
public class StructureListeVue extends ContentPanel implements Rafraichissable {
45
	
45
	
46
	private Mediateur mediateur = null;
46
	private Mediateur mediateur = null;
47
	private Constantes i18nC = null;
47
	private Constantes i18nC = null;
48
 
48
 
49
	private Grid<Structure> grille = null;
49
	private Grid<Structure> grille = null;
50
	private ListStore<Structure> store = null;
50
	private ListStore<Structure> store = null;
51
	
51
	
52
	private Button modifier;
52
	private Button modifier;
53
	private Button supprimer;
53
	private Button supprimer;
54
	private Button ajouter;
54
	private Button ajouter;
55
	
55
	
56
	private ChampFiltreRecherche champFiltreRecherche = null;
56
	private ChampFiltreRecherche champFiltreRecherche = null;
57
	private BarrePaginationVue pagination = null;
57
	private BarrePaginationVue pagination = null;
58
	
58
	
59
	private int indexElementSelectionne = 0;
59
	private int indexElementSelectionne = 0;
60
	private Structure structureSelectionnee = null;
60
	private Structure structureSelectionnee = null;
61
 
61
 
62
	public StructureListeVue(Mediateur mediateurCourant) {
62
	public StructureListeVue(Mediateur mediateurCourant) {
63
		mediateur = mediateurCourant;
63
		mediateur = mediateurCourant;
64
		i18nC = mediateur.i18nC;
64
		i18nC = mediateur.i18nC;
65
		
65
		
66
		setHeading(i18nC.titreStructureListe());
66
		setHeadingHtml(i18nC.titreStructureListe());
67
		setLayout(new FitLayout());
67
		setLayout(new FitLayout());
68
		
68
		
69
		ToolBar toolBar = new ToolBar();
69
		ToolBar toolBar = new ToolBar();
70
		ajouter = new Button(i18nC.ajouter());
70
		ajouter = new Button(i18nC.ajouter());
71
		ajouter.setIcon(Images.ICONES.ajouter());
71
		ajouter.setIcon(Images.ICONES.ajouter());
72
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
72
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
73
			public void componentSelected(ButtonEvent ce) {  
73
			public void componentSelected(ButtonEvent ce) {  
74
				mediateur.clicAjouterStructure();
74
				mediateur.clicAjouterStructure();
75
			}
75
			}
76
		});
76
		});
77
		ajouter.setToolTip(i18nC.indicationCreerUneFiche()+" "+i18nC.structureSingulier());
77
		ajouter.setToolTip(i18nC.indicationCreerUneFiche()+" "+i18nC.structureSingulier());
78
		toolBar.add(ajouter);
78
		toolBar.add(ajouter);
79
 
79
 
80
		modifier = new Button(i18nC.modifier());
80
		modifier = new Button(i18nC.modifier());
81
		modifier.setIcon(Images.ICONES.formModifier());
81
		modifier.setIcon(Images.ICONES.formModifier());
82
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {
82
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {
83
			public void componentSelected(ButtonEvent ce) {
83
			public void componentSelected(ButtonEvent ce) {
84
				mediateur.clicModifierStructure(grille.getSelectionModel().getSelectedItems());
84
				mediateur.clicModifierStructure(grille.getSelectionModel().getSelectedItems());
85
			}
85
			}
86
		});
86
		});
87
		modifier.setToolTip(i18nC.indicationModifierUneFiche());
87
		modifier.setToolTip(i18nC.indicationModifierUneFiche());
88
		toolBar.add(modifier);
88
		toolBar.add(modifier);
89
		
89
		
90
		supprimer = new Button(i18nC.supprimer());
90
		supprimer = new Button(i18nC.supprimer());
91
		supprimer.setIcon(Images.ICONES.supprimer());
91
		supprimer.setIcon(Images.ICONES.supprimer());
92
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {
92
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {
93
			public void componentSelected(ButtonEvent ce) {
93
			public void componentSelected(ButtonEvent ce) {
94
				clicSupprimerStructure(grille.getSelectionModel().getSelectedItems());
94
				clicSupprimerStructure(grille.getSelectionModel().getSelectedItems());
95
			}
95
			}
96
		});
96
		});
97
		supprimer.setToolTip(i18nC.indicationSupprimerUneFiche());
97
		supprimer.setToolTip(i18nC.indicationSupprimerUneFiche());
98
		toolBar.add(supprimer);
98
		toolBar.add(supprimer);
99
 
99
 
100
		setTopComponent(toolBar);
100
		setTopComponent(toolBar);
101
 
101
 
102
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
102
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
103
		colonnes.add(new ColumnConfig("ville", "Ville", 150));
103
		colonnes.add(new ColumnConfig("ville", "Ville", 150));
104
		colonnes.add(new ColumnConfig("nom", "Nom", 450));
104
		colonnes.add(new ColumnConfig("nom", "Nom", 450));
105
		ColumnModel modeleDeColonne = new ColumnModel(colonnes);
105
		ColumnModel modeleDeColonne = new ColumnModel(colonnes);
106
		
106
		
107
		GridSelectionModel<Structure> modeleDeSelection = new GridSelectionModel<Structure>();
107
		GridSelectionModel<Structure> modeleDeSelection = new GridSelectionModel<Structure>();
108
		modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Structure>() {
108
		modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Structure>() {
109
			public void selectionChanged(SelectionChangedEvent<Structure> event) {
109
			public void selectionChanged(SelectionChangedEvent<Structure> event) {
110
				if((Structure) event.getSelectedItem() != null) {
110
				if((Structure) event.getSelectedItem() != null) {
111
					structureSelectionnee = (Structure) event.getSelectedItem();
111
					structureSelectionnee = (Structure) event.getSelectedItem();
112
					indexElementSelectionne = store.indexOf(structureSelectionnee);
112
					indexElementSelectionne = store.indexOf(structureSelectionnee);
113
					clicListe(structureSelectionnee);
113
					clicListe(structureSelectionnee);
114
				}
114
				}
115
			}
115
			}
116
		});
116
		});
117
		
117
		
118
		store = new ListStore<Structure>();
118
		store = new ListStore<Structure>();
119
		store.sort("ville", SortDir.ASC);
119
		store.sort("ville", SortDir.ASC);
120
 
120
 
121
		grille = new Grid<Structure>(store, modeleDeColonne);
121
		grille = new Grid<Structure>(store, modeleDeColonne);
122
		grille.setWidth("100%");
122
		grille.setWidth("100%");
123
		grille.setAutoExpandColumn("nom");
123
		grille.setAutoExpandColumn("nom");
124
		grille.getView().setAutoFill(true);
124
		grille.getView().setAutoFill(true);
125
		grille.getView().setForceFit(true);
125
		grille.getView().setForceFit(true);
126
		grille.setSelectionModel(modeleDeSelection);
126
		grille.setSelectionModel(modeleDeSelection);
127
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
127
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
128
			public void handleEvent(BaseEvent be) {
128
			public void handleEvent(BaseEvent be) {
129
				grille.getSelectionModel().select(0, false);
129
				grille.getSelectionModel().select(0, false);
130
			}
130
			}
131
		});
131
		});
132
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>() {
132
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>() {
133
			public void handleEvent(BaseEvent be) {
133
			public void handleEvent(BaseEvent be) {
134
				modifier.fireEvent(Events.Select);
134
				modifier.fireEvent(Events.Select);
135
			}
135
			}
136
		});
136
		});
137
		add(grille);
137
		add(grille);
138
		
138
		
139
		StructureListe structureListe = new StructureListe();
139
		StructureListe structureListe = new StructureListe();
140
		champFiltreRecherche = new ChampFiltreRecherche(mediateurCourant, toolBar, structureListe);
140
		champFiltreRecherche = new ChampFiltreRecherche(mediateurCourant, toolBar, structureListe);
141
		// Définition de la barre de pagination
141
		// Définition de la barre de pagination
142
		pagination = new BarrePaginationVue(structureListe, mediateur);
142
		pagination = new BarrePaginationVue(structureListe, mediateur);
143
		setBottomComponent(pagination);
143
		setBottomComponent(pagination);
144
	}
144
	}
145
 
145
 
146
	private void clicListe(Structure structure) {
146
	private void clicListe(Structure structure) {
147
		if (structure != null && store.getCount() > 0) {
147
		if (structure != null && store.getCount() > 0) {
148
			mediateur.clicListeStructure(structure);
148
			mediateur.clicListeStructure(structure);
149
		}
149
		}
150
	}
150
	}
151
	
151
	
152
	private void clicSupprimerStructure(List<Structure> structuresASupprimer) {
152
	private void clicSupprimerStructure(List<Structure> structuresASupprimer) {
153
		mediateur.clicSupprimerStructure(this, structuresASupprimer);
153
		mediateur.clicSupprimerStructure(this, structuresASupprimer);
154
	}
154
	}
155
 
155
 
156
	private void gererEtatActivationBouton() {
156
	private void gererEtatActivationBouton() {
157
		int nbreElementDuMagazin = store.getCount();
157
		int nbreElementDuMagazin = store.getCount();
158
		if (nbreElementDuMagazin == 0) {
158
		if (nbreElementDuMagazin == 0) {
159
			supprimer.disable();
159
			supprimer.disable();
160
			modifier.disable();
160
			modifier.disable();
161
		} else if (nbreElementDuMagazin > 0) {
161
		} else if (nbreElementDuMagazin > 0) {
162
			modifier.enable();
162
			modifier.enable();
163
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
163
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
164
				supprimer.enable();
164
				supprimer.enable();
165
			}
165
			}
166
		}
166
		}
167
	}
167
	}
168
	
168
	
169
	public void rafraichir(Object nouvellesDonnees) {
169
	public void rafraichir(Object nouvellesDonnees) {
170
		if (nouvellesDonnees instanceof StructureListe) {
170
		if (nouvellesDonnees instanceof StructureListe) {
171
			StructureListe structures = (StructureListe) nouvellesDonnees;
171
			StructureListe structures = (StructureListe) nouvellesDonnees;
172
			
172
			
173
			champFiltreRecherche.setListePaginable(structures);
173
			champFiltreRecherche.setListePaginable(structures);
174
			pagination.setlistePaginable(structures);
174
			pagination.setlistePaginable(structures);
175
			pagination.rafraichir(structures.getPageTable());
175
			pagination.rafraichir(structures.getPageTable());
176
			
176
			
177
			if (structures != null) {
177
			if (structures != null) {
178
				List<Structure> liste = structures.toList();
178
				List<Structure> liste = structures.toList();
179
				store.removeAll();
179
				store.removeAll();
180
				store.add(liste);
180
				store.add(liste);
181
 
181
 
182
				gererEtatActivationBouton();
182
				gererEtatActivationBouton();
183
				
183
				
184
				mediateur.actualiserPanneauCentral();
184
				mediateur.actualiserPanneauCentral();
185
				grille.fireEvent(Events.ViewReady);
185
				grille.fireEvent(Events.ViewReady);
186
			}
186
			}
187
		} else if (nouvellesDonnees instanceof Information) {
187
		} else if (nouvellesDonnees instanceof Information) {
188
			Information info = (Information) nouvellesDonnees;
188
			Information info = (Information) nouvellesDonnees;
189
			if (info.getType().equals("suppression_structure")) {
189
			if (info.getType().equals("suppression_structure")) {
190
				// Affichage d'un message d'information 
190
				// Affichage d'un message d'information 
191
				InfoLogger.display(i18nC.suppressionStructure(), info.toString().replaceAll("\n", "<br />"));
191
				InfoLogger.display(i18nC.suppressionStructure(), info.toString().replaceAll("\n", "<br />"));
192
				
192
				
193
				List<Structure> selectionStructure = grille.getSelectionModel().getSelectedItems();
193
				List<Structure> selectionStructure = grille.getSelectionModel().getSelectedItems();
194
				
194
				
195
				if (info.toString().replaceAll("\n", "").equals("OK")) {
195
				if (info.toString().replaceAll("\n", "").equals("OK")) {
196
					mediateur.supprimerStructureAPersonne(this, selectionStructure);
196
					mediateur.supprimerStructureAPersonne(this, selectionStructure);
197
				}
197
				}
198
				
198
				
199
				// Suppression des structures sélectionnées de la grille
199
				// Suppression des structures sélectionnées de la grille
200
				final int taille = selectionStructure.size();
200
				final int taille = selectionStructure.size();
201
				for (int i = 0; i < taille; i++) {
201
				for (int i = 0; i < taille; i++) {
202
					store.remove(selectionStructure.get(i));
202
					store.remove(selectionStructure.get(i));
203
				}
203
				}
204
				
204
				
205
				gererEtatActivationBouton();
205
				gererEtatActivationBouton();
206
			} else if(info.getType().equals("structure_modifiee")) {
206
			} else if(info.getType().equals("structure_modifiee")) {
207
				Structure structureModifiee = (Structure)info.getDonnee(0);
207
				Structure structureModifiee = (Structure)info.getDonnee(0);
208
				if(structureSelectionnee != null && structureModifiee != null) {
208
				if(structureSelectionnee != null && structureModifiee != null) {
209
					if(structureSelectionnee.getId().equals(structureModifiee.getId())) {
209
					if(structureSelectionnee.getId().equals(structureModifiee.getId())) {
210
						store.remove(indexElementSelectionne);
210
						store.remove(indexElementSelectionne);
211
					} else {
211
					} else {
212
						structureSelectionnee = null;
212
						structureSelectionnee = null;
213
					}
213
					}
214
					// au cas ou le bouton appliquer aurait été cliqué avant de valider
214
					// au cas ou le bouton appliquer aurait été cliqué avant de valider
215
					store.remove(structureModifiee);
215
					store.remove(structureModifiee);
216
					store.insert(structureModifiee, indexElementSelectionne);
216
					store.insert(structureModifiee, indexElementSelectionne);
217
					structureSelectionnee = structureModifiee;
217
					structureSelectionnee = structureModifiee;
218
					int indexElementSelectionne = store.indexOf(structureSelectionnee);
218
					int indexElementSelectionne = store.indexOf(structureSelectionnee);
219
					grille.getSelectionModel().select(indexElementSelectionne, false);
219
					grille.getSelectionModel().select(indexElementSelectionne, false);
220
					grille.getView().focusRow(indexElementSelectionne);
220
					grille.getView().focusRow(indexElementSelectionne);
221
					clicListe(structureSelectionnee);
221
					clicListe(structureSelectionnee);
222
				}
222
				}
223
			} else if (info.getType().equals("maj_utilisateur")) {
223
			} else if (info.getType().equals("maj_utilisateur")) {
224
				gererEtatActivationBouton();
224
				gererEtatActivationBouton();
225
			} else if (info.getType().equals("suppression_structure_a_personne")) {
225
			} else if (info.getType().equals("suppression_structure_a_personne")) {
226
				// Affichage d'un message d'information 
226
				// Affichage d'un message d'information 
227
				InfoLogger.display(i18nC.suppressionStructureAPersonne(), info.toString().replaceAll("\n", "<br />"));
227
				InfoLogger.display(i18nC.suppressionStructureAPersonne(), info.toString().replaceAll("\n", "<br />"));
228
			}
228
			}
229
		} else {
229
		} else {
230
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
230
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
231
		}
231
		}
232
		layout();
232
		layout();
233
	}
233
	}
234
}
234
}