Subversion Repositories eFlore/Applications.coel

Rev

Rev 1417 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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