Subversion Repositories eFlore/Applications.coel

Rev

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

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