Subversion Repositories eFlore/Applications.coel

Rev

Rev 853 | Rev 861 | 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 java.util.List;
4
 
5
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.RegistreId;
7
import org.tela_botanica.client.images.Images;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.modeles.Configuration;
10
import org.tela_botanica.client.modeles.Valeur;
11
import org.tela_botanica.client.modeles.ValeurListe;
857 jpm 12
import org.tela_botanica.client.modeles.aDonneeListe;
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.form.ComboBox;
23
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
24
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
25
 
857 jpm 26
public class ChampMultiValeursMultiTypes extends ChampMultiValeurs implements Rafraichissable {
721 gduche 27
 
28
	private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
857 jpm 29
	private String idListeType = null;
30
	private String idListeCombo = null;
721 gduche 31
 
32
	public ChampMultiValeursMultiTypes() {
33
		super(true, null, 0);
34
	}
35
 
36
	public ChampMultiValeursMultiTypes(String label) {
37
		super(true, label, 0);
38
	}
39
 
40
	public ChampMultiValeursMultiTypes(String label, int largeurTotale) {
41
		super(true, label, largeurTotale);
42
	}
43
 
857 jpm 44
	public ChampMultiValeursMultiTypes(String label, int largeurTotale, boolean combobox) {
45
		super(true, true, label, largeurTotale);
46
	}
47
 
48
	public void initialiserType(String idListe) {
49
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
50
		idListeType = idListe;
721 gduche 51
		mediateur.obtenirListeValeurEtRafraichir(this, idListeType);
52
	}
53
 
857 jpm 54
	public void initialiserCombobox(String idListe) {
55
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
56
		this.idListeCombo = idListe;
57
		mediateur.obtenirListeValeurEtRafraichir(this, idListeCombo);
721 gduche 58
	}
59
 
60
	public void rafraichir(Object nouvellesDonnees) {
61
		if (nouvellesDonnees instanceof ValeurListe)	{
62
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
63
			if (listeValeurs.getId().equals(config.getListeId(idListeType)))	{
857 jpm 64
				Formulaire.rafraichirComboBox(listeValeurs, types);
65
			} else if (listeValeurs.getId().equals(config.getListeId(idListeCombo)))	{
66
				Formulaire.rafraichirComboBox(listeValeurs, champValeurCombo, "id_valeur");
721 gduche 67
			}
857 jpm 68
		}
721 gduche 69
	}
70
 
857 jpm 71
	public void ajouterValeur(final String texte, final String type, final String id) {
721 gduche 72
		LayoutContainer colonneLayout = new LayoutContainer();
73
		colonneLayout.setLayout(new ColumnLayout());
74
		valeurs.put(id + "##" + texte, colonneLayout);
75
 
76
		Text champTxt = new Text();
77
		champTxt.setText(type + ": ");
78
 
79
		int largeurType = type.length() * 10;
80
		colonneLayout.add(champTxt, new ColumnData(largeurType));
81
 
82
		Text champTxt2 = new Text();
83
		champTxt2.setText(texte);
84
		colonneLayout.add(champTxt2, new ColumnData(largeurTotale - largeurType - largeurBouton));
85
 
86
		Button supprimerBouton = new Button();
87
		supprimerBouton.setIcon(Images.ICONES.supprimer());
88
		supprimerBouton.setText(boutonSupprimerLabel);
89
		supprimerBouton.setData("valeur", id + "##" + texte);
90
		supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
91
			public void componentSelected(ButtonEvent ce) {
92
				String valeur = ce.getComponent().getData("valeur");
93
				LayoutContainer valeurLayout = valeurs.get(valeur);
94
				principalLayout.remove(valeurLayout);
95
 
96
				valeurs.remove(valeur);
97
 
98
				supprimerValeurDuRecapitulatif(valeur);
99
 
100
				actualiserLayoutGlobal();
101
			}
102
		});
103
		colonneLayout.add(supprimerBouton, new ColumnData(largeurBouton));
104
 
105
		// Ajout du layout de la valeur au layout principal
106
		principalLayout.add(colonneLayout);
107
 
108
		// Ajout de la valeur au champ récapitulatif des valeurs ajoutées
857 jpm 109
		if (estComboBox) {
110
			ajouterValeurAuRecapitulatif(texte, id);
111
		} else {
112
			ajouterValeurAuRecapitulatif(champValeurCombo.getValue().getId(), id);
113
		}
721 gduche 114
		reinitialiserChamp();
115
		actualiserLayoutGlobal();
116
	}
117
 
118
	public void ajouterValeurAuRecapitulatif(String texte, String id) {
119
		String texteRecapitulatif = "";
120
		if (champRecapitulatif.getValue() != null)	{
121
			texteRecapitulatif = champRecapitulatif.getValue();
122
		}
123
		texteRecapitulatif += id + "##" + texte + ";;";
124
		champRecapitulatif.setValue(texteRecapitulatif);
125
	}
126
 
127
	public void peupler(String chaineExistante) {
853 gduche 128
		if (valeurs.size()>0)	{
129
			reinitialiser();
130
		}
721 gduche 131
		if (chaineExistante != null && !chaineExistante.trim().equals("")) {
132
			String[] valeurs = chaineExistante.split(";;");
133
			for (int i = 0; i < valeurs.length; i++) {
134
				String[] idEtValeur = valeurs[i].split("##");
135
				String id = idEtValeur[0];
136
				String valeur = idEtValeur[1];
137
 
817 gduche 138
				ListStore<Valeur> store = types.getStore();
139
				Valeur objetValeur = store.findModel("id_valeur",id);
824 gduche 140
				String texte = "";
141
				if (objetValeur!=null)	{
142
					texte = objetValeur.getNom();
143
				} else {
144
					texte = id;
145
				}
721 gduche 146
				ajouterValeur(valeur, texte, id);
147
			}
148
		}
149
	}
150
}