/* ZKBindLoad1Composer.java
Purpose:
Description:
History:
Aug 2, 2011 1:01:07 PM, Created by henrichen
Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zktest.bind.basic;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.zkoss.bind.BindComposer;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.DependsOn;
import org.zkoss.bind.annotation.NotifyChange;
/**
* @author Dennis Chen
*
*/
public class LoadIndirectComposer extends BindComposer {
public class Person {
private String firstName;
private String lastName;
private Date birthday;
private boolean gender;
private String phone;
private Address address;
public Person(String fname, String lname) {
firstName = fname;
lastName = lname;
}
//fire property change to base.firstName
@NotifyChange
public void setFirstName(String n) {
this.firstName = n;
}
public String getFirstName() {
return this.firstName;
}
@NotifyChange
public void setLastName(String n) {
this.lastName = n;
}
public String getLastName() {
return this.lastName;
}
@DependsOn({"firstName", "lastName"})
public String getFullName() {
return this.firstName + " " + this.lastName;
}
@NotifyChange
public void setBirthday(Date d) {
this.birthday = d;
}
public Date getBirthday() {
return this.birthday;
}
@NotifyChange
public void setGender(boolean male) {
this.gender = male;
}
public boolean getGender() {
return this.gender;
}
@NotifyChange
public void setPhone(String p) {
this.phone = p;
}
public String getPhone() {
return this.phone;
}
@NotifyChange
public void setAddress(Address addr) {
address = addr;
}
public Address getAddress() {
if (address == null) {
address = new Address("","");
}
return this.address;
}
@DependsOn({"address.street", "address.zip"})
public String getFullAddr() {
return address == null ? null : (address.getStreet() + " " + address.getZip());
}
}
public class Address {
private String _zip;
private String _street;
public Address(String street, String zip) {
_zip = zip;
_street = street;
}
public String getZip() {
return _zip;
}
public String getStreet() {
return _street;
}
@NotifyChange
public void setZip(String zip) {
_zip = zip;
}
@NotifyChange
public void setStreet(String street) {
_street = street;
}
}
private Person _selected;
private List<Person> _persons;
private String currField = "firstName";
private Person _p2;
public LoadIndirectComposer() {
_persons = new ArrayList<Person>();
for(int j = 0; j < 4; ++j) {
_persons.add(new Person("First"+j , "Last"+j));
}
_selected = _persons.get(1); //2nd person
Address addr = new Address("87 Zhengzhou Road #11F-2 Taipei", "103");
_selected.setAddress(addr);
}
public Person getSelected() {
return _selected;
}
@NotifyChange
public void setSelected(Person p) {
_selected = p;
}
public List<Person> getPersons() {
return _persons;
}
public Person getP1() {
return getSelected();
}
int i=0;
public String getCurrField() {
return currField;
}
@NotifyChange({"currField"})
public void setCurrField(String currField) {
this.currField = currField;
}
@Command @NotifyChange({"currField"})
public void toFirstName() {
currField = "firstName";
}
@Command @NotifyChange({"currField"})
public void toLastName() {
currField = "lastName";
}
@Command @NotifyChange({"currField"})
public void toFullName() {
currField = "fullName";
}
public Person getP2(){
return _p2;
}
@Command @NotifyChange({"p1","p2"})
public void saveForm(){
_p2 = new Person(_selected.getFirstName(),_selected.getLastName());
}
}