141 lines
4.0 KiB
Java
141 lines
4.0 KiB
Java
package com.rjconsultores.ventaboletos.web.utilerias;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.zkoss.util.resource.Labels;
|
|
import org.zkoss.zk.ui.WrongValueException;
|
|
import org.zkoss.zk.ui.event.Event;
|
|
import org.zkoss.zk.ui.event.EventListener;
|
|
import org.zkoss.zk.ui.event.InputEvent;
|
|
import org.zkoss.zkplus.databind.BindingListModel;
|
|
import org.zkoss.zkplus.databind.BindingListModelList;
|
|
import org.zkoss.zkplus.spring.SpringUtil;
|
|
import org.zkoss.zul.Combobox;
|
|
import org.zkoss.zul.Comboitem;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.Ciudad;
|
|
import com.rjconsultores.ventaboletos.service.CiudadService;
|
|
|
|
/**
|
|
*
|
|
* @author rodrigo
|
|
*/
|
|
public class MyComboboxCiudad extends Combobox {
|
|
|
|
private static final long serialVersionUID = -1332458046058719821L;
|
|
private CiudadService ciudadService;
|
|
private List<Ciudad> lsCiudad;
|
|
private Ciudad initialValue;
|
|
private Integer indiceSelected = null;
|
|
|
|
public MyComboboxCiudad() {
|
|
|
|
super();
|
|
|
|
ciudadService = (CiudadService) SpringUtil.getBean("ciudadService");
|
|
lsCiudad = new ArrayList<Ciudad>();
|
|
|
|
this.setAutodrop(false);
|
|
this.setAutocomplete(false);
|
|
|
|
|
|
this.addEventListener("onOK", new EventListener() {
|
|
|
|
@Override
|
|
public void onEvent(Event event) throws Exception {
|
|
String strCiudad = MyComboboxCiudad.this.getText().toUpperCase();
|
|
|
|
if (strCiudad.length() < MyComboboxParada.minLength) {
|
|
return;
|
|
}
|
|
int indiceSeparacaoEstado = strCiudad.indexOf(",");
|
|
if (indiceSeparacaoEstado != -1) {
|
|
strCiudad = strCiudad.substring(0, indiceSeparacaoEstado);
|
|
}
|
|
|
|
if (!strCiudad.isEmpty()) {
|
|
lsCiudad = ciudadService.buscaLike(strCiudad);
|
|
|
|
BindingListModel listModelCiudad = new BindingListModelList(lsCiudad, true);
|
|
MyComboboxCiudad.this.setModel(listModelCiudad);
|
|
indiceSelected = null;
|
|
if (!lsCiudad.isEmpty()) {
|
|
indiceSelected = 0;
|
|
}
|
|
|
|
MyComboboxCiudad.this.open();
|
|
} else {
|
|
lsCiudad.clear();
|
|
|
|
BindingListModel listModelCiudad = new BindingListModelList(lsCiudad, true);
|
|
MyComboboxCiudad.this.setModel(listModelCiudad);
|
|
}
|
|
}
|
|
});
|
|
|
|
this.addEventListener("onChanging", new EventListener() {
|
|
|
|
@Override
|
|
public void onEvent(Event event) throws Exception {
|
|
InputEvent ev = (InputEvent) event;
|
|
String strCiudad = ev.getValue();
|
|
if (strCiudad.length() < 2) {
|
|
lsCiudad.clear();
|
|
|
|
BindingListModel listModelCiudad = new BindingListModelList(lsCiudad, true);
|
|
MyComboboxCiudad.this.setModel(listModelCiudad);
|
|
|
|
MyComboboxCiudad.this.close();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
public Ciudad getInitialValue() {
|
|
return initialValue;
|
|
}
|
|
|
|
public void setInitialValue(Ciudad initialValue) {
|
|
if (initialValue == null) {
|
|
return;
|
|
}
|
|
List<Ciudad> ls = new ArrayList<Ciudad>();
|
|
ls.add(initialValue);
|
|
|
|
this.setModel(new BindingListModelList(ls, false));
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param checaBusqueda
|
|
* @throws WrongValueException
|
|
*/
|
|
public String getValue(boolean checaBusqueda) throws WrongValueException {
|
|
if (checaBusqueda) {
|
|
if (this.getSelectedItem() == null) {
|
|
throw new WrongValueException(this, Labels.getLabel("MSG.Error.combobox.hacerBusqueda"));
|
|
}
|
|
}
|
|
|
|
return super.getValue();
|
|
}
|
|
|
|
public Comboitem getItemPorId(Integer id) {
|
|
for (Ciudad cid : lsCiudad) {
|
|
if(cid.getCiudadId().equals(id)) {
|
|
Comboitem ciCidade = new Comboitem(cid.toString());
|
|
ciCidade.setAttribute("value", cid);
|
|
ciCidade.setValue(cid);
|
|
return ciCidade;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public Integer getIndiceSelected() {
|
|
return indiceSelected;
|
|
}
|
|
|
|
}
|