Rev 817 | Rev 853 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.composants;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.Image;
public class ChampMultiValeursMultiTypes extends ChampMultiValeurs implements Rafraichissable{
private String idListeType;
private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
public ChampMultiValeursMultiTypes() {
super(true, null, 0);
}
public ChampMultiValeursMultiTypes(String label) {
super(true, label, 0);
}
public ChampMultiValeursMultiTypes(String label, int largeurTotale) {
super(true, label, largeurTotale);
}
public void initialiserType(String idListeType, Mediateur mediateur) {
this.idListeType = idListeType;
mediateur.obtenirListeValeurEtRafraichir(this, idListeType);
}
public ListStore getStore() {
return this.types.getStore();
}
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof ValeurListe) {
ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
// Créer une liste de valeurs
List<Valeur> liste = new ArrayList<Valeur>();
for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
liste.add(listeValeurs.get(it.next()));
}
if (listeValeurs.getId().equals(config.getListeId(idListeType))) {
ListStore<Valeur> store = getStore();
store.removeAll();
store.add(liste);
types.setStore(store);
}
}
}
public void ajouterValeur(final String texte, final String type, final String id) {
LayoutContainer colonneLayout = new LayoutContainer();
colonneLayout.setLayout(new ColumnLayout());
valeurs.put(id + "##" + texte, colonneLayout);
Text champTxt = new Text();
champTxt.setText(type + ": ");
int largeurType = type.length() * 10;
colonneLayout.add(champTxt, new ColumnData(largeurType));
Text champTxt2 = new Text();
champTxt2.setText(texte);
colonneLayout.add(champTxt2, new ColumnData(largeurTotale - largeurType - largeurBouton));
Button supprimerBouton = new Button();
supprimerBouton.setIcon(Images.ICONES.supprimer());
supprimerBouton.setText(boutonSupprimerLabel);
supprimerBouton.setData("valeur", id + "##" + texte);
supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String valeur = ce.getComponent().getData("valeur");
LayoutContainer valeurLayout = valeurs.get(valeur);
principalLayout.remove(valeurLayout);
valeurs.remove(valeur);
supprimerValeurDuRecapitulatif(valeur);
actualiserLayoutGlobal();
}
});
colonneLayout.add(supprimerBouton, new ColumnData(largeurBouton));
// Ajout du layout de la valeur au layout principal
principalLayout.add(colonneLayout);
// Ajout de la valeur au champ récapitulatif des valeurs ajoutées
ajouterValeurAuRecapitulatif(texte, id);
reinitialiserChamp();
actualiserLayoutGlobal();
}
public void reinitialiserChamp() {
champTexte.setValue(valeurParDefaut);
types.reset();
}
public void ajouterValeurAuRecapitulatif(String texte, String id) {
String texteRecapitulatif = "";
if (champRecapitulatif.getValue() != null) {
texteRecapitulatif = champRecapitulatif.getValue();
}
texteRecapitulatif += id + "##" + texte + ";;";
champRecapitulatif.setValue(texteRecapitulatif);
}
public void peupler(String chaineExistante) {
if (chaineExistante != null && !chaineExistante.trim().equals("")) {
String[] valeurs = chaineExistante.split(";;");
for (int i = 0; i < valeurs.length; i++) {
String[] idEtValeur = valeurs[i].split("##");
String id = idEtValeur[0];
String valeur = idEtValeur[1];
ListStore<Valeur> store = types.getStore();
Valeur objetValeur = store.findModel("id_valeur",id);
String texte = "";
if (objetValeur!=null) {
texte = objetValeur.getNom();
} else {
texte = id;
}
ajouterValeur(valeur, texte, id);
}
}
}
}