New file |
0,0 → 1,186 |
package org.tela_botanica.client.composants; |
|
import java.util.HashMap; |
|
import org.tela_botanica.client.images.Images; |
|
import com.extjs.gxt.ui.client.event.ButtonEvent; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
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.HiddenField; |
import com.extjs.gxt.ui.client.widget.form.LabelField; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
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.FitLayout; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.extjs.gxt.ui.client.widget.layout.RowLayout; |
import com.google.gwt.core.client.GWT; |
|
public class ChampMultiValeurs extends LayoutContainer { |
String idChampCache = null; |
|
String nomLabelChampTxt = ""; |
|
String titreErreur = null; |
String valeurVideMsg = null; |
String valeurIdentiqueMsg = null; |
|
LayoutContainer principalLayout = null; |
TextField<String> champTexte = null; |
HiddenField<String> champRecapitulatif = null; |
HashMap<String, LayoutContainer> valeurs = null; |
|
int largeurTotale = 420; |
int largeurBouton = 20; |
int largeurChamp = 0; |
|
public ChampMultiValeurs() { |
initialiserChampMultiValeur(null, 0); |
} |
|
public ChampMultiValeurs(String label) { |
initialiserChampMultiValeur(label, 0); |
} |
|
public ChampMultiValeurs(String label, int largeurTotale) { |
initialiserChampMultiValeur(label, largeurTotale); |
} |
|
public void setLabel(String label) { |
if (label == null) { |
label = ""; |
} |
nomLabelChampTxt = label; |
} |
|
public void setLargeur(int largeur) { |
if (largeur != 0 && largeur > 20) { |
largeurTotale = largeur; |
} |
largeurChamp = largeurTotale - largeurBouton; |
} |
|
private void initialiserChampMultiValeur(String label, int largeur) { |
setLabel(label); |
setLargeur(largeur); |
|
titreErreur = "Erreur de saisie"; |
valeurVideMsg = "Vous devez saisir une valeur"; |
valeurIdentiqueMsg = "La valeur saisi est déjà présente dans la liste"; |
|
valeurs = new HashMap<String, LayoutContainer>(); |
champRecapitulatif = new HiddenField<String>(); |
champRecapitulatif.setValue(""); |
|
setLayout(new FormLayout()); |
|
creerChampMultiValeurs(); |
} |
|
private void creerChampMultiValeurs() { |
principalLayout = new LayoutContainer(); |
principalLayout.setLayout(new RowLayout()); |
|
LabelField label = new LabelField(nomLabelChampTxt + ":"); |
label.setWidth(largeurChamp); |
principalLayout.add(label); |
|
LayoutContainer colonneLayout = new LayoutContainer(); |
colonneLayout.setLayout(new ColumnLayout()); |
|
champTexte = new TextField<String>(); |
colonneLayout.add(champTexte, new ColumnData(largeurChamp)); |
|
Button ajouterBouton = new Button(); |
ajouterBouton.setIcon(Images.ICONES.ajouter()); |
ajouterBouton.addSelectionListener( |
new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
String valeurChampTxt = (String) champTexte.getValue(); |
if ((valeurChampTxt == null) || (valeurChampTxt.trim().equals(""))) { |
MessageBox.alert(titreErreur, valeurVideMsg, null); |
} else if (valeurs.get(valeurChampTxt) != null){ |
MessageBox.alert(titreErreur, valeurIdentiqueMsg, null); |
} else { |
ajouterValeur(valeurChampTxt); |
} |
} |
}); |
colonneLayout.add(ajouterBouton, new ColumnData(largeurBouton)); |
|
principalLayout.add(champRecapitulatif); |
principalLayout.add(colonneLayout); |
add(principalLayout); |
} |
|
private void ajouterValeur(final String texte) { |
LayoutContainer colonneLayout = new LayoutContainer(); |
colonneLayout.setLayout(new ColumnLayout()); |
valeurs.put(texte, colonneLayout); |
|
Text champTxt = new Text(); |
champTxt.setText(texte); |
colonneLayout.add(champTxt, new ColumnData(largeurChamp)); |
|
Button supprimerBouton = new Button(); |
supprimerBouton.setIcon(Images.ICONES.supprimer()); |
supprimerBouton.setData("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); |
|
supprimerValeurAuRecapitulatif(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); |
|
actualiserLayoutGlobal(); |
} |
|
private void actualiserLayoutGlobal() { |
GWT.log("Valeurs : "+getValeurs(), null); |
layout(); |
} |
|
private void ajouterValeurAuRecapitulatif(String texte) { |
String texteRecapitulatif = ""; |
if (champRecapitulatif.getValue() != null) { |
texteRecapitulatif = champRecapitulatif.getValue(); |
} |
texteRecapitulatif += texte + ";;"; |
champRecapitulatif.setValue(texteRecapitulatif); |
} |
|
private void supprimerValeurAuRecapitulatif(String texte) { |
if (champRecapitulatif.getValue() != null) { |
String texteRecapitulatif = champRecapitulatif.getValue(); |
texteRecapitulatif = texteRecapitulatif.replace(texte + ";;", ""); |
champRecapitulatif.setValue(texteRecapitulatif); |
} |
} |
|
public String getValeurs() { |
String texteRecapitulatif = ""; |
if (champRecapitulatif.getValue() != null) { |
texteRecapitulatif = champRecapitulatif.getValue(); |
texteRecapitulatif = texteRecapitulatif.replaceAll("(.*);;$", "$1"); |
} |
return texteRecapitulatif; |
} |
} |