Subversion Repositories eFlore/Applications.coel

Rev

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