package org.zkoss.zktest.bind.viewmodel.collection;
import static java.lang.System.out;
import java.util.List;
import org.zkoss.bind.BindContext;
import org.zkoss.bind.Converter;
import org.zkoss.bind.ValidationContext;
import org.zkoss.bind.Validator;
import org.zkoss.bind.annotation.DependsOn;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.Component;
public class C1{
private boolean isSingle = true;
private List<String> selectedList;
private String selectedOne = ListPool.getListNameList().get(0);
public boolean isSingle() {
return isSingle;
}
@NotifyChange
public void setSingle(boolean isSingle) {
this.isSingle = isSingle;
out.println(isSingle);
}
public String getSelectedOne() {
return selectedOne;
}
@NotifyChange
public void setSelectedOne(String selectedOne) {
this.selectedOne = selectedOne;
}
@DependsOn("selectedOne")
public List<String> getSelectedList() {
if (selectedOne.equals("Fruit")){
selectedList = getFruitList();
}else{
selectedList = getCarMarkList();
}
return selectedList;
}
public List<String> getCarMarkList(){
return ListPool.getCarMarkList();
}
public List<String> getFruitList(){
return ListPool.getFruitList();
}
public List<String> getListNameList(){
return ListPool.getListNameList();
}
// ------ validator ------------
public class NonNegativeValidator implements Validator {
public void validate(ValidationContext ctx) {
if (ctx.getProperty().getValue() instanceof Integer){
Integer value = (Integer)ctx.getProperty().getValue();
if (value < 0){
ctx.setInvalid();
}
}else{
ctx.setInvalid();
}
}
}
public Validator getNonNegative(){
return new NonNegativeValidator();
}
public class MaxLengthValidator implements Validator {
public void validate(ValidationContext ctx) {
Number maxLength = (Number)ctx.getBindContext().getValidatorArg("length");
// String maxLength = (String)ctx.getBindContext().getValidatorArg("length");
if (ctx.getProperty().getValue() instanceof String){
String value = (String)ctx.getProperty().getValue();
if (value.length() > maxLength.longValue()){
ctx.setInvalid();
}
}else{
ctx.setInvalid();
}
}
}
public Validator getMaxLengthValidator(){
return new MaxLengthValidator();
}
//--------- converter ------------
/*
* reverse the boolean value
*/
public class NotConverter implements Converter{
public Object coerceToUi(Object val, Component component, BindContext ctx) {
return !(Boolean)val;
}
public Object coerceToBean(Object val, Component component, BindContext ctx) {
return !(Boolean)val;
}
}
public Converter getNotConverter(){
return new NotConverter();
}
// -----------command -----------------
}