Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 566 Rev 567
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
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.images.Images;
8
import org.tela_botanica.client.images.Images;
9
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.interfaces.Rafraichissable;
10
import org.tela_botanica.client.modeles.Information;
10
import org.tela_botanica.client.modeles.Information;
11
import org.tela_botanica.client.modeles.Personne;
11
import org.tela_botanica.client.modeles.Personne;
12
import org.tela_botanica.client.modeles.PersonneListe;
12
import org.tela_botanica.client.modeles.PersonneListe;
13
import com.extjs.gxt.ui.client.Registry;
13
import com.extjs.gxt.ui.client.Registry;
14
import com.extjs.gxt.ui.client.Style.SortDir;
14
import com.extjs.gxt.ui.client.Style.SortDir;
15
import com.extjs.gxt.ui.client.data.BasePagingLoader;
15
import com.extjs.gxt.ui.client.data.BasePagingLoader;
16
import com.extjs.gxt.ui.client.data.ModelData;
16
import com.extjs.gxt.ui.client.data.ModelData;
17
import com.extjs.gxt.ui.client.data.PagingLoadResult;
17
import com.extjs.gxt.ui.client.data.PagingLoadResult;
18
import com.extjs.gxt.ui.client.data.PagingLoader;
18
import com.extjs.gxt.ui.client.data.PagingLoader;
19
import com.extjs.gxt.ui.client.data.PagingModelMemoryProxy;
19
import com.extjs.gxt.ui.client.data.PagingModelMemoryProxy;
20
import com.extjs.gxt.ui.client.event.BaseEvent;
20
import com.extjs.gxt.ui.client.event.BaseEvent;
21
import com.extjs.gxt.ui.client.event.ButtonEvent;
21
import com.extjs.gxt.ui.client.event.ButtonEvent;
22
import com.extjs.gxt.ui.client.event.Events;
22
import com.extjs.gxt.ui.client.event.Events;
23
import com.extjs.gxt.ui.client.event.Listener;
23
import com.extjs.gxt.ui.client.event.Listener;
24
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
24
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
25
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
25
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
26
import com.extjs.gxt.ui.client.event.SelectionListener;
26
import com.extjs.gxt.ui.client.event.SelectionListener;
27
import com.extjs.gxt.ui.client.store.ListStore;
27
import com.extjs.gxt.ui.client.store.ListStore;
28
import com.extjs.gxt.ui.client.widget.ContentPanel;
28
import com.extjs.gxt.ui.client.widget.ContentPanel;
29
import com.extjs.gxt.ui.client.widget.Info;
29
import com.extjs.gxt.ui.client.widget.Info;
30
import com.extjs.gxt.ui.client.widget.button.Button;
30
import com.extjs.gxt.ui.client.widget.button.Button;
31
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
31
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
32
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
32
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
33
import com.extjs.gxt.ui.client.widget.grid.Grid;
33
import com.extjs.gxt.ui.client.widget.grid.Grid;
34
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
34
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
35
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
35
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
36
import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
36
import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
37
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
37
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
38
import com.google.gwt.core.client.GWT;
38
import com.google.gwt.core.client.GWT;
39
import com.google.gwt.i18n.client.Dictionary;
39
import com.google.gwt.i18n.client.Dictionary;
40
 
40
 
41
public class PersonneListeVue extends ContentPanel implements Rafraichissable {
41
public class PersonneListeVue extends ContentPanel implements Rafraichissable {
42
	
42
	
43
	private Mediateur mediateur = null ;
43
	private Mediateur mediateur = null ;
44
	
44
	
45
	private Grid<Personne> grille = null;
45
	private Grid<Personne> grille = null;
46
	private Personne personneSelectionnee = null;
46
	private Personne personneSelectionnee = null;
47
	private PagingToolBar pagination;
47
	private PagingToolBar pagination;
48
	private ColumnModel modeleColonnes;
48
	private ColumnModel modeleColonnes;
49
	private final int nbElementsPage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
49
	private final int nbElementsPage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
50
	
50
	
51
	public PersonneListeVue() {
51
	public PersonneListeVue() {
52
		mediateur = Registry.get(RegistreId.MEDIATEUR);
52
		mediateur = Registry.get(RegistreId.MEDIATEUR);
53
		
53
		
54
		setHeading(mediateur.i18nC.personneListeLabel());
54
		setHeading(mediateur.i18nC.personneListeLabel());
55
		setLayout(new FitLayout());
55
		setLayout(new FitLayout());
56
		
56
		
57
		//Définition de la barre d'outil
57
		//Définition de la barre d'outil
58
		ToolBar toolBar = new ToolBar();
58
		ToolBar toolBar = new ToolBar();
59
		Button ajouter = new Button(mediateur.i18nC.ajouter());
59
		Button ajouter = new Button(mediateur.i18nC.ajouter());
60
		ajouter.setIcon(Images.ICONES.ajouter());
60
		ajouter.setIcon(Images.ICONES.ajouter());
61
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
61
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
62
			public void componentSelected(ButtonEvent ce) {  
62
			public void componentSelected(ButtonEvent ce) {  
63
				mediateur.clicAjouterPersonne();
63
				mediateur.clicAjouterPersonne();
64
			}  
64
			}  
65
		});
65
		});
66
		toolBar.add(ajouter);
66
		toolBar.add(ajouter);
67
		final Rafraichissable r = this ;
67
		final Rafraichissable r = this ;
68
 
68
 
69
		final Button modifier = new Button(mediateur.i18nC.modifier());
69
		final Button modifier = new Button(mediateur.i18nC.modifier());
70
		modifier.setIcon(Images.ICONES.formModifier());
70
		modifier.setIcon(Images.ICONES.formModifier());
71
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {  
71
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {  
72
			public void componentSelected(ButtonEvent ce) {  
72
			public void componentSelected(ButtonEvent ce) {  
73
				mediateur.clicModifierPersonne(personneSelectionnee);
73
				mediateur.clicModifierPersonne(personneSelectionnee);
74
			}  
74
			}  
75
		});
75
		});
76
		toolBar.add(modifier);
76
		toolBar.add(modifier);
77
		
77
		
78
		final Button supprimer = new Button(mediateur.i18nC.supprimer());
78
		final Button supprimer = new Button(mediateur.i18nC.supprimer());
79
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {  
79
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {  
80
			public void componentSelected(ButtonEvent ce) {  
80
			public void componentSelected(ButtonEvent ce) {  
81
				mediateur.clicSupprimerPersonne(r, grille.getSelectionModel().getSelectedItems());
81
				mediateur.clicSupprimerPersonne(r, grille.getSelectionModel().getSelectedItems());
82
			}  
82
			}  
83
		});
83
		});
84
		supprimer.setIcon(Images.ICONES.supprimer());
84
		supprimer.setIcon(Images.ICONES.supprimer());
85
		toolBar.add(supprimer);
85
		toolBar.add(supprimer);
86
 
86
 
87
		setTopComponent(toolBar);
87
		setTopComponent(toolBar);
88
 
88
 
89
		// Définition des colomnes de la grille:
89
		// Définition des colomnes de la grille:
90
		List<ColumnConfig> lstColumns = new ArrayList<ColumnConfig>();
90
		List<ColumnConfig> lstColumns = new ArrayList<ColumnConfig>();
91
		ColumnConfig ccId = new ColumnConfig("id_personne", "Id", 45);
91
		ColumnConfig ccId = new ColumnConfig("id_personne", "Id", 45);
92
		lstColumns.add(ccId);
92
		lstColumns.add(ccId);
93
		ColumnConfig ccFmtNomComplet = new ColumnConfig("fmt_nom_complet", "Nom Complet", 200);
93
		ColumnConfig ccFmtNomComplet = new ColumnConfig("fmt_nom_complet", "Nom Complet", 200);
94
		lstColumns.add(ccFmtNomComplet);
94
		lstColumns.add(ccFmtNomComplet);
95
		ColumnConfig ccCodePostal = new ColumnConfig("code_postal", "Code postal", 100);
95
		ColumnConfig ccCodePostal = new ColumnConfig("code_postal", "Code postal", 100);
96
		lstColumns.add(ccCodePostal);
96
		lstColumns.add(ccCodePostal);
97
		ColumnConfig ccVille = new ColumnConfig("ville", "Ville", 100);
97
		ColumnConfig ccVille = new ColumnConfig("ville", "Ville", 100);
98
		lstColumns.add(ccVille);
98
		lstColumns.add(ccVille);
99
		ColumnConfig ccCourriel = new ColumnConfig("courriel_princ", "Courriel", 200);
99
		ColumnConfig ccCourriel = new ColumnConfig("courriel_princ", "Courriel", 200);
100
		lstColumns.add(ccCourriel);
100
		lstColumns.add(ccCourriel);
101
		ColumnConfig ccNom = new ColumnConfig("nom", "Nom", 100);
101
		ColumnConfig ccNom = new ColumnConfig("nom", "Nom", 100);
102
		ccNom.setHidden(true);
102
		ccNom.setHidden(true);
103
		lstColumns.add(ccNom);
103
		lstColumns.add(ccNom);
104
		ColumnConfig ccPrenom = new ColumnConfig("prenom", "Prénom", 100);
104
		ColumnConfig ccPrenom = new ColumnConfig("prenom", "Prénom", 100);
105
		ccPrenom.setHidden(true);
105
		ccPrenom.setHidden(true);
106
		lstColumns.add(ccPrenom);
106
		lstColumns.add(ccPrenom);
107
		modeleColonnes = new ColumnModel(lstColumns);
107
		modeleColonnes = new ColumnModel(lstColumns);
108
 
108
 
109
		// Définition de la grille
109
		// Définition de la grille
110
		GridSelectionModel<Personne> gsmSelectionGrille = new GridSelectionModel<Personne>();
110
		GridSelectionModel<Personne> gsmSelectionGrille = new GridSelectionModel<Personne>();
111
		gsmSelectionGrille.addSelectionChangedListener(new SelectionChangedListener<Personne>() {
111
		gsmSelectionGrille.addSelectionChangedListener(new SelectionChangedListener<Personne>() {
112
			public void selectionChanged(SelectionChangedEvent<Personne> event) {
112
			public void selectionChanged(SelectionChangedEvent<Personne> event) {
113
				Personne p = (Personne) event.getSelectedItem();
113
				Personne p = (Personne) event.getSelectedItem();
114
				personneSelectionnee = p;
114
				personneSelectionnee = p;
115
				clicListe(p);
115
				clicListe(p);
116
			}
116
			}
117
		});
117
		});
118
		
118
		
119
		grille = new Grid<Personne>( new ListStore<Personne>(), modeleColonnes);		
119
		grille = new Grid<Personne>( new ListStore<Personne>(), modeleColonnes);		
120
		grille.setSelectionModel(gsmSelectionGrille);
120
		grille.setSelectionModel(gsmSelectionGrille);
121
		grille.setWidth("100%");
121
		grille.setWidth("100%");
122
		grille.setAutoExpandColumn("fmt_nom_complet");
122
		grille.setAutoExpandColumn("fmt_nom_complet");
123
		grille.getView().setAutoFill(true);
123
		grille.getView().setAutoFill(true);
124
		grille.getView().setForceFit(true);
124
		grille.getView().setForceFit(true);
125
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
125
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
126
			@Override
126
			@Override
127
			public void handleEvent(BaseEvent be) {
127
			public void handleEvent(BaseEvent be) {
128
				grille.getSelectionModel().select(0, false);
128
				grille.getSelectionModel().select(0, false);
129
			}
129
			}
130
		});
130
		});
131
		add(grille);
131
		add(grille);
132
		
132
		
133
		// Définition de la barre de pagination
133
		// Définition de la barre de pagination
134
		pagination = new PagingToolBar(nbElementsPage);
134
		pagination = new PagingToolBar(nbElementsPage);
135
		setBottomComponent(pagination);
135
		setBottomComponent(pagination);
136
	}
136
	}
137
 
137
 
138
	private void clicListe(Personne personne) {
138
	private void clicListe(Personne personne) {
139
		mediateur.clicListePersonne(personne);
139
		mediateur.clicListePersonne(personne);
140
	}
140
	}
141
 
141
 
142
	public void rafraichir(Object nouvellesDonnees) {
142
	public void rafraichir(Object nouvellesDonnees) {
143
		if (nouvellesDonnees instanceof PersonneListe) {
143
		if (nouvellesDonnees instanceof PersonneListe) {
144
			PersonneListe listePersonnes = (PersonneListe) nouvellesDonnees;
144
			PersonneListe listePersonnes = (PersonneListe) nouvellesDonnees;
145
			List<Personne> liste = (List<Personne>) listePersonnes.toList();
-
 
146
			
-
 
147
			PagingModelMemoryProxy proxy = new PagingModelMemoryProxy(liste);  
-
 
148
			PagingLoader<PagingLoadResult<ModelData>> loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy);
-
 
149
		    loader.setRemoteSort(true); 
-
 
150
		    pagination.bind(loader);
-
 
151
		    loader.load(0, nbElementsPage);
-
 
152
			
-
 
153
			ListStore<Personne> store = new ListStore<Personne>(loader);
-
 
154
			grille.reconfigure(store, modeleColonnes);
-
 
155
			
-
 
156
			mediateur.actualiserPanneauCentral();
-
 
157
			store.sort("fmt_nom_complet", SortDir.ASC);
-
 
-
 
145
			
-
 
146
			if (listePersonnes != null) {
-
 
147
				List<Personne> liste = (List<Personne>) listePersonnes.toList();
-
 
148
				
-
 
149
				PagingModelMemoryProxy proxy = new PagingModelMemoryProxy(liste);
-
 
150
				PagingLoader<PagingLoadResult<ModelData>> loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy);
-
 
151
			    loader.setRemoteSort(true); 
-
 
152
			    pagination.bind(loader);
-
 
153
			    
-
 
154
			    loader.load(0, nbElementsPage);
-
 
155
				
-
 
156
				ListStore<Personne> store = new ListStore<Personne>(loader);
-
 
157
				grille.reconfigure(store, modeleColonnes);
-
 
158
				
-
 
159
				mediateur.actualiserPanneauCentral();
-
 
160
				store.sort("fmt_nom_complet", SortDir.ASC);
158
			
161
			}
159
		} else if (nouvellesDonnees instanceof Information)	{
162
		} else if (nouvellesDonnees instanceof Information)	{
160
			Information info = (Information) nouvellesDonnees;
163
			Information info = (Information) nouvellesDonnees;
161
			if (info.getType().equals("suppression_personne")) 	{
164
			if (info.getType().equals("suppression_personne")) 	{
162
				Info.display("Suppression de personne", info.getMessages().toString());	
165
				Info.display("Suppression de personne", info.getMessages().toString());	
163
				List<Personne> selectionPersonnes = grille.getSelectionModel().getSelectedItems();
166
				List<Personne> selectionPersonnes = grille.getSelectionModel().getSelectedItems();
164
				final int taille = selectionPersonnes.size();
167
				final int taille = selectionPersonnes.size();
165
				for (int i = 0; i < taille; i++) {
168
				for (int i = 0; i < taille; i++) {
166
					grille.getStore().remove(selectionPersonnes.get(i));
169
					grille.getStore().remove(selectionPersonnes.get(i));
167
				}
170
				}
168
			} else	{
171
			} else	{
169
				Info.display("Erreur", info.getMessages().toString());
172
				Info.display("Erreur", info.getMessages().toString());
170
			}
173
			}
171
		} else {
174
		} else {
172
			GWT.log(mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
175
			GWT.log(mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
173
		}
176
		}
174
		layout();
177
		layout();
175
	}
178
	}
176
}
179
}
177
 
180
 
178
 
181
 
179
 
182
 
180
 
183
 
181
 
184
 
182
 
185