Rev 1513 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.composants;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.RegistreId;import org.tela_botanica.client.configuration.Configuration;import org.tela_botanica.client.images.Images;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Valeur;import org.tela_botanica.client.modeles.ValeurListe;import org.tela_botanica.client.modeles.aDonnee;import org.tela_botanica.client.synchronisation.Sequenceur;import org.tela_botanica.client.util.Debug;import org.tela_botanica.client.vues.Formulaire;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.layout.ColumnData;import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;public class ChampMultiValeursMultiTypes extends ChampMultiValeurs implements Rafraichissable {private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);private String idListeType = null;private String idListeCombo = null;public ChampMultiValeursMultiTypes() {super(false, true, null, 0, 0);}public ChampMultiValeursMultiTypes(String label) {super(false, true, label, 0, 0);}public ChampMultiValeursMultiTypes(String label, int largeurTotale, int largeurType) {super(false, true, label, largeurTotale, largeurType);}public ChampMultiValeursMultiTypes(String label, int largeurTotale, boolean combobox) {super(true, true, label, largeurTotale, largeurTotale);}public ChampMultiValeursMultiTypes(String label, int largeurTotale, int largeurType, boolean combobox) {super(true, true, label, largeurTotale, largeurType);}public void initialiserType(String idListe) {initialiserType(idListe, null);}public void initialiserType(String idListe, Sequenceur sequenceur) {Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);idListeType = idListe;mediateur.obtenirListeValeurEtRafraichir(this, idListeType, sequenceur);}public void initialiserCombobox(String idListe) {Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);this.idListeCombo = idListe;mediateur.obtenirListeValeurEtRafraichir(this, idListeCombo, null);}public void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof ValeurListe) {ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;if (listeValeurs.getId().equals(config.getListeId(idListeType))) {Formulaire.rafraichirComboBox(listeValeurs, types);} else if (listeValeurs.getId().equals(config.getListeId(idListeCombo))) {Formulaire.rafraichirComboBox(listeValeurs, champValeurCombo, "id_valeur");}}}public void ajouterValeur(final String texte, final String type, final String id) {LayoutContainer colonneConteneur = new LayoutContainer();colonneConteneur.setLayout(new ColumnLayout());valeurs.put(id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte, colonneConteneur);Text champType = new Text();champType.setText(type + " : ");champType.setWidth(largeurType);colonneConteneur.add(champType, new ColumnData(largeurType));// on recupere le nom de la valeur à partir de son idString texteValeur = texte;if (estComboBox) {ListStore<Valeur> valeursStore = champValeurCombo.getStore();Valeur objetValeur = valeursStore.findModel("id_valeur", texte);if (objetValeur != null) {texteValeur = objetValeur.getNom();}}Text champValeur = new Text();champValeur.setText(texteValeur);champValeur.setWidth(largeurChamp);colonneConteneur.add(champValeur, new ColumnData(largeurChamp));Button supprimerBouton = new Button();supprimerBouton.setIcon(Images.ICONES.supprimer());supprimerBouton.setText(boutonSupprimerLabel);supprimerBouton.setData("valeur", id + aDonnee.SEPARATEUR_TYPE_VALEUR + 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();}});colonneConteneur.add(supprimerBouton, new ColumnData(largeurBouton));// Ajout du layout de la valeur au layout principalprincipalLayout.add(colonneConteneur);// Ajout de la valeur au champ récapitulatif des valeurs ajoutéesif (estComboBox && champValeurCombo.getValue() != null) {ajouterValeurAuRecapitulatif(champValeurCombo.getValue().getId(), id);} else {ajouterValeurAuRecapitulatif(texte, id);}reinitialiserChamp();actualiserLayoutGlobal();}public void ajouterValeurAuRecapitulatif(String texte, String id) {String texteRecapitulatif = "";if (champRecapitulatif.getValue() != null) {texteRecapitulatif = champRecapitulatif.getValue();}texteRecapitulatif += id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte + aDonnee.SEPARATEUR_VALEURS;champRecapitulatif.setValue(texteRecapitulatif);}public void peupler(String chaineExistante) {if (valeurs.size() > 0) {reinitialiser();}if (chaineExistante != null && !chaineExistante.trim().equals("")) {String[] valeurs = chaineExistante.split(aDonnee.SEPARATEUR_VALEURS);for (int i = 0; i < valeurs.length; i++) {String[] idEtValeur = valeurs[i].split(aDonnee.SEPARATEUR_TYPE_VALEUR);if (idEtValeur.length == 2) {String idType = idEtValeur[0];String idValeur = idEtValeur[1];ListStore<Valeur> typeStore = types.getStore();Valeur objetType = typeStore.findModel("id_valeur", idType);String texteType = "";if (objetType != null) {texteType = objetType.getNom();} else {texteType = idType;}ajouterValeur(idValeur, texteType, idType);} else {InfoLogger.display("ChampMultiValeursMultiTypes > méthode peupler", "Erreur dans le split d'une valeur, chaine="+chaineExistante, true);}}}}}