3,11 → 3,16 |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
|
import org.tela_botanica.client.cel2; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO; |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.util.autocompletion.AutoCompletionComboBox; |
|
import com.google.gwt.core.client.Callback; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.user.client.Timer; |
import com.gwtext.client.core.EventCallback; |
import com.gwtext.client.core.EventObject; |
26,140 → 31,25 |
import com.gwtext.client.widgets.form.Field; |
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter; |
|
public class ChampSaisieEtendu extends ComboBox implements Rafraichissable { |
// TODO: faire un enum |
private final int KEY_ALT = 18; |
private final int KEY_BACKSPACE = 8; |
private final int KEY_CTRL = 17; |
private final int KEY_DELETE = 46; |
private final int KEY_DOWN = 40; |
private final int KEY_END = 35; |
private final int KEY_ENTER = 13; |
private final int KEY_ESCAPE = 27; |
private final int KEY_HOME = 36; |
private final int KEY_LEFT = 37; |
private final int KEY_PAGEDOWN = 34; |
private final int KEY_PAGEUP = 33; |
private final int KEY_RIGHT = 39; |
private final int KEY_SHIFT = 16; |
private final int KEY_TAB = 9; |
private final int KEY_UP = 38; |
public class ChampSaisieEtendu extends AutoCompletionComboBox { |
|
private boolean selectionValeur = false; |
private boolean estModifie = false; |
|
private String cle = null; |
private String label = null; |
|
private Timer timer = null; |
|
final String resultTplRefPerso = "<div class=\"search-item-ref\">{valeur}</div>"; |
|
private List<String> cacheValeurs; |
private Record rdSelectionne = null; |
private String valeurBrute = ""; |
|
private String description = null; |
private ToolTip tpDesc = null; |
|
public ChampSaisieEtendu(String label, String cle) { |
public ChampSaisieEtendu(String label, String cle, String urlRequete) { |
|
super(label,cle); |
|
super(label, urlRequete); |
this.cle =cle; |
this.label = label; |
|
setTpl(resultTplRefPerso); |
setMode(ComboBox.REMOTE); |
setItemSelector("div.search-item-ref"); |
setTypeAhead(false); |
setLoadingText("Recherche..."); |
setHideTrigger(true); |
setValidateOnBlur(false); |
|
ListenerConfig listenerConfigAutocompletion=new ListenerConfig(); |
listenerConfigAutocompletion.setDelay(200); |
listenerConfigAutocompletion.setStopPropagation(false); |
listenerConfigAutocompletion.setStopEvent(false); |
initStoreVide(); |
|
if(Configuration.saisieChampsEtendusActivee()) { |
addKeyPressListener(new EventCallback() { |
|
@Override |
public void execute(EventObject e) { |
|
switch(e.getKey()) { |
|
case KEY_ALT: |
case KEY_CTRL: |
case KEY_END: |
case KEY_ESCAPE: |
case KEY_HOME: |
case KEY_LEFT: |
case KEY_PAGEDOWN: |
case KEY_PAGEUP: |
case KEY_RIGHT: |
case KEY_SHIFT: |
case KEY_TAB: |
case KEY_UP: |
|
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("*"); |
} |
break; |
|
default: |
if(timer != null) { |
timer.cancel(); |
} |
timer = new Timer() { |
|
@Override |
public void run() { |
obtenirListeValeurs(); |
} |
}; |
timer.schedule(300); |
valeurBrute = getValueAsString(); |
setValue(valeurBrute); |
} |
} |
},listenerConfigAutocompletion); |
} |
|
addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
rdSelectionne = record; |
setRawValue(rdSelectionne.getAsString("valeur")); |
} |
|
@Override |
public void onBlur(Field field) { |
if(rdSelectionne != null && !rdSelectionne.getAsString("valeur").equals(valeurBrute)) { |
setRawValue(valeurBrute); |
} |
} |
}); |
|
// A activer pour télécharger la description |
// si jamais on le décide |
addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onRender(Component component) { |
setLargeurChamp(); |
ChampSaisieEtendu.this.getEl().addListener("mouseover", new EventCallback() { |
@Override |
public void execute(EventObject e) { |
201,86 → 91,32 |
} |
} |
|
@Override |
public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) { |
|
@SuppressWarnings("unchecked") |
ArrayList<String> valeurs = (ArrayList<String>)nouvelleDonnees; |
cacheValeurs = valeurs; |
|
int i = 0; |
Object[][] refData = new Object[valeurs.size()][1]; |
|
for (Iterator<String> it = valeurs.iterator(); it.hasNext();) |
{ |
refData[i][0]= it.next(); |
i++; |
} |
|
FieldDef defValeur = new StringFieldDef("valeur"); |
FieldDef[] defTab = {defValeur}; |
|
RecordDef rd = new RecordDef(defTab); |
|
final MemoryProxy dataProxy = new MemoryProxy(refData); |
final ArrayReader reader = new ArrayReader(rd); |
|
Store store = new Store(dataProxy,reader); |
|
setStore(store); |
store.load(); |
public String getCle() { |
return cle; |
} |
|
private void obtenirListeValeurs() { |
String valeurChamp = getRawValue(); |
obtenirListeValeurs(valeurChamp); |
public String getLabel() { |
return label; |
} |
|
private void obtenirListeValeurs(String valeurChamp) { |
if(valeurChamp == null) { |
valeurChamp = ""; |
} else { |
valeurChamp += "*"; |
} |
ListeReferentielChampsEtendusDAO lrceDao = new ListeReferentielChampsEtendusDAO(null); |
lrceDao.obtenirListeValeursChampEtendu(this, cle, valeurChamp); |
|
@Override |
protected Map<String, String> parserResultatRequete(Response response) { |
return ListeReferentielChampsEtendusDAO.parserRetourListeValeursChampsEtendus(response); |
} |
|
public void setLargeurChamp() { |
// Correction un peu moche pour améliorer l'affichage du champ |
String idElementEnfant = Ext.get(("x-form-el-"+cle)).getFirstChild().getId(); |
Ext.get(idElementEnfant).setWidth("90%", false); |
Ext.get(cle).setWidth("100%", false); |
|
@Override |
protected void onModificationValeur() { |
// TODO Auto-generated method stub |
} |
|
private void initStoreVide() { |
Object[][] refData = new Object[0][1]; |
|
FieldDef defValeur = new StringFieldDef("valeur"); |
FieldDef[] defTab = {defValeur}; |
|
RecordDef rd = new RecordDef(defTab); |
|
final MemoryProxy dataProxy = new MemoryProxy(refData); |
final ArrayReader reader = new ArrayReader(rd); |
|
Store store = new Store(dataProxy,reader); |
|
setStore(store); |
store.load(); |
@Override |
protected void onSelectionValeur() { |
// TODO Auto-generated method stub |
} |
|
|
@Override |
public void setValue(String valeur) { |
valeurBrute = valeur; |
super.setValue(valeur); |
protected void onValidationSaisie() { |
// TODO Auto-generated method stub |
|
} |
|
public String getCle() { |
return cle; |
} |
|
public String getLabel() { |
return label; |
} |
} |