package com.vaadin.tests.fieldgroup;
import java.util.Date;
import java.util.Locale;
import com.vaadin.data.fieldgroup.BeanFieldGroup;
import com.vaadin.data.fieldgroup.FieldGroup;
import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
import com.vaadin.data.fieldgroup.PropertyId;
import com.vaadin.data.util.BeanItem;
import com.vaadin.tests.components.TestBase;
import com.vaadin.tests.data.bean.Person;
import com.vaadin.tests.util.Log;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.DateField;
import com.vaadin.ui.InlineDateField;
import com.vaadin.ui.Notification;
import com.vaadin.ui.PopupDateField;
import com.vaadin.ui.TextField;
public class DateForm extends TestBase {
private Log log = new Log(5);
@PropertyId("date1")
private DateField dateField;
@PropertyId("date2")
private PopupDateField popupDateField;
@PropertyId("date3")
private InlineDateField inlineDateField;
@PropertyId("date4")
private TextField textField;
public static class DateObject {
private Date date1, date2, date3, date4;
public DateObject(Date date1, Date date2, Date date3, Date date4) {
super();
this.date1 = date1;
this.date2 = date2;
this.date3 = date3;
this.date4 = date4;
}
public Date getDate1() {
return date1;
}
public void setDate1(Date date1) {
this.date1 = date1;
}
public Date getDate2() {
return date2;
}
public void setDate2(Date date2) {
this.date2 = date2;
}
public Date getDate3() {
return date3;
}
public void setDate3(Date date3) {
this.date3 = date3;
}
public Date getDate4() {
return date4;
}
public void setDate4(Date date4) {
this.date4 = date4;
}
}
@Override
protected void setup() {
getMainWindow().setLocale(Locale.US);
addComponent(log);
final FieldGroup fieldGroup = new BeanFieldGroup<DateObject>(
DateObject.class);
fieldGroup.setBuffered(true);
fieldGroup.buildAndBindMemberFields(this);
textField.setWidth("20em");
addComponent(dateField);
addComponent(popupDateField);
addComponent(inlineDateField);
addComponent(textField);
Button commitButton = new Button("Commit", new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
String msg = "Commit succesful";
try {
fieldGroup.commit();
} catch (CommitException e) {
msg = "Commit failed: " + e.getMessage();
}
Notification.show(msg);
log.log(msg);
}
});
Button discardButton = new Button("Discard",
new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
fieldGroup.discard();
log.log("Discarded changes");
}
});
Button showBean = new Button("Show bean values",
new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
log.log(getPerson(fieldGroup).toString());
}
});
addComponent(commitButton);
addComponent(discardButton);
addComponent(showBean);
DateObject d = new DateObject(new Date(443457289789L), new Date(
443457289789L), new Date(443457289789L),
new Date(443457289789L));
fieldGroup.setItemDataSource(new BeanItem<DateObject>(d));
}
public static Person getPerson(FieldGroup binder) {
return ((BeanItem<Person>) binder.getItemDataSource()).getBean();
}
@Override
protected String getDescription() {
return "Ensure FieldGroupFieldFactory supports Dates";
}
@Override
protected Integer getTicketNumber() {
return 8539;
}
}