Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1966 → Rev 1967

/trunk/src/org/tela_botanica/client/util/FormulaireSaisieChampEtendu.java
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;
}
}
/trunk/src/org/tela_botanica/client/util/ChampSaisieEtendu.java
53,7 → 53,7
private Timer timer = null;
final String resultTplRefPerso = "<div class=\"search-item-ref\">{valeur}</div>";
final String resultTplRefPerso = "<div class=\"x-combo-list-item search-item-tpl \">{valeur}</div>";
private List<String> cacheValeurs;
private Record rdSelectionne = null;
79,6 → 79,7
listenerConfigAutocompletion.setDelay(200);
listenerConfigAutocompletion.setStopPropagation(false);
listenerConfigAutocompletion.setStopEvent(false);
initStoreVide();
if(Configuration.saisieChampsEtendusActivee()) {
addKeyPressListener(new EventCallback() {
134,8 → 135,6
}
}
},listenerConfigAutocompletion);
} else {
initStoreVide();
}
addListener(new ComboBoxListenerAdapter() {
226,4 → 225,10
setStore(store);
store.load();
}
}
@Override
public void setValue(String valeur) {
valeurBrute = valeur;
super.setValue(valeur);
}
}
/trunk/src/org/tela_botanica/client/vues/observation/FormulaireSaisieObservationVue.java
5,6 → 5,7
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.CarnetEnLigneMediateur;
664,6 → 665,8
@Override
public void surValidation(ChampSaisieEtendu champ) {
ajouterChampEtenduAuFormulaire(champ, true);
popUpAjoutChampEtendu.clear();
popUpAjoutChampEtendu.hide();
}
@Override
676,6 → 679,24
popUpAjoutChampEtendu.clear();
popUpAjoutChampEtendu.hide();
}
 
@Override
public void surAjoutMultiple(List<ChampSaisieEtendu> champs) {
for (Iterator<ChampSaisieEtendu> iterator = champs.iterator(); iterator.hasNext();) {
ChampSaisieEtendu champSaisieEtendu = (ChampSaisieEtendu) iterator.next();
ajouterChampEtenduAuFormulaire(champSaisieEtendu, false);
}
}
 
@Override
public void surValidationMultiple(List<ChampSaisieEtendu> champs) {
for (Iterator<ChampSaisieEtendu> iterator = champs.iterator(); iterator.hasNext();) {
ChampSaisieEtendu champSaisieEtendu = (ChampSaisieEtendu) iterator.next();
ajouterChampEtenduAuFormulaire(champSaisieEtendu, false);
}
popUpAjoutChampEtendu.clear();
popUpAjoutChampEtendu.hide();
}
};
popUpAjoutChampEtendu.add(formChamp);
popUpAjoutChampEtendu.center();
934,7 → 955,6
});
}
 
 
private void ajouterListenerChampEvenementsClavier(final TextField champ, final ListenerConfig config) {
champ.addKeyPressListener(new EventCallback() {
@Override
/trunk/src/org/tela_botanica/client/modeles/objets/Configuration.java
2,10 → 2,14
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
import com.google.gwt.i18n.client.Dictionary;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.Window.Location;
 
59,6 → 63,8
private static List<InfosReferentielNom> referentielsDispos;
private static Map<String,HashMap<String, String>> groupesChampsEtendus;
private static String activerSaisieChampsEtendus = "0";
 
/**
129,8 → 135,42
activerSaisieChampsEtendus = "0";
}
}
groupesChampsEtendus = new HashMap<String,HashMap<String, String>>();
if(activerSaisieChampsEtendus.equals("1")) {
if(Dictionary.getDictionary("configuration").get("groupesChampsEtendus") != null &&
!Dictionary.getDictionary("configuration").get("groupesChampsEtendus").isEmpty()) {
groupesChampsEtendus = parserGroupesChampsEtendus(Dictionary.getDictionary("configuration").get(
"groupesChampsEtendus"));
}
}
}
private HashMap<String,HashMap<String, String>> parserGroupesChampsEtendus(String groupeChampsEtendusJson) {
HashMap<String,HashMap<String, String>> groupesChampsEtendus = new HashMap<String,HashMap<String, String>>();
try {
JSONValue groupesJson = JSONParser.parse(groupeChampsEtendusJson);
JSONObject groupes = groupesJson.isObject();
for (Iterator<String> iterator = groupes.keySet().iterator(); iterator.hasNext();) {
String groupe = iterator.next();
JSONValue listeClesLabelsJson = groupes.get(groupe);
JSONObject listeClesLabels = listeClesLabelsJson.isObject();
HashMap<String, String> groupesClesLabel = new HashMap<String, String>();
for (Iterator<String> itCleLabels = listeClesLabels.keySet().iterator(); itCleLabels.hasNext();) {
String cle = itCleLabels.next();
String label = listeClesLabels.get(cle).isString().stringValue();
groupesClesLabel.put(cle, label);
}
groupesChampsEtendus.put(groupe, groupesClesLabel);
}
} catch (Exception e) {
// TODO: handle exception
}
return groupesChampsEtendus;
}
private List<InfosReferentielNom> parserReferentielsDispos(String chaineListeReferentiels) {
String[] tabReferentiels = chaineListeReferentiels.split(";");
List<InfosReferentielNom> referentiels = new ArrayList<InfosReferentielNom>(tabReferentiels.length);
247,4 → 287,8
public static boolean saisieChampsEtendusActivee() {
return activerSaisieChampsEtendus.equals("1");
}
public static Map<String,HashMap<String, String>> getGroupesChampsEtendus() {
return groupesChampsEtendus;
}
}