Subversion Repositories eFlore/Applications.coel

Rev

Rev 935 | Rev 1041 | 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.structure;
60 jpm 2
 
3
import java.util.ArrayList;
4
import java.util.List;
5
 
6
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.RegistreId;
422 jp_milcent 8
import org.tela_botanica.client.i18n.Constantes;
521 gduche 9
import org.tela_botanica.client.images.Images;
60 jpm 10
import org.tela_botanica.client.interfaces.Rafraichissable;
133 jpm 11
import org.tela_botanica.client.modeles.Information;
156 jp_milcent 12
import org.tela_botanica.client.modeles.Utilisateur;
935 jpm 13
import org.tela_botanica.client.modeles.structure.Structure;
14
import org.tela_botanica.client.modeles.structure.StructureListe;
1040 gduche 15
import org.tela_botanica.client.vues.BarrePaginationVue;
60 jpm 16
 
17
import com.extjs.gxt.ui.client.Registry;
210 jp_milcent 18
import com.extjs.gxt.ui.client.Style.SortDir;
566 jp_milcent 19
import com.extjs.gxt.ui.client.event.BaseEvent;
490 gduche 20
import com.extjs.gxt.ui.client.event.ButtonEvent;
566 jp_milcent 21
import com.extjs.gxt.ui.client.event.Events;
22
import com.extjs.gxt.ui.client.event.Listener;
60 jpm 23
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
24
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
69 jpm 25
import com.extjs.gxt.ui.client.event.SelectionListener;
60 jpm 26
import com.extjs.gxt.ui.client.store.ListStore;
27
import com.extjs.gxt.ui.client.widget.ContentPanel;
133 jpm 28
import com.extjs.gxt.ui.client.widget.Info;
490 gduche 29
import com.extjs.gxt.ui.client.widget.button.Button;
521 gduche 30
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
31
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
32
import com.extjs.gxt.ui.client.widget.grid.Grid;
33
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
60 jpm 34
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
35
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
133 jpm 36
import com.google.gwt.core.client.GWT;
1040 gduche 37
import com.google.gwt.user.client.Window;
60 jpm 38
 
442 jp_milcent 39
public class StructureListeVue extends ContentPanel implements Rafraichissable {
60 jpm 40
 
553 jp_milcent 41
	private Mediateur mediateur = null;
42
	private Constantes i18nC = null;
448 jp_milcent 43
 
521 gduche 44
	private Grid<Structure> grille = null;
60 jpm 45
	private ListStore<Structure> store = null;
521 gduche 46
 
490 gduche 47
	private Button modifier;
48
	private Button supprimer;
49
	private Button ajouter;
1040 gduche 50
 
51
	private BarrePaginationVue pagination = null;
60 jpm 52
 
442 jp_milcent 53
	public StructureListeVue(Mediateur mediateurCourant) {
373 jp_milcent 54
		mediateur = mediateurCourant;
422 jp_milcent 55
		i18nC = mediateur.i18nC;
373 jp_milcent 56
 
553 jp_milcent 57
		setHeading(i18nC.titreStructureListe());
551 jp_milcent 58
		setLayout(new FitLayout());
60 jpm 59
 
60
		ToolBar toolBar = new ToolBar();
490 gduche 61
		ajouter = new Button(i18nC.ajouter());
521 gduche 62
		ajouter.setIcon(Images.ICONES.ajouter());
490 gduche 63
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {
64
			public void componentSelected(ButtonEvent ce) {
156 jp_milcent 65
				mediateur.clicAjouterStructure();
133 jpm 66
			}
69 jpm 67
		});
60 jpm 68
		toolBar.add(ajouter);
69
 
490 gduche 70
		modifier = new Button(i18nC.modifier());
521 gduche 71
		modifier.setIcon(Images.ICONES.formModifier());
490 gduche 72
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {
73
			public void componentSelected(ButtonEvent ce) {
521 gduche 74
				mediateur.clicModifierStructure(grille.getSelectionModel().getSelectedItems());
156 jp_milcent 75
			}
76
		});
60 jpm 77
		toolBar.add(modifier);
78
 
490 gduche 79
		supprimer = new Button(i18nC.supprimer());
521 gduche 80
		supprimer.setIcon(Images.ICONES.supprimer());
490 gduche 81
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {
82
			public void componentSelected(ButtonEvent ce) {
521 gduche 83
				clicSupprimerStructure(grille.getSelectionModel().getSelectedItems());
133 jpm 84
			}
85
		});
60 jpm 86
		toolBar.add(supprimer);
87
 
88
		setTopComponent(toolBar);
89
 
559 jp_milcent 90
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
91
		colonnes.add(new ColumnConfig("ville", "Ville", 150));
92
		colonnes.add(new ColumnConfig("nom", "Nom", 450));
93
		ColumnModel modeleDeColonne = new ColumnModel(colonnes);
521 gduche 94
 
559 jp_milcent 95
		GridSelectionModel<Structure> modeleDeSelection = new GridSelectionModel<Structure>();
96
		modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Structure>() {
60 jpm 97
			public void selectionChanged(SelectionChangedEvent<Structure> event) {
559 jp_milcent 98
				Structure structureSelectionnee = (Structure) event.getSelectedItem();
99
				clicListe(structureSelectionnee);
60 jpm 100
			}
101
		});
521 gduche 102
 
551 jp_milcent 103
		store = new ListStore<Structure>();
104
		store.sort("ville", SortDir.ASC);
105
 
559 jp_milcent 106
		grille = new Grid<Structure>(store, modeleDeColonne);
551 jp_milcent 107
		grille.setWidth("100%");
108
		grille.setAutoExpandColumn("nom");
565 jp_milcent 109
		grille.getView().setAutoFill(true);
110
		grille.getView().setForceFit(true);
559 jp_milcent 111
		grille.setSelectionModel(modeleDeSelection);
566 jp_milcent 112
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
113
			@Override
114
			public void handleEvent(BaseEvent be) {
115
				grille.getSelectionModel().select(0, false);
116
			}
117
		});
671 jp_milcent 118
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>() {
119
			@Override
120
			public void handleEvent(BaseEvent be) {
121
				modifier.fireEvent(Events.Select);
122
			}
123
		});
521 gduche 124
		add(grille);
1040 gduche 125
 
126
		// Définition de la barre de pagination
127
		pagination = new BarrePaginationVue(new StructureListe(), mediateur);
128
		setBottomComponent(pagination);
60 jpm 129
	}
130
 
379 jp_milcent 131
	private void clicListe(Structure structure) {
865 jpm 132
		if (structure != null && store.getCount() > 0) {
133
			mediateur.clicListeStructure(structure);
134
		}
60 jpm 135
	}
448 jp_milcent 136
 
137
	private void clicSupprimerStructure(List<Structure> structuresASupprimer) {
609 jp_milcent 138
		mediateur.clicSupprimerStructure(this, structuresASupprimer);
448 jp_milcent 139
	}
60 jpm 140
 
551 jp_milcent 141
	private void gererEtatActivationBouton() {
142
		int nbreElementDuMagazin = store.getCount();
143
		if (nbreElementDuMagazin == 0) {
144
			supprimer.disable();
145
			modifier.disable();
146
		} else if (nbreElementDuMagazin > 0) {
147
			modifier.enable();
148
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
149
				supprimer.enable();
150
			}
151
		}
152
	}
153
 
635 jp_milcent 154
	public void rafraichir(Object nouvellesDonnees) {
155
		if (nouvellesDonnees instanceof StructureListe) {
156
			StructureListe structures = (StructureListe) nouvellesDonnees;
1040 gduche 157
			System.out.println("rafraichir structure liste");
158
			pagination.setlistePaginable(structures);
159
			pagination.rafraichir(structures.getPageTable());
60 jpm 160
 
556 jp_milcent 161
			if (structures != null) {
685 jp_milcent 162
				List<Structure> liste = structures.toList();
556 jp_milcent 163
				store.removeAll();
164
				store.add(liste);
609 jp_milcent 165
 
556 jp_milcent 166
				gererEtatActivationBouton();
167
 
168
				mediateur.actualiserPanneauCentral();
1040 gduche 169
				grille.fireEvent(Events.ViewReady);
60 jpm 170
			}
635 jp_milcent 171
		} else if (nouvellesDonnees instanceof Information) {
172
			Information info = (Information) nouvellesDonnees;
133 jpm 173
			if (info.getType().equals("suppression_structure")) {
155 jpm 174
				// Affichage d'un message d'information
422 jp_milcent 175
				Info.display(i18nC.suppressionStructure(), info.toString().replaceAll("\n", "<br />"));
923 jpm 176
 
177
				List<Structure> selectionStructure = grille.getSelectionModel().getSelectedItems();
178
 
179
				if (info.toString().replaceAll("\n", "").equals("OK")) {
180
					mediateur.supprimerStructureAPersonne(this, selectionStructure);
181
				}
182
 
609 jp_milcent 183
				// Suppression des structures sélectionnées de la grille
155 jpm 184
				final int taille = selectionStructure.size();
185
				for (int i = 0; i < taille; i++) {
521 gduche 186
					store.remove(selectionStructure.get(i));
155 jpm 187
				}
188
 
551 jp_milcent 189
				gererEtatActivationBouton();
156 jp_milcent 190
			} else if (info.getType().equals("maj_utilisateur")) {
551 jp_milcent 191
				gererEtatActivationBouton();
923 jpm 192
			} else if (info.getType().equals("suppression_structure_a_personne")) {
193
				// Affichage d'un message d'information
194
				Info.display(i18nC.suppressionStructureAPersonne(), info.toString().replaceAll("\n", "<br />"));
133 jpm 195
			}
156 jp_milcent 196
		} else {
635 jp_milcent 197
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
60 jpm 198
		}
156 jp_milcent 199
		layout();
60 jpm 200
	}
201
}