Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1246 Rev 1284
1
package org.tela_botanica.client.vues.collection;
1
package org.tela_botanica.client.vues.collection;
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.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.collection.Collection;
15
import org.tela_botanica.client.modeles.collection.Collection;
16
import org.tela_botanica.client.modeles.collection.CollectionListe;
16
import org.tela_botanica.client.modeles.collection.CollectionListe;
17
import org.tela_botanica.client.modeles.publication.Publication;
17
import org.tela_botanica.client.modeles.publication.Publication;
18
import org.tela_botanica.client.modeles.structure.StructureListe;
18
import org.tela_botanica.client.modeles.structure.StructureListe;
19
import org.tela_botanica.client.util.Debug;
19
import org.tela_botanica.client.util.Debug;
20
import org.tela_botanica.client.vues.BarrePaginationVue;
20
import org.tela_botanica.client.vues.BarrePaginationVue;
21
 
21
 
22
import com.extjs.gxt.ui.client.Registry;
22
import com.extjs.gxt.ui.client.Registry;
23
import com.extjs.gxt.ui.client.Style.SortDir;
23
import com.extjs.gxt.ui.client.Style.SortDir;
24
import com.extjs.gxt.ui.client.event.BaseEvent;
24
import com.extjs.gxt.ui.client.event.BaseEvent;
25
import com.extjs.gxt.ui.client.event.ButtonEvent;
25
import com.extjs.gxt.ui.client.event.ButtonEvent;
26
import com.extjs.gxt.ui.client.event.Events;
26
import com.extjs.gxt.ui.client.event.Events;
27
import com.extjs.gxt.ui.client.event.Listener;
27
import com.extjs.gxt.ui.client.event.Listener;
28
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
28
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
29
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
29
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
30
import com.extjs.gxt.ui.client.event.SelectionListener;
30
import com.extjs.gxt.ui.client.event.SelectionListener;
31
import com.extjs.gxt.ui.client.store.ListStore;
31
import com.extjs.gxt.ui.client.store.ListStore;
32
import com.extjs.gxt.ui.client.widget.ContentPanel;
32
import com.extjs.gxt.ui.client.widget.ContentPanel;
33
import com.extjs.gxt.ui.client.widget.Info;
33
import com.extjs.gxt.ui.client.widget.Info;
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
 
42
 
43
public class CollectionListeVue extends ContentPanel implements Rafraichissable {
43
public class CollectionListeVue extends ContentPanel implements Rafraichissable {
44
	
44
	
45
	private Mediateur mediateur = null;
45
	private Mediateur mediateur = null;
46
	private Constantes i18nC = null;
46
	private Constantes i18nC = null;
47
 
47
 
48
	private Grid<Collection> grille = null;
48
	private Grid<Collection> grille = null;
49
	private ListStore<Collection> store = null;
49
	private ListStore<Collection> store = null;
50
 
50
 
51
	private Button modifier;
51
	private Button modifier;
52
	private Button supprimer;
52
	private Button supprimer;
53
	private Button ajouter;
53
	private Button ajouter;
54
	private BarrePaginationVue pagination = null;
54
	private BarrePaginationVue pagination = null;
55
	
55
	
56
	public CollectionListeVue(Mediateur mediateurCourant) {
56
	public CollectionListeVue(Mediateur mediateurCourant) {
57
		mediateur = mediateurCourant;
57
		mediateur = mediateurCourant;
58
		i18nC = Mediateur.i18nC;
58
		i18nC = Mediateur.i18nC;
59
		
59
		
60
		setLayout(new FitLayout());
60
		setLayout(new FitLayout());
61
		setHeading(i18nC.collectionListeTitre());
61
		setHeading(i18nC.collectionListeTitre());
62
		
62
		
63
		ToolBar toolBar = new ToolBar();
63
		ToolBar toolBar = new ToolBar();
64
		ajouter = new Button(i18nC.ajouter());
64
		ajouter = new Button(i18nC.ajouter());
65
		ajouter.setIcon(Images.ICONES.ajouter());
65
		ajouter.setIcon(Images.ICONES.ajouter());
66
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
66
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
67
			public void componentSelected(ButtonEvent ce) {  
67
			public void componentSelected(ButtonEvent ce) {  
68
				mediateur.clicAjouterCollection();
68
				mediateur.clicAjouterCollection();
69
			}
69
			}
70
		});
70
		});
71
		toolBar.add(ajouter);
71
		toolBar.add(ajouter);
72
 
72
 
73
		modifier = new Button(i18nC.modifier());
73
		modifier = new Button(i18nC.modifier());
74
		modifier.setIcon(Images.ICONES.formModifier());
74
		modifier.setIcon(Images.ICONES.formModifier());
75
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {
75
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {
76
			public void componentSelected(ButtonEvent ce) {
76
			public void componentSelected(ButtonEvent ce) {
77
				mediateur.clicModifierCollection(grille.getSelectionModel().getSelectedItems());
77
				mediateur.clicModifierCollection(grille.getSelectionModel().getSelectedItems());
78
			}
78
			}
79
		});
79
		});
80
		toolBar.add(modifier);
80
		toolBar.add(modifier);
81
		
81
		
82
		supprimer = new Button(i18nC.supprimer());
82
		supprimer = new Button(i18nC.supprimer());
83
		supprimer.setIcon(Images.ICONES.supprimer());
83
		supprimer.setIcon(Images.ICONES.supprimer());
84
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {
84
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {
85
			public void componentSelected(ButtonEvent ce) {
85
			public void componentSelected(ButtonEvent ce) {
86
				clicSupprimerCollection(grille.getSelectionModel().getSelectedItems());
86
				clicSupprimerCollection(grille.getSelectionModel().getSelectedItems());
87
			}
87
			}
88
		});
88
		});
89
		toolBar.add(supprimer);
89
		toolBar.add(supprimer);
90
 
90
 
91
		setTopComponent(toolBar);
91
		setTopComponent(toolBar);
92
 
92
 
93
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
93
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
94
		colonnes.add(new ColumnConfig("nom", i18nC.personneNom(), 300));
94
		colonnes.add(new ColumnConfig("nom", i18nC.personneNom(), 300));
95
		colonnes.add(new ColumnConfig("_structure_nom_", i18nC.structure(), 200));
95
		colonnes.add(new ColumnConfig("_structure_nom_", i18nC.structure(), 200));
96
		colonnes.add(new ColumnConfig("_structure_ville_", i18nC.ville(), 150));
96
		colonnes.add(new ColumnConfig("_structure_ville_", i18nC.ville(), 150));
97
		colonnes.get(1).setHidden(true);
97
		colonnes.get(1).setHidden(true);
98
		ColumnModel modeleDeColonne = new ColumnModel(colonnes);
98
		ColumnModel modeleDeColonne = new ColumnModel(colonnes);
99
		
99
		
100
		GridSelectionModel<Collection> modeleDeSelection = new GridSelectionModel<Collection>();
100
		GridSelectionModel<Collection> modeleDeSelection = new GridSelectionModel<Collection>();
101
		modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Collection>() {
101
		modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Collection>() {
102
			public void selectionChanged(SelectionChangedEvent<Collection> event) {
102
			public void selectionChanged(SelectionChangedEvent<Collection> event) {
103
				Collection collectionSelectionnee = (Collection) event.getSelectedItem();
103
				Collection collectionSelectionnee = (Collection) event.getSelectedItem();
104
				clicListe(collectionSelectionnee);
104
				clicListe(collectionSelectionnee);
105
			}
105
			}
106
		});
106
		});
107
		
107
		
108
		store = new ListStore<Collection>();
108
		store = new ListStore<Collection>();
109
		store.sort("nom", SortDir.ASC);
109
		store.sort("nom", SortDir.ASC);
110
		
110
		
111
		grille = new Grid<Collection>(store, modeleDeColonne);
111
		grille = new Grid<Collection>(store, modeleDeColonne);
112
		grille.setWidth("100%");
112
		grille.setWidth("100%");
113
		grille.setAutoExpandColumn("nom");
113
		grille.setAutoExpandColumn("nom");
114
		grille.getView().setAutoFill(true);
114
		grille.getView().setAutoFill(true);
115
		grille.getView().setForceFit(true);
115
		grille.getView().setForceFit(true);
116
		grille.setSelectionModel(modeleDeSelection);
116
		grille.setSelectionModel(modeleDeSelection);
117
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
117
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
118
			public void handleEvent(BaseEvent be) {
118
			public void handleEvent(BaseEvent be) {
119
				grille.getSelectionModel().select(0, false);
119
				grille.getSelectionModel().select(0, false);
120
			}
120
			}
121
		});
121
		});
122
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>() {
122
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>() {
123
			public void handleEvent(BaseEvent be) {
123
			public void handleEvent(BaseEvent be) {
124
				modifier.fireEvent(Events.Select);
124
				modifier.fireEvent(Events.Select);
125
			}
125
			}
126
		});
126
		});
127
		add(grille);
127
		add(grille);
128
		
128
		
129
		// Définition de la barre de pagination
129
		// Définition de la barre de pagination
130
		pagination = new BarrePaginationVue(new CollectionListe(), mediateur);
130
		pagination = new BarrePaginationVue(new CollectionListe(), mediateur);
131
		setBottomComponent(pagination);
131
		setBottomComponent(pagination);
132
	}
132
	}
133
 
133
 
134
	private void clicListe(Collection collection) {
134
	private void clicListe(Collection collection) {
135
		if (collection != null && store.getCount() > 0) {
135
		if (collection != null && store.getCount() > 0) {
136
			mediateur.clicListeCollection(collection);
136
			mediateur.clicListeCollection(collection);
137
		}
137
		}
138
	}
138
	}
139
	
139
 
140
	private void clicSupprimerCollection(List<Collection> collectionsASupprimer) {
140
	private void clicSupprimerCollection(List<Collection> collectionsASupprimer) {
141
		if (store.getCount() > 0) {
141
		if (store.getCount() > 0) {
142
			mediateur.clicSupprimerCollection(this, collectionsASupprimer);
142
			mediateur.clicSupprimerCollection(this, collectionsASupprimer);
143
		}
143
		}
144
	}
144
	}
145
	
145
	
146
	private void gererEtatActivationBouton() {
146
	private void gererEtatActivationBouton() {
147
		int nbreElementDuMagazin = store.getCount();
147
		int nbreElementDuMagazin = store.getCount();
148
		ajouter.enable();
148
		ajouter.enable();
149
		if (nbreElementDuMagazin == 0) {
149
		if (nbreElementDuMagazin == 0) {
150
			supprimer.disable();
150
			supprimer.disable();
151
			modifier.disable();
151
			modifier.disable();
152
		} else if (nbreElementDuMagazin > 0) {
152
		} else if (nbreElementDuMagazin > 0) {
153
			modifier.enable();
153
			modifier.enable();
154
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
154
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
155
				supprimer.enable();
155
				supprimer.enable();
156
			}
156
			}
157
		}
157
		}
158
	}
158
	}
159
 
159
 
160
	public void rafraichir(Object nouvellesDonnees) {
160
	public void rafraichir(Object nouvellesDonnees) {
161
		if (nouvellesDonnees instanceof CollectionListe) {
161
		if (nouvellesDonnees instanceof CollectionListe) {
162
			CollectionListe collections = (CollectionListe) nouvellesDonnees;
162
			CollectionListe collections = (CollectionListe) nouvellesDonnees;
163
 
163
 
164
			pagination.setlistePaginable(collections);
164
			pagination.setlistePaginable(collections);
165
			int[] pt = collections.getPageTable();
165
			int[] pt = collections.getPageTable();
166
			pagination.rafraichir(collections.getPageTable());
166
			pagination.rafraichir(collections.getPageTable());
167
			
167
			
168
			if (collections != null) {			
168
			if (collections != null) {
169
				List<Collection> liste = collections.toList();
169
				List<Collection> liste = collections.toList();
170
				store.removeAll();
170
				store.removeAll();
171
				store.add(liste);
171
				store.add(liste);
172
	
172
	
173
				mediateur.actualiserPanneauCentral();
173
				mediateur.actualiserPanneauCentral();
174
			}
174
			}
175
		} else if (nouvellesDonnees instanceof Information) {
175
		} else if (nouvellesDonnees instanceof Information) {
176
			Information info = (Information) nouvellesDonnees;
176
			Information info = (Information) nouvellesDonnees;
177
			if (info.getType().equals("maj_utilisateur")) {
177
			if (info.getType().equals("maj_utilisateur")) {
178
				gererEtatActivationBouton();
178
				gererEtatActivationBouton();
179
			} else if (info.getType().equals("suppression_collection")) {
179
			} else if (info.getType().equals("suppression_collection")) {
180
				// Affichage d'un message d'information 
180
				// Affichage d'un message d'information 
181
				InfoLogger.display(i18nC.suppressionCollection(), info.toString().replaceAll("\n", "<br />"));
181
				InfoLogger.display(i18nC.suppressionCollection(), info.toString().replaceAll("\n", "<br />"));
182
 
182
 
183
				supprimerCollectionsSelectionnees();
183
				supprimerCollectionsSelectionnees();
184
				
184
				
185
				gererEtatActivationBouton();
185
				gererEtatActivationBouton();
186
			}
186
			}
187
		} else {
187
		} else {
188
			Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
188
			Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
189
		}
189
		}
190
		layout();
190
		layout();
191
	}
191
	}
192
	
192
	
193
	private void supprimerCollectionsSelectionnees() {
193
	private void supprimerCollectionsSelectionnees() {
194
		List<Collection> collectionsSelectionnees = grille.getSelectionModel().getSelectedItems();
194
		List<Collection> collectionsSelectionnees = grille.getSelectionModel().getSelectedItems();
195
		Iterator<Collection> it = collectionsSelectionnees.iterator();
195
		Iterator<Collection> it = collectionsSelectionnees.iterator();
196
		while (it.hasNext()) {
196
		while (it.hasNext()) {
197
			grille.getStore().remove(it.next());
197
			grille.getStore().remove(it.next());
198
		}
198
		}
199
		layout(true);
199
		layout(true);
200
	}
200
	}
201
}
201
}