Subversion Repositories eFlore/Applications.coel

Rev

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

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