package org.zkoss.zktest.bind.issue;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import org.zkoss.bind.ValidationContext;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.ListModels;
public class B01891ComboboxValidator {
private ListModel model1;
private ListModel model2;
private Item selItem;
private Integer selIndex = -1;
public B01891ComboboxValidator () {
List list = new ArrayList();
list.add(new Item("01"));
list.add(new Item("02"));
list.add(new Item("03"));
model1 = ListModels.toListSubModel(
new ListModelList(list), new ItemComparator(), 10);
model2 = ListModels.toListSubModel(
new ListModelList(list), new ItemComparator(), 10);
}
public ListModel getModel1 () {
return model1;
}
public ListModel getModel2 () {
return model2;
}
public Item getSelItem () {
return selItem;
}
public void setSelItem (Item selItem) {
this.selItem = selItem;
}
public Integer getSelIndex() {
return selIndex;
}
public void setSelIndex(Integer selIndex) {
this.selIndex = selIndex;
}
public Validator1 getValidator1(){
return new Validator1();
}
public Validator2 getValidator2(){
return new Validator2();
}
public static class Item {
private String name;
public Item (String name) {
this.name = name;
}
public String getName () {
return name;
}
public String toString(){
return getClass().getSimpleName()+"@"+Integer.toHexString(System.identityHashCode(this))+"["+name+"]";
}
}
public static class ItemComparator implements Comparator {
public int compare(Object text, Object item) {
String val = text.toString().toLowerCase();
if (val.isEmpty())
return 0;
String name = "";
if (item instanceof Item) {
name = ((Item)item).getName();
}
return name.toLowerCase().startsWith(val)? 0: -1;
}
}
public static class Validator1 extends org.zkoss.bind.validator.AbstractValidator {
public void validate(ValidationContext ctx) {
if (ctx.getProperty().getValue() == null)
addInvalidMessage(ctx, "Please select an item!!");
}
}
public static class Validator2 extends org.zkoss.bind.validator.AbstractValidator {
public void validate(ValidationContext ctx) {
if (ctx.getProperty().getValue() == null || ((Integer)ctx.getProperty().getValue()).intValue() == -1)
addInvalidMessage(ctx, "Please select an item!!");
}
}
}