Subversion Repositories eFlore/Applications.coel

Rev

Rev 1633 | Rev 1657 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
935 jpm 1
package org.tela_botanica.client.vues.personne;
127 gduche 2
 
3
import java.util.ArrayList;
4
import java.util.List;
5
 
670 gduche 6
 
127 gduche 7
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.RegistreId;
1633 aurelien 9
import org.tela_botanica.client.composants.ChampFiltreRecherche;
1239 cyprien 10
import org.tela_botanica.client.composants.InfoLogger;
512 gduche 11
import org.tela_botanica.client.images.Images;
127 gduche 12
import org.tela_botanica.client.interfaces.Rafraichissable;
353 gduche 13
import org.tela_botanica.client.modeles.Information;
617 gduche 14
import org.tela_botanica.client.modeles.Utilisateur;
935 jpm 15
import org.tela_botanica.client.modeles.personne.Personne;
16
import org.tela_botanica.client.modeles.personne.PersonneListe;
1613 aurelien 17
import org.tela_botanica.client.modeles.projet.Projet;
1367 cyprien 18
import org.tela_botanica.client.util.Debug;
935 jpm 19
import org.tela_botanica.client.vues.BarrePaginationVue;
617 gduche 20
 
127 gduche 21
import com.extjs.gxt.ui.client.Registry;
377 gduche 22
import com.extjs.gxt.ui.client.Style.SortDir;
566 jp_milcent 23
import com.extjs.gxt.ui.client.event.BaseEvent;
489 gduche 24
import com.extjs.gxt.ui.client.event.ButtonEvent;
566 jp_milcent 25
import com.extjs.gxt.ui.client.event.Events;
26
import com.extjs.gxt.ui.client.event.Listener;
127 gduche 27
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
28
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
29
import com.extjs.gxt.ui.client.event.SelectionListener;
30
import com.extjs.gxt.ui.client.store.ListStore;
31
import com.extjs.gxt.ui.client.widget.ContentPanel;
489 gduche 32
import com.extjs.gxt.ui.client.widget.button.Button;
512 gduche 33
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
34
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
35
import com.extjs.gxt.ui.client.widget.grid.Grid;
36
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
127 gduche 37
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
38
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
278 jp_milcent 39
import com.google.gwt.core.client.GWT;
1630 aurelien 40
import com.google.gwt.i18n.client.Constants;
127 gduche 41
 
436 gduche 42
public class PersonneListeVue extends ContentPanel implements Rafraichissable {
127 gduche 43
 
278 jp_milcent 44
	private Mediateur mediateur = null ;
512 gduche 45
 
46
	private Grid<Personne> grille = null;
865 jpm 47
	private ListStore<Personne> store = null;
1633 aurelien 48
 
49
	private ChampFiltreRecherche champFiltreRecherche = null;
915 jpm 50
	private BarrePaginationVue pagination = null;
1633 aurelien 51
 
915 jpm 52
	private ColumnModel modeleColonnes = null;
53
	private Button ajouter = null;
54
	private Button modifier = null;
55
	private Button supprimer = null;
258 gduche 56
 
1613 aurelien 57
	private int indexElementSelectionne = 0;
58
	private Personne personneSelectionnee = null;
59
 
436 gduche 60
	public PersonneListeVue() {
278 jp_milcent 61
		mediateur = Registry.get(RegistreId.MEDIATEUR);
1630 aurelien 62
		Constants i18nC = mediateur.i18nC;
127 gduche 63
 
865 jpm 64
		setHeading(Mediateur.i18nC.personneListeLabel());
566 jp_milcent 65
		setLayout(new FitLayout());
562 gduche 66
 
127 gduche 67
		//Définition de la barre d'outil
68
		ToolBar toolBar = new ToolBar();
915 jpm 69
		ajouter = new Button(Mediateur.i18nC.ajouter());
512 gduche 70
		ajouter.setIcon(Images.ICONES.ajouter());
489 gduche 71
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {
72
			public void componentSelected(ButtonEvent ce) {
278 jp_milcent 73
				mediateur.clicAjouterPersonne();
127 gduche 74
			}
75
		});
1630 aurelien 76
		ajouter.setToolTip(mediateur.i18nC.indicationCreerUneFiche()+" "+mediateur.i18nC.collectionSingulier());
127 gduche 77
		toolBar.add(ajouter);
78
 
865 jpm 79
		modifier = new Button(Mediateur.i18nC.modifier());
512 gduche 80
		modifier.setIcon(Images.ICONES.formModifier());
489 gduche 81
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {
82
			public void componentSelected(ButtonEvent ce) {
915 jpm 83
				mediateur.clicModifierPersonne(grille.getSelectionModel().getSelectedItems());
217 aurelien 84
			}
85
		});
1630 aurelien 86
		modifier.setToolTip(mediateur.i18nC.indicationModifierUneFiche());
127 gduche 87
		toolBar.add(modifier);
88
 
865 jpm 89
		supprimer = new Button(Mediateur.i18nC.supprimer());
915 jpm 90
		supprimer.setIcon(Images.ICONES.supprimer());
489 gduche 91
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {
92
			public void componentSelected(ButtonEvent ce) {
915 jpm 93
				clicSupprimerPersonne(grille.getSelectionModel().getSelectedItems());
217 aurelien 94
			}
95
		});
1630 aurelien 96
		supprimer.setToolTip(mediateur.i18nC.indicationSupprimerUneFiche());
127 gduche 97
		toolBar.add(supprimer);
98
		setTopComponent(toolBar);
566 jp_milcent 99
 
100
		// Définition des colomnes de la grille:
512 gduche 101
		List<ColumnConfig> lstColumns = new ArrayList<ColumnConfig>();
677 gduche 102
		lstColumns.add(new ColumnConfig("id_personne", "Id", 45));
103
		lstColumns.add(new ColumnConfig("nom", "Nom", 100));
104
		lstColumns.add(new ColumnConfig("prenom", "Prénom", 100));
105
		lstColumns.add(new ColumnConfig("fmt_nom_complet", "Nom Complet", 200));
106
		lstColumns.add(new ColumnConfig("code_postal", "Code postal", 100));
107
		lstColumns.add(new ColumnConfig("ville", "Ville", 100));
947 gduche 108
		lstColumns.add(new ColumnConfig("_courriel_princ_", "Courriel", 200));
677 gduche 109
 
110
		lstColumns.get(0).setHidden(true);
111
		lstColumns.get(1).setHidden(true);
112
		lstColumns.get(2).setHidden(true);
113
 
563 gduche 114
		modeleColonnes = new ColumnModel(lstColumns);
566 jp_milcent 115
 
116
		// Définition de la grille
512 gduche 117
		GridSelectionModel<Personne> gsmSelectionGrille = new GridSelectionModel<Personne>();
118
		gsmSelectionGrille.addSelectionChangedListener(new SelectionChangedListener<Personne>() {
520 gduche 119
			public void selectionChanged(SelectionChangedEvent<Personne> event) {
1613 aurelien 120
				personneSelectionnee = (Personne) event.getSelectedItem();
121
				indexElementSelectionne = store.indexOf(personneSelectionnee);
915 jpm 122
				clicListe(personneSelectionnee);
520 gduche 123
			}
150 gduche 124
		});
287 gduche 125
 
865 jpm 126
		store = new ListStore<Personne>();
127
		store.sort("fmt_nom_complet", SortDir.ASC);
128
 
129
		grille = new Grid<Personne>(store, modeleColonnes);
512 gduche 130
		grille.setSelectionModel(gsmSelectionGrille);
566 jp_milcent 131
		grille.setWidth("100%");
512 gduche 132
		grille.setAutoExpandColumn("fmt_nom_complet");
566 jp_milcent 133
		grille.getView().setAutoFill(true);
134
		grille.getView().setForceFit(true);
135
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
136
			public void handleEvent(BaseEvent be) {
624 gduche 137
				grille.getStore().sort("fmt_nom_complet", SortDir.ASC);
566 jp_milcent 138
				grille.getSelectionModel().select(0, false);
139
			}
140
		});
670 gduche 141
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>(){
142
			public void handleEvent(BaseEvent be) {
143
				modifier.fireEvent(Events.Select);
144
			}
145
		});
562 gduche 146
		add(grille);
512 gduche 147
 
1633 aurelien 148
		PersonneListe personneListe = new PersonneListe();
149
		champFiltreRecherche = new ChampFiltreRecherche(mediateur, toolBar, personneListe);
566 jp_milcent 150
		// Définition de la barre de pagination
1633 aurelien 151
		pagination = new BarrePaginationVue(personneListe, mediateur);
562 gduche 152
		setBottomComponent(pagination);
127 gduche 153
	}
154
 
150 gduche 155
	private void clicListe(Personne personne) {
865 jpm 156
		if (personne != null && store.getCount() > 0) {
157
			mediateur.clicListePersonne(personne);
158
		}
127 gduche 159
	}
915 jpm 160
 
161
	private void clicSupprimerPersonne(List<Personne> personnesASupprimer) {
162
		if (store.getCount() > 0) {
163
			mediateur.clicSupprimerPersonne(this, personnesASupprimer);
164
		}
165
	}
166
 
617 gduche 167
	private void gererEtatActivationBouton()	{
915 jpm 168
		int nbreElementDuMagazin = store.getCount();
169
		ajouter.enable();
170
		if (nbreElementDuMagazin == 0) {
171
			supprimer.disable();
172
			modifier.disable();
173
		} else if (nbreElementDuMagazin > 0) {
174
			modifier.enable();
175
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
176
				supprimer.enable();
177
			}
617 gduche 178
		}
179
	}
180
 
353 gduche 181
	public void rafraichir(Object nouvellesDonnees) {
1367 cyprien 182
 
353 gduche 183
		if (nouvellesDonnees instanceof PersonneListe) {
184
			PersonneListe listePersonnes = (PersonneListe) nouvellesDonnees;
127 gduche 185
 
1633 aurelien 186
			champFiltreRecherche.setListePaginable(listePersonnes);
596 gduche 187
			pagination.setlistePaginable(listePersonnes);
188
			pagination.rafraichir(listePersonnes.getPageTable());
189
 
567 jp_milcent 190
			if (listePersonnes != null) {
191
				List<Personne> liste = (List<Personne>) listePersonnes.toList();
915 jpm 192
				store.removeAll();
596 gduche 193
				store.add(liste);
567 jp_milcent 194
 
195
				mediateur.actualiserPanneauCentral();
649 gduche 196
				grille.fireEvent(Events.ViewReady);
567 jp_milcent 197
			}
417 gduche 198
		} else if (nouvellesDonnees instanceof Information)	{
199
			Information info = (Information) nouvellesDonnees;
1613 aurelien 200
			if (info.getType().equals("maj_utilisateur")) {
201
				gererEtatActivationBouton();
202
			} else if(info.getType().equals("personne_modifiee")) {
203
				if(personneSelectionnee != null) {
204
					store.remove(indexElementSelectionne);
205
					personneSelectionnee = null;
206
				}
207
				Personne personneModifiee = (Personne)info.getDonnee(0);
208
				// au cas ou le bouton appliquer aurait été cliqué avant de valider
209
				store.remove(personneModifiee);
210
				store.insert(personneModifiee, indexElementSelectionne);
1645 aurelien 211
				personneSelectionnee = personneModifiee;
212
				int indexElementSelectionne = store.indexOf(personneSelectionnee);
213
				grille.getSelectionModel().select(indexElementSelectionne, false);
214
				grille.getView().focusRow(indexElementSelectionne);
215
				clicListe(personneSelectionnee);
1613 aurelien 216
			} else if (info.getType().equals("suppression_personne")) 	{
1239 cyprien 217
				InfoLogger.display("Suppression de personne", info.getMessages().toString());
658 gduche 218
				pagination.getlistePaginable().recharger();
915 jpm 219
				gererEtatActivationBouton();
617 gduche 220
			} else if (info.getType().equals("maj_utilisateur"))	{
221
				gererEtatActivationBouton();
222
			} else {
1239 cyprien 223
				InfoLogger.display("Erreur", info.getMessages().toString(), true);
361 jp_milcent 224
			}
225
		} else {
865 jpm 226
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
127 gduche 227
		}
596 gduche 228
 
278 jp_milcent 229
		layout();
127 gduche 230
	}
231
}
189 gduche 232
 
233
 
234
 
235
 
236
 
237