Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
721 gduche 1
package org.tela_botanica.client.composants;
2
 
3
import org.tela_botanica.client.Mediateur;
4
import org.tela_botanica.client.RegistreId;
907 jpm 5
import org.tela_botanica.client.configuration.Configuration;
721 gduche 6
import org.tela_botanica.client.images.Images;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.Valeur;
9
import org.tela_botanica.client.modeles.ValeurListe;
955 jpm 10
import org.tela_botanica.client.modeles.aDonnee;
1318 gduche 11
import org.tela_botanica.client.synchronisation.Sequenceur;
857 jpm 12
import org.tela_botanica.client.vues.Formulaire;
721 gduche 13
 
14
import com.extjs.gxt.ui.client.Registry;
15
import com.extjs.gxt.ui.client.event.ButtonEvent;
16
import com.extjs.gxt.ui.client.event.SelectionListener;
17
import com.extjs.gxt.ui.client.store.ListStore;
18
import com.extjs.gxt.ui.client.widget.LayoutContainer;
19
import com.extjs.gxt.ui.client.widget.Text;
20
import com.extjs.gxt.ui.client.widget.button.Button;
21
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
22
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
23
 
857 jpm 24
public class ChampMultiValeursMultiTypes extends ChampMultiValeurs implements Rafraichissable {
721 gduche 25
 
26
	private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
857 jpm 27
	private String idListeType = null;
28
	private String idListeCombo = null;
721 gduche 29
 
30
	public ChampMultiValeursMultiTypes() {
971 gduche 31
		super(false, true, null, 0, 0);
721 gduche 32
	}
33
 
34
	public ChampMultiValeursMultiTypes(String label) {
971 gduche 35
		super(false, true, label, 0, 0);
721 gduche 36
	}
37
 
971 gduche 38
	public ChampMultiValeursMultiTypes(String label, int largeurTotale, int largeurType) {
39
		super(false, true, label, largeurTotale, largeurType);
721 gduche 40
	}
41
 
857 jpm 42
	public ChampMultiValeursMultiTypes(String label, int largeurTotale, boolean combobox) {
861 jpm 43
		super(true, true, label, largeurTotale, largeurTotale);
857 jpm 44
	}
45
 
861 jpm 46
	public ChampMultiValeursMultiTypes(String label, int largeurTotale, int largeurType, boolean combobox) {
47
		super(true, true, label, largeurTotale, largeurType);
48
	}
49
 
857 jpm 50
	public void initialiserType(String idListe) {
1318 gduche 51
		initialiserType(idListe, null);
52
	}
53
 
54
	public void initialiserType(String idListe, Sequenceur sequenceur) {
857 jpm 55
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
56
		idListeType = idListe;
1318 gduche 57
		mediateur.obtenirListeValeurEtRafraichir(this, idListeType, sequenceur);
721 gduche 58
	}
59
 
857 jpm 60
	public void initialiserCombobox(String idListe) {
61
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
62
		this.idListeCombo = idListe;
1318 gduche 63
		mediateur.obtenirListeValeurEtRafraichir(this, idListeCombo, null);
721 gduche 64
	}
65
 
66
	public void rafraichir(Object nouvellesDonnees) {
67
		if (nouvellesDonnees instanceof ValeurListe)	{
68
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
69
			if (listeValeurs.getId().equals(config.getListeId(idListeType)))	{
857 jpm 70
				Formulaire.rafraichirComboBox(listeValeurs, types);
71
			} else if (listeValeurs.getId().equals(config.getListeId(idListeCombo)))	{
72
				Formulaire.rafraichirComboBox(listeValeurs, champValeurCombo, "id_valeur");
721 gduche 73
			}
857 jpm 74
		}
721 gduche 75
	}
76
 
857 jpm 77
	public void ajouterValeur(final String texte, final String type, final String id) {
861 jpm 78
		LayoutContainer colonneConteneur = new LayoutContainer();
79
		colonneConteneur.setLayout(new ColumnLayout());
955 jpm 80
		valeurs.put(id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte, colonneConteneur);
721 gduche 81
 
861 jpm 82
		Text champType = new Text();
83
		champType.setText(type + " : ");
84
		champType.setWidth(largeurType);
85
		colonneConteneur.add(champType, new ColumnData(largeurType));
721 gduche 86
 
861 jpm 87
		Text champValeur = new Text();
88
		champValeur.setText(texte);
89
		champValeur.setWidth(largeurChamp);
90
		colonneConteneur.add(champValeur, new ColumnData(largeurChamp));
721 gduche 91
 
92
		Button supprimerBouton = new Button();
93
		supprimerBouton.setIcon(Images.ICONES.supprimer());
94
		supprimerBouton.setText(boutonSupprimerLabel);
955 jpm 95
		supprimerBouton.setData("valeur", id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte);
721 gduche 96
		supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
97
			public void componentSelected(ButtonEvent ce) {
98
				String valeur = ce.getComponent().getData("valeur");
99
				LayoutContainer valeurLayout = valeurs.get(valeur);
100
				principalLayout.remove(valeurLayout);
101
 
102
				valeurs.remove(valeur);
103
 
104
				supprimerValeurDuRecapitulatif(valeur);
105
 
106
				actualiserLayoutGlobal();
107
			}
108
		});
861 jpm 109
		colonneConteneur.add(supprimerBouton, new ColumnData(largeurBouton));
721 gduche 110
 
111
		// Ajout du layout de la valeur au layout principal
861 jpm 112
		principalLayout.add(colonneConteneur);
721 gduche 113
 
114
		// Ajout de la valeur au champ récapitulatif des valeurs ajoutées
955 jpm 115
		if (estComboBox && champValeurCombo.getValue() != null) {
863 gduche 116
			ajouterValeurAuRecapitulatif(champValeurCombo.getValue().getId(), id);
117
		} else {
857 jpm 118
			ajouterValeurAuRecapitulatif(texte, id);
119
		}
721 gduche 120
		reinitialiserChamp();
121
		actualiserLayoutGlobal();
122
	}
123
 
124
	public void ajouterValeurAuRecapitulatif(String texte, String id) {
125
		String texteRecapitulatif = "";
126
		if (champRecapitulatif.getValue() != null)	{
127
			texteRecapitulatif = champRecapitulatif.getValue();
128
		}
955 jpm 129
		texteRecapitulatif += id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte + aDonnee.SEPARATEUR_VALEURS;
721 gduche 130
		champRecapitulatif.setValue(texteRecapitulatif);
131
	}
132
 
133
	public void peupler(String chaineExistante) {
955 jpm 134
		if (valeurs.size() > 0)	{
853 gduche 135
			reinitialiser();
136
		}
721 gduche 137
		if (chaineExistante != null && !chaineExistante.trim().equals("")) {
955 jpm 138
			String[] valeurs = chaineExistante.split(aDonnee.SEPARATEUR_VALEURS);
721 gduche 139
			for (int i = 0; i < valeurs.length; i++) {
955 jpm 140
				String[] idEtValeur = valeurs[i].split(aDonnee.SEPARATEUR_TYPE_VALEUR);
1367 cyprien 141
				if (idEtValeur.length == 2) {
142
					String idType = idEtValeur[0];
143
					String idValeur = idEtValeur[1];
144
 
145
					ListStore<Valeur> typeStore = types.getStore();
146
					Valeur objetType = typeStore.findModel("id_valeur", idType);
147
					String texteType = "";
148
					if (objetType != null)	{
149
						texteType = objetType.getNom();
150
					} else {
151
						texteType = idType;
152
					}
153
 
154
					String texteValeur = "";
155
					if (champValeurCombo!=null)	{
156
						ListStore<Valeur> valeurStore = champValeurCombo.getStore();
157
						Valeur objetValeur = valeurStore.findModel("id_valeur", idValeur);
158
						if (objetValeur != null)	{
159
							texteValeur = objetValeur.getNom();
160
						}
161
					} else {
162
						texteValeur = idValeur;
163
					}
164
					ajouterValeur(texteValeur, texteType, idType);
824 gduche 165
				} else {
1367 cyprien 166
					InfoLogger.display("ChampMultiValeursMultiTypes > méthode peupler", "Erreur dans le split d'une valeur, chaine="+chaineExistante, true);
824 gduche 167
				}
721 gduche 168
			}
169
		}
170
	}
171
}