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(); |
|