1,12 → 1,15 |
package org.tela_botanica.client.util; |
|
import java.util.ArrayList; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
|
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO; |
import org.tela_botanica.client.modeles.objets.Configuration; |
|
import com.google.gwt.user.client.Timer; |
import com.google.gwt.user.client.Window; |
20,6 → 23,7 |
import com.gwtext.client.data.MemoryProxy; |
import com.gwtext.client.data.Record; |
import com.gwtext.client.data.RecordDef; |
import com.gwtext.client.data.SimpleStore; |
import com.gwtext.client.data.Store; |
import com.gwtext.client.data.StringFieldDef; |
import com.gwtext.client.widgets.Button; |
50,16 → 54,19 |
private final int KEY_UP = 38; |
|
final ComboBox nChamp; |
String resultTplRefPerso = "<div class=\"search-item-ref\">{label}</div>"; |
final String champsListeTpl = "<div class=\"x-combo-list-item search-item-tpl search-c-field-tpl\" title=\"{label}\">{label}</div>"; |
Button ajouterChampsEtenduEtFermer; |
Button ajouterChampsEtendu; |
Button annulerAjouterChampEtendu; |
String idChamp = null; |
|
final ComboBox groupesChampsEtendus; |
|
private Timer timer = null; |
|
private Map<String, String> cacheClesValeur; |
private Record rdSelectionne = null; |
private Record groupeSelectionne = null; |
private String valeurBrute = ""; |
|
public FormulaireSaisieChampEtendu() { |
67,6 → 74,27 |
setPaddings(3); |
setBodyBorder(false); |
|
HTML indicationSaisieGroupe = new HTML("Vous pouvez ajouter plusieurs champs à la fois correspondant à un groupe "+ |
"par exemple les champs du projet sauvage de ma rue ou florilèges, ou bien "+ |
"les champs phytosociolgiques "); |
indicationSaisieGroupe.addStyleName("aideCreerChampEtendu"); |
|
groupesChampsEtendus = new ComboBox(); |
groupesChampsEtendus.setLabel("Ajouter un groupe de champs"); |
groupesChampsEtendus.setStore(getGroupesChampsEtendusStore()); |
groupesChampsEtendus.setDisplayField("label") ; |
groupesChampsEtendus.setValueField("valeur"); |
groupesChampsEtendus.setEditable(false); |
groupesChampsEtendus.setHideTrigger(false); |
groupesChampsEtendus.setForceSelection(true); |
groupesChampsEtendus.setCls("champ-separation"); |
groupesChampsEtendus.setValue(""); |
|
if(groupesChampsEtendusSontDefinis()) { |
add(indicationSaisieGroupe); |
add(groupesChampsEtendus); |
} |
|
HTML indicationSaisie = new HTML("Saisissez un nom de champ ou choisisez un nom proposé par l'autocomplétion "+ |
"Si vous choissisez un nom de champ existant vous pourrez profiter d'une autocomplétion "+ |
"sur les valeur déjà saisies pour ce champ par les autres utilisateurs"); |
75,14 → 103,14 |
|
HorizontalPanel hp = new HorizontalPanel(); |
hp.setBorderWidth(0); |
|
|
nChamp = new ComboBox("Nom du champ", "nom_champ_etendu"); |
add(nChamp); |
|
ajouterChampsEtenduEtFermer = new Button("Valider"); |
ajouterChampsEtenduEtFermer.setTooltip("Ajouter un champ étendu et fermer la fenêtre"); |
ajouterChampsEtenduEtFermer = new Button("Ajouter et fermer"); |
ajouterChampsEtenduEtFermer.setTooltip("Ajouter un champ étendu ou un groupe de champs et fermer la fenêtre"); |
ajouterChampsEtendu = new Button("Ajouter"); |
ajouterChampsEtendu.setTooltip("Ajouter un champ étendu"); |
ajouterChampsEtendu.setTooltip("Ajouter un champ étendu ou un groupe de champ"); |
annulerAjouterChampEtendu = new Button("Annuler"); |
annulerAjouterChampEtendu.setTooltip("Fermer la fenêtre sans ajouter de champ"); |
|
91,14 → 119,11 |
hp.add(annulerAjouterChampEtendu); |
add(hp); |
|
nChamp.setTpl(resultTplRefPerso); |
nChamp.setMode(ComboBox.REMOTE); |
nChamp.setItemSelector("div.search-item-ref"); |
nChamp.setTypeAhead(false); |
nChamp.setLoadingText("Recherche..."); |
nChamp.setHideTrigger(true); |
nChamp.setWidth("250px"); |
|
nChamp.setWidth("250px"); |
nChamp.setValue(""); |
nChamp.focus(); |
|
181,14 → 206,25 |
} |
}); |
|
groupesChampsEtendus.addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
groupeSelectionne = record; |
} |
}); |
|
ajouterChampsEtenduEtFermer.addListener(new ButtonListenerAdapter() { |
@Override |
public void onClick(Button button, EventObject e) { |
if(champEtenduEstValide()) { |
surValidation(validerEtRenvoyerChampEtendu()); |
if(doitAjouterGroupe()) { |
surValidationMultiple(renvoyerListeChampsEtendus(groupeSelectionne.getAsString("valeur"))); |
} else { |
Window.alert("Le nom du champ étendu ne peut pas être vide"); |
} |
if(champEtenduEstValide()) { |
surValidation(validerEtRenvoyerChampEtendu()); |
} else { |
Window.alert("Le nom du champ étendu ne peut pas être vide"); |
} |
} |
} |
}); |
|
235,6 → 271,23 |
return retour; |
} |
|
private List<ChampSaisieEtendu> renvoyerListeChampsEtendus(String groupe) { |
List<ChampSaisieEtendu> champsDuGroupe = new ArrayList<ChampSaisieEtendu>(); |
HashMap<String, String> listeChampsEtendus = Configuration.getGroupesChampsEtendus().get(groupe); |
for (Iterator<String> iterator = listeChampsEtendus.keySet().iterator(); iterator.hasNext();) { |
String cle = iterator.next(); |
String label = listeChampsEtendus.get(cle); |
ChampSaisieEtendu champ = new ChampSaisieEtendu(label, cle); |
champsDuGroupe.add(champ); |
} |
|
return champsDuGroupe; |
} |
|
private boolean doitAjouterGroupe() { |
return groupeSelectionne != null && !groupeSelectionne.getAsString("valeur").equals(""); |
} |
|
private boolean champEtenduEstValide() { |
String valeurChamp = nChamp.getValueAsString(); |
return (valeurChamp != null && !valeurChamp.isEmpty()); |
254,7 → 307,9 |
} |
|
public abstract void surAjout(ChampSaisieEtendu champ); |
public abstract void surAjoutMultiple(List<ChampSaisieEtendu> champs); |
public abstract void surValidation(ChampSaisieEtendu champ); |
public abstract void surValidationMultiple(List<ChampSaisieEtendu> champs); |
public abstract void surAnnulation(); |
|
public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) { |
287,4 → 342,30 |
nChamp.setStore(store); |
store.load(); |
} |
|
private boolean groupesChampsEtendusSontDefinis() { |
return Configuration.getGroupesChampsEtendus().size() > 0; |
} |
|
private Store getGroupesChampsEtendusStore() { |
int i = 1; |
|
Map<String, HashMap<String, String>> listeGroupesChampsEtendus = Configuration.getGroupesChampsEtendus(); |
Object[][] valeurs = new Object[listeGroupesChampsEtendus.size()+1][2]; |
|
valeurs[0][0] = "..."; |
valeurs[0][1] = ""; |
if(listeGroupesChampsEtendus.size() > 0) { |
for (Iterator<String> it = listeGroupesChampsEtendus.keySet().iterator(); it.hasNext();) |
{ |
String cle = it.next(); |
valeurs[i][0]= cle; |
valeurs[i][1]= cle; |
i++; |
} |
} |
SimpleStore store = new SimpleStore(new String[] {"label","valeur"},valeurs); |
store.load(); |
return store; |
} |
} |