Subversion Repositories eFlore/Applications.coel

Rev

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

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