Subversion Repositories eFlore/Applications.coel

Rev

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

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