Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 935 Rev 1045
1
package org.tela_botanica.client.vues.projet;
1
package org.tela_botanica.client.vues.projet;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.Iterator;
4
import java.util.Iterator;
5
import java.util.List;
5
import java.util.List;
6
 
6
 
7
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.RegistreId;
8
import org.tela_botanica.client.RegistreId;
9
import org.tela_botanica.client.i18n.Constantes;
9
import org.tela_botanica.client.i18n.Constantes;
10
import org.tela_botanica.client.images.Images;
10
import org.tela_botanica.client.images.Images;
11
import org.tela_botanica.client.interfaces.Rafraichissable;
11
import org.tela_botanica.client.interfaces.Rafraichissable;
12
import org.tela_botanica.client.modeles.Information;
12
import org.tela_botanica.client.modeles.Information;
13
import org.tela_botanica.client.modeles.Utilisateur;
13
import org.tela_botanica.client.modeles.Utilisateur;
14
import org.tela_botanica.client.modeles.projet.Projet;
14
import org.tela_botanica.client.modeles.projet.Projet;
15
import org.tela_botanica.client.modeles.projet.ProjetListe;
15
import org.tela_botanica.client.modeles.projet.ProjetListe;
-
 
16
import org.tela_botanica.client.modeles.structure.StructureListe;
16
import org.tela_botanica.client.util.Debug;
17
import org.tela_botanica.client.util.Debug;
-
 
18
import org.tela_botanica.client.vues.BarrePaginationVue;
17
 
19
 
18
import com.extjs.gxt.ui.client.Registry;
20
import com.extjs.gxt.ui.client.Registry;
19
import com.extjs.gxt.ui.client.Style.SortDir;
21
import com.extjs.gxt.ui.client.Style.SortDir;
20
import com.extjs.gxt.ui.client.event.BaseEvent;
22
import com.extjs.gxt.ui.client.event.BaseEvent;
21
import com.extjs.gxt.ui.client.event.ButtonEvent;
23
import com.extjs.gxt.ui.client.event.ButtonEvent;
22
import com.extjs.gxt.ui.client.event.Events;
24
import com.extjs.gxt.ui.client.event.Events;
23
import com.extjs.gxt.ui.client.event.Listener;
25
import com.extjs.gxt.ui.client.event.Listener;
24
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
26
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
25
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
27
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
26
import com.extjs.gxt.ui.client.event.SelectionListener;
28
import com.extjs.gxt.ui.client.event.SelectionListener;
27
import com.extjs.gxt.ui.client.store.ListStore;
29
import com.extjs.gxt.ui.client.store.ListStore;
28
import com.extjs.gxt.ui.client.widget.ContentPanel;
30
import com.extjs.gxt.ui.client.widget.ContentPanel;
29
import com.extjs.gxt.ui.client.widget.Info;
31
import com.extjs.gxt.ui.client.widget.Info;
30
import com.extjs.gxt.ui.client.widget.button.Button;
32
import com.extjs.gxt.ui.client.widget.button.Button;
31
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
33
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
32
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
34
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
33
import com.extjs.gxt.ui.client.widget.grid.Grid;
35
import com.extjs.gxt.ui.client.widget.grid.Grid;
34
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
36
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
35
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
37
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
36
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
38
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
37
import com.google.gwt.core.client.GWT;
39
import com.google.gwt.core.client.GWT;
38
 
40
 
39
public class ProjetListeVue extends ContentPanel implements Rafraichissable {
41
public class ProjetListeVue extends ContentPanel implements Rafraichissable {
40
 
42
 
41
	private Mediateur mediateur = null;
43
	private Mediateur mediateur = null;
42
	private Constantes i18nC = null;
44
	private Constantes i18nC = null;
43
 
45
 
44
	private Grid<Projet> grille = null;
46
	private Grid<Projet> grille = null;
45
	private ListStore<Projet> store = null;
47
	private ListStore<Projet> store = null;
46
	private ColumnModel modeleDesColonnes = null;
48
	private ColumnModel modeleDesColonnes = null;
-
 
49
	private BarrePaginationVue pagination = null;
47
 
50
	
48
	private Button ajouter;
51
	private Button ajouter;
49
	private Button modifier;
52
	private Button modifier;
50
	private Button supprimer;
53
	private Button supprimer;
51
	
54
	
52
	public ProjetListeVue(Mediateur mediateurCourant) {
55
	public ProjetListeVue(Mediateur mediateurCourant) {
53
		super();
56
		super();
54
		mediateur = mediateurCourant;
57
		mediateur = mediateurCourant;
55
		i18nC = Mediateur.i18nC;
58
		i18nC = Mediateur.i18nC;
56
		
59
		
57
		setLayout(new FitLayout());
60
		setLayout(new FitLayout());
58
		setHeading("Projets");
61
		setHeading("Projets");
59
		
62
		
60
		ToolBar toolBar = new ToolBar();
63
		ToolBar toolBar = new ToolBar();
61
		ajouter = new Button(i18nC.ajouter());
64
		ajouter = new Button(i18nC.ajouter());
62
		ajouter.setIcon(Images.ICONES.ajouter());
65
		ajouter.setIcon(Images.ICONES.ajouter());
63
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
66
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
64
			public void componentSelected(ButtonEvent be) {  
67
			public void componentSelected(ButtonEvent be) {  
65
				mediateur.clicAjouterProjet();
68
				mediateur.clicAjouterProjet();
66
			}  
69
			}  
67
		});
70
		});
68
		toolBar.add(ajouter);
71
		toolBar.add(ajouter);
69
 
72
 
70
		modifier = new Button(i18nC.modifier());
73
		modifier = new Button(i18nC.modifier());
71
		modifier.setIcon(Images.ICONES.formModifier());
74
		modifier.setIcon(Images.ICONES.formModifier());
72
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {  
75
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {  
73
			public void componentSelected(ButtonEvent be) { 
76
			public void componentSelected(ButtonEvent be) { 
74
				mediateur.clicModifierProjet(grille.getSelectionModel().getSelectedItems());
77
				mediateur.clicModifierProjet(grille.getSelectionModel().getSelectedItems());
75
			}  
78
			}  
76
		});
79
		});
77
		toolBar.add(modifier);
80
		toolBar.add(modifier);
78
		
81
		
79
		supprimer = new Button(i18nC.supprimer());
82
		supprimer = new Button(i18nC.supprimer());
80
		supprimer.setIcon(Images.ICONES.supprimer());
83
		supprimer.setIcon(Images.ICONES.supprimer());
81
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {  
84
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {  
82
			public void componentSelected(ButtonEvent be) { 
85
			public void componentSelected(ButtonEvent be) { 
83
				mediateur.clicSupprimerProjet(grille.getSelectionModel().getSelectedItems());
86
				mediateur.clicSupprimerProjet(grille.getSelectionModel().getSelectedItems());
84
			}  
87
			}  
85
		});
88
		});
86
		toolBar.add(supprimer);
89
		toolBar.add(supprimer);
87
 
90
 
88
		setTopComponent(toolBar);
91
		setTopComponent(toolBar);
89
 
92
 
90
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
93
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
91
		// ATTENTION : les noms des colonnes doivent correspondre aux noms variables de la classe utilisée dans la liste
94
		// ATTENTION : les noms des colonnes doivent correspondre aux noms variables de la classe utilisée dans la liste
92
		colonnes.add(new ColumnConfig("id_projet", i18nC.id(), 20));
95
		colonnes.add(new ColumnConfig("id_projet", i18nC.id(), 20));
93
		colonnes.add(new ColumnConfig("nom", i18nC.nom(), 200));
96
		colonnes.add(new ColumnConfig("nom", i18nC.nom(), 200));
94
		colonnes.add(new ColumnConfig("abreviation", i18nC.projetAbreviation(), 200));
97
		colonnes.add(new ColumnConfig("abreviation", i18nC.projetAbreviation(), 200));
95
		colonnes.add(new ColumnConfig("resume", i18nC.projetResume(), 300));
98
		colonnes.add(new ColumnConfig("resume", i18nC.projetResume(), 300));
96
		colonnes.add(new ColumnConfig("url", i18nC.projetUrl(), 200));
99
		colonnes.add(new ColumnConfig("url", i18nC.projetUrl(), 200));
97
		colonnes.add(new ColumnConfig("mot_cles", i18nC.projetMotsCles(), 280));
100
		colonnes.add(new ColumnConfig("mot_cles", i18nC.projetMotsCles(), 280));
98
 
101
 
99
		modeleDesColonnes = new ColumnModel(colonnes);
102
		modeleDesColonnes = new ColumnModel(colonnes);
100
 
103
 
101
		GridSelectionModel<Projet> modeleDeSelection = new GridSelectionModel<Projet>();
104
		GridSelectionModel<Projet> modeleDeSelection = new GridSelectionModel<Projet>();
102
		modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Projet>() {
105
		modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Projet>() {
103
			public void selectionChanged(SelectionChangedEvent<Projet> event) {
106
			public void selectionChanged(SelectionChangedEvent<Projet> event) {
104
				Projet projet = (Projet) event.getSelectedItem();
107
				Projet projet = (Projet) event.getSelectedItem();
105
				clicListe(projet);
108
				clicListe(projet);
106
			}
109
			}
107
		});
110
		});
108
		
111
		
109
		store = new ListStore<Projet>();
112
		store = new ListStore<Projet>();
110
		store.sort("id_projet", SortDir.ASC);
113
		store.sort("id_projet", SortDir.ASC);
111
		
114
		
112
		grille = new Grid<Projet>(store, modeleDesColonnes);
115
		grille = new Grid<Projet>(store, modeleDesColonnes);
113
		grille.setWidth("100%");
116
		grille.setWidth("100%");
114
		grille.setAutoExpandColumn("nom");
117
		grille.setAutoExpandColumn("nom");
115
		grille.getView().setAutoFill(true);
118
		grille.getView().setAutoFill(true);
116
		grille.getView().setForceFit(true);
119
		grille.getView().setForceFit(true);
117
		grille.setSelectionModel(modeleDeSelection);
120
		grille.setSelectionModel(modeleDeSelection);
118
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
121
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
119
			@Override
122
			@Override
120
			public void handleEvent(BaseEvent be) {
123
			public void handleEvent(BaseEvent be) {
121
				grille.getSelectionModel().select(0, false);
124
				grille.getSelectionModel().select(0, false);
122
			}
125
			}
123
		});
126
		});
124
		
127
		
125
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>(){
128
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>(){
126
			@Override
129
			@Override
127
			public void handleEvent(BaseEvent be) {
130
			public void handleEvent(BaseEvent be) {
128
				modifier.fireEvent(Events.Select);
131
				modifier.fireEvent(Events.Select);
129
			}
132
			}
130
		});
133
		});
131
		add(grille);
134
		add(grille);
-
 
135
		
-
 
136
		// Définition de la barre de pagination
-
 
137
		pagination = new BarrePaginationVue(new StructureListe(), mediateur);
-
 
138
		setBottomComponent(pagination);
132
	}
139
	}
133
	
140
	
134
	public ListStore<Projet> getStore() {
141
	public ListStore<Projet> getStore() {
135
		return store;
142
		return store;
136
	}
143
	}
137
 
144
 
138
	private void clicListe(Projet projet) {
145
	private void clicListe(Projet projet) {
139
		mediateur.clicListeProjet(projet);
146
		mediateur.clicListeProjet(projet);
140
	}
147
	}
141
 
148
 
142
	private void gererEtatActivationBouton() {
149
	private void gererEtatActivationBouton() {
143
		int nbreElementDuMagazin = store.getCount();
150
		int nbreElementDuMagazin = store.getCount();
144
		ajouter.enable();
151
		ajouter.enable();
145
		if(!((Utilisateur)Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
152
		if(!((Utilisateur)Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
146
			supprimer.disable();
153
			supprimer.disable();
147
			modifier.disable();
154
			modifier.disable();
148
		} else { 
155
		} else { 
149
			if (nbreElementDuMagazin <= 0) {
156
			if (nbreElementDuMagazin <= 0) {
150
				supprimer.disable();
157
				supprimer.disable();
151
				modifier.disable();
158
				modifier.disable();
152
			} else {
159
			} else {
153
				supprimer.enable();
160
				supprimer.enable();
154
				modifier.enable();
161
				modifier.enable();
155
			}
162
			}
156
		}
163
		}
157
	}
164
	}
158
	
165
	
159
	public void rafraichir(Object nouvellesDonnees) {
166
	public void rafraichir(Object nouvellesDonnees) {
160
		if (nouvellesDonnees instanceof ProjetListe) {
167
		if (nouvellesDonnees instanceof ProjetListe) {
161
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
168
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
-
 
169
			pagination.setlistePaginable(projets);
-
 
170
			pagination.rafraichir(projets.getPageTable());
-
 
171
			
162
			if (projets != null) {
172
			if (projets != null) {
163
				List<Projet> projetsListe = projets.toList();
173
				List<Projet> projetsListe = projets.toList();
164
				store.removeAll();
174
				store.removeAll();
165
				if (mediateur.getProjetId() != null) {
175
				if (mediateur.getProjetId() != null) {
166
					String projetIdSelectionne = mediateur.getProjetId();
176
					String projetIdSelectionne = mediateur.getProjetId();
167
					Iterator<Projet> it = projetsListe.iterator();
177
					Iterator<Projet> it = projetsListe.iterator();
168
					while (it.hasNext()) {
178
					while (it.hasNext()) {
169
						Projet projetCourant = it.next();
179
						Projet projetCourant = it.next();
170
						if (projetCourant.getId().equals(projetIdSelectionne)) {
180
						if (projetCourant.getId().equals(projetIdSelectionne)) {
171
							store.add(projetCourant);
181
							store.add(projetCourant);
172
						}
182
						}
173
					}
183
					}
174
				} else {
184
				} else {
175
					store.add(projetsListe);
185
					store.add(projetsListe);
176
				}
186
				}
177
				mediateur.actualiserPanneauCentral();
187
				mediateur.actualiserPanneauCentral();
178
			}
188
			}
179
		} else if (nouvellesDonnees instanceof Information) {
189
		} else if (nouvellesDonnees instanceof Information) {
180
			Information info = (Information) nouvellesDonnees;
190
			Information info = (Information) nouvellesDonnees;
181
			if (info.getType().equals("maj_utilisateur")) {
191
			if (info.getType().equals("maj_utilisateur")) {
182
				gererEtatActivationBouton();
192
				gererEtatActivationBouton();
183
			} else if (info.getType().equals("suppression_projet")) {
193
			} else if (info.getType().equals("suppression_projet")) {
184
				String message = info.toString();
194
				String message = info.toString();
185
				if (info.getDonnee(0) != null) {
195
				if (info.getDonnee(0) != null) {
186
					message = (String) info.getDonnee(0);
196
					message = (String) info.getDonnee(0);
187
				}
197
				}
188
				Info.display(i18nC.projetTitreSuppression(), message);
198
				Info.display(i18nC.projetTitreSuppression(), message);
189
				supprimerProjetsSelectionnees();
199
				supprimerProjetsSelectionnees();
190
				gererEtatActivationBouton();
200
				gererEtatActivationBouton();
191
			}
201
			}
192
		} else {
202
		} else {
193
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
203
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
194
		}
204
		}
195
	}
205
	}
196
 
206
 
197
	public void supprimerProjetsSelectionnees() {
207
	public void supprimerProjetsSelectionnees() {
198
		List<Projet> selPub = grille.getSelectionModel().getSelectedItems();
208
		List<Projet> selPub = grille.getSelectionModel().getSelectedItems();
199
		GWT.log("Le résultat dans supprimer est : "+grille.getSelectionModel().getSelection().size()+" ", null);
209
		GWT.log("Le résultat dans supprimer est : "+grille.getSelectionModel().getSelection().size()+" ", null);
200
		for(Iterator<Projet> it = selPub.iterator(); it.hasNext();) {
210
		for(Iterator<Projet> it = selPub.iterator(); it.hasNext();) {
201
			GWT.log("Le résultat dans rafraichir est : "+grille.getSelectionModel().getSelection().size()+" ", null);
211
			GWT.log("Le résultat dans rafraichir est : "+grille.getSelectionModel().getSelection().size()+" ", null);
202
			grille.getStore().remove(it.next());
212
			grille.getStore().remove(it.next());
203
		}
213
		}
204
		layout(true);
214
		layout(true);
205
	}
215
	}
206
 
216
 
207
}
217
}