Subversion Repositories eFlore/Applications.coel

Rev

Rev 1136 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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