Subversion Repositories eFlore/Applications.coel

Rev

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