Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1944 → Rev 1945

/trunk/src/org/tela_botanica/client/util/FormulaireSaisieChampEtendu.java
10,6 → 10,7
 
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.gwtext.client.core.EventCallback;
import com.gwtext.client.core.EventObject;
24,8 → 25,8
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.form.ComboBox;
import com.gwtext.client.widgets.form.Field;
import com.gwtext.client.widgets.form.FormPanel;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
 
@SuppressWarnings("unchecked")
50,13 → 51,16
final ComboBox nChamp;
String resultTplRefPerso = "<div class=\"search-item-ref\">{label}</div>";
final Button ajouterChampsEtendu;
final Button annulerAjouterChampEtendu;
Button ajouterChampsEtenduEtFermer;
Button ajouterChampsEtendu;
Button annulerAjouterChampEtendu;
String idChamp = null;
private Timer timer = null;
private Map<String, String> cacheClesValeur;
private Record rdSelectionne = null;
private String valeurBrute = "";
public FormulaireSaisieChampEtendu() {
super();
63,6 → 67,12
setPaddings(3);
setBodyBorder(false);
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");
indicationSaisie.addStyleName("aideCreerChampEtendu");
add(indicationSaisie);
HorizontalPanel hp = new HorizontalPanel();
hp.setBorderWidth(0);
69,9 → 79,14
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");
ajouterChampsEtendu = new Button("Ajouter");
ajouterChampsEtendu.setTooltip("Ajouter un champ étendu");
annulerAjouterChampEtendu = new Button("Annuler");
annulerAjouterChampEtendu.setTooltip("Fermer la fenêtre sans ajouter de champ");
hp.add(ajouterChampsEtenduEtFermer);
hp.add(ajouterChampsEtendu);
hp.add(annulerAjouterChampEtendu);
add(hp);
79,7 → 94,7
nChamp.setTpl(resultTplRefPerso);
nChamp.setMode(ComboBox.REMOTE);
nChamp.setItemSelector("div.search-item-ref");
nChamp.setTypeAhead(true);
nChamp.setTypeAhead(false);
nChamp.setLoadingText("Recherche...");
nChamp.setHideTrigger(true);
nChamp.setWidth("250px");
105,7 → 120,6
case KEY_ALT:
case KEY_CTRL:
case KEY_ENTER:
case KEY_END:
case KEY_HOME:
case KEY_LEFT:
117,9 → 131,17
case KEY_UP:
break;
case KEY_ENTER:
if(rdSelectionne != null) {
nChamp.setValue(rdSelectionne.getAsString("label"));
idChamp = rdSelectionne.getAsString("cle");
valeurBrute = rdSelectionne.getAsString("label");
}
break;
case KEY_DOWN:
if(nChamp.getValueAsString().isEmpty() && !nChamp.isExpanded()) {
obtenirReferentiel("*");
obtenirListeValeurs("*");
}
break;
135,10 → 157,12
@Override
public void run() {
obtenirReferentiel();
obtenirListeValeurs();
}
};
timer.schedule(300);
valeurBrute = nChamp.getValueAsString();
nChamp.setValue(valeurBrute);
}
}
},listenerConfigAutocompletion);
145,18 → 169,38
// Listener completion
nChamp.addListener(new ComboBoxListenerAdapter() {
@Override
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
nChamp.setValue(record.getAsString("label"));
idChamp = record.getAsString("cle");
nChamp.collapse();
}
rdSelectionne = record;
}
@Override
public void onBlur(Field field) {
nChamp.setRawValue(valeurBrute);
nChamp.collapse();
}
});
ajouterChampsEtenduEtFermer.addListener(new ButtonListenerAdapter() {
@Override
public void onClick(Button button, EventObject e) {
if(champEtenduEstValide()) {
surValidation(validerEtRenvoyerChampEtendu());
} else {
Window.alert("Le nom du champ étendu ne peut pas être vide");
}
}
});
ajouterChampsEtendu.addListener(new ButtonListenerAdapter() {
@Override
public void onClick(Button button, EventObject e) {
validerChampEtendu();
if(champEtenduEstValide()) {
surAjout(validerEtRenvoyerChampEtendu());
raz();
} else {
Window.alert("Le nom du champ étendu ne peut pas être vide");
}
}
});
168,39 → 212,48
});
}
private void validerChampEtendu() {
private void raz() {
timer = null;
idChamp = null;
nChamp.clearValue();
nChamp.focus();
}
private ChampSaisieEtendu validerEtRenvoyerChampEtendu() {
String valeurChamp = nChamp.getValueAsString();
if(valeurChamp != null && !valeurChamp.isEmpty()) {
String idNouveauChamp = "";
if(!estUnChampSelectionne(valeurChamp)) {
Date date = new Date();
// affectation d'un id temporaire qui sera remplacé par l'id auto généré à partir
// du label
idNouveauChamp = "tempid_"+date.getTime();
} else {
idNouveauChamp = idChamp;
}
ChampSaisieEtendu retour = new ChampSaisieEtendu(valeurChamp, idNouveauChamp);
retour.setId(idNouveauChamp);
surValidation(retour);
String idNouveauChamp = "";
if(!estUnChampSelectionne(valeurChamp)) {
Date date = new Date();
// affectation d'un id temporaire qui sera remplacé par l'id auto généré à partir
// du label
idNouveauChamp = "tempid_"+date.getTime();
} else {
Window.alert("Le nom du champ étendu ne peut pas être vide");
idNouveauChamp = idChamp;
}
ChampSaisieEtendu retour = new ChampSaisieEtendu(valeurChamp, idNouveauChamp);
retour.setId(idNouveauChamp);
return retour;
}
private boolean champEtenduEstValide() {
String valeurChamp = nChamp.getValueAsString();
return (valeurChamp != null && !valeurChamp.isEmpty());
}
private boolean estUnChampSelectionne(String valeur) {
return cacheClesValeur.containsValue(valeur);
}
private void obtenirReferentiel() {
obtenirReferentiel(nChamp.getValueAsString());
private void obtenirListeValeurs() {
obtenirListeValeurs(nChamp.getValueAsString());
}
private void obtenirReferentiel(String valeur) {
private void obtenirListeValeurs(String valeur) {
ListeReferentielChampsEtendusDAO lrce = new ListeReferentielChampsEtendusDAO(null);
lrce.obtenirListeNomsChampsEtendus(this, valeur+"*");
}
public abstract void surAjout(ChampSaisieEtendu champ);
public abstract void surValidation(ChampSaisieEtendu champ);
public abstract void surAnnulation();
/trunk/src/org/tela_botanica/client/util/ChampSaisieEtendu.java
2,6 → 2,7
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO;
22,6 → 23,7
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.event.ComponentListenerAdapter;
import com.gwtext.client.widgets.form.ComboBox;
import com.gwtext.client.widgets.form.Field;
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
 
public class ChampSaisieEtendu extends ComboBox implements Rafraichissable {
53,6 → 55,10
final String resultTplRefPerso = "<div class=\"search-item-ref\">{valeur}</div>";
private List<String> cacheValeurs;
private Record rdSelectionne = null;
private String valeurBrute = "";
public ChampSaisieEtendu(String label, String cle) {
// Accesskey pour debugging
64,9 → 70,10
setTpl(resultTplRefPerso);
setMode(ComboBox.REMOTE);
setItemSelector("div.search-item-ref");
setTypeAhead(true);
setTypeAhead(false);
setLoadingText("Recherche...");
setHideTrigger(true);
setValidateOnBlur(false);
ListenerConfig listenerConfigAutocompletion=new ListenerConfig();
listenerConfigAutocompletion.setDelay(200);
96,6 → 103,14
break;
case KEY_ENTER:
if(rdSelectionne != null) {
setValue(rdSelectionne.getAsString("valeur"));
selectionValeur=true;
valeurBrute = rdSelectionne.getAsString("valeur");
}
break;
case KEY_DOWN:
if(getValueAsString().isEmpty() && !isExpanded()) {
obtenirListeValeurs("*");
114,6 → 129,8
}
};
timer.schedule(300);
valeurBrute = getValueAsString();
setValue(valeurBrute);
}
}
},listenerConfigAutocompletion);
121,14 → 138,16
initStoreVide();
}
// Listener completion
addListener(new ComboBoxListenerAdapter() {
@Override
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
setValue(record.getAsString("valeur"));
selectionValeur=true;
collapse();
}
rdSelectionne = record;
}
@Override
public void onBlur(Field field) {
setRawValue(valeurBrute);
}
});
this.addListener(new ComponentListenerAdapter() {
137,7 → 156,6
setLargeurChamp();
}
});
}
 
@Override
145,6 → 163,7
@SuppressWarnings("unchecked")
ArrayList<String> valeurs = (ArrayList<String>)nouvelleDonnees;
cacheValeurs = valeurs;
int i = 0;
Object[][] refData = new Object[valeurs.size()][1];
/trunk/src/org/tela_botanica/client/vues/observation/FormulaireSaisieObservationVue.java
663,13 → 663,17
lienAjouterChampsEtendus.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
FormulaireSaisieChampEtendu formChamp = new FormulaireSaisieChampEtendu() {
FormulaireSaisieChampEtendu formChamp = new FormulaireSaisieChampEtendu() {
@Override
public void surValidation(ChampSaisieEtendu champ) {
ajouterChampEtenduAuFormulaire(champ);
popUpAjoutChampEtendu.clear();
popUpAjoutChampEtendu.hide();
ajouterChampEtenduAuFormulaire(champ, true);
}
@Override
public void surAjout(ChampSaisieEtendu champ) {
ajouterChampEtenduAuFormulaire(champ, false);
}
 
@Override
public void surAnnulation() {
679,18 → 683,28
};
popUpAjoutChampEtendu.add(formChamp);
popUpAjoutChampEtendu.center();
popUpAjoutChampEtendu.setTitle("Ajout d'un champ étendu");
popUpAjoutChampEtendu.setModal(true);
popUpAjoutChampEtendu.show();
}
});
}
private void ajouterChampEtenduAuFormulaire(ChampSaisieEtendu nChamp) {
private void ajouterChampEtenduAuFormulaire(ChampSaisieEtendu nChamp, boolean fermerPopup) {
ChampEtendu chet = new ChampEtendu(nChamp.getName(), nChamp.getFieldLabel(), "");
Map<String, ChampEtendu> champsEt = getValeursChampsEtendus();
champsEt.put(chet.getCle(), chet);
afficherChampsEtendus = true;
afficherChampsEtendus(champsEt, chet);
if(!champsEt.containsKey(chet.getCle())) {
champsEt.put(chet.getCle(), chet);
afficherChampsEtendus = true;
if(fermerPopup) {
afficherChampsEtendus(champsEt, chet);
popUpAjoutChampEtendu.clear();
popUpAjoutChampEtendu.hide();
} else {
afficherChampsEtendus(champsEt, null);
}
} else {
Window.alert("Le champ "+chet.getLabel()+" est déjà présent dans le formulaire");
}
}
 
private void ajouterToolTipsBoutons() {