I have a page with date picker that picks the date, DropdownChoice for hour and
minute. When I click "today" button I change the model in onsubmit method. It
is suppose to change the form value in datepicker, hour and minute to
today/now.This changes hour and minute but doesn't change the value in the
datepicker. Is there something that I need to do to make this work. Here is the
partial code
public void onSubmit() {
Calendar startDate = Calendar.getInstance();
// initialize end date
Calendar endDate = Calendar.getInstance();
model.getObject().setStartDate(startDate);
model.getObject().setEndDate(endDate);
getForm().modelChanged();
super.onSubmit();
}
Here is the whole code.
public final class DateTimeSelectionModel implements IClusterable {
private Calendar startDate;
private Calendar endDate;
public DateTimeSelectionModel() {
// initialize start date
startDate = Calendar.getInstance();
startDate.add(Calendar.DATE, -5);
startDate.set(Calendar.HOUR_OF_DAY, 0);
startDate.set(Calendar.MINUTE, 0);
startDate.set(Calendar.SECOND, 0);
// initialize end date
endDate = Calendar.getInstance();
endDate.add(Calendar.DATE, -5);
endDate.set(Calendar.HOUR_OF_DAY, 23);
endDate.set(Calendar.MINUTE, 59);
endDate.set(Calendar.SECOND, 59);
System.out.println("hello");
}
public void setStartDate(Calendar startDate) {
this.startDate = startDate;
}
public void setEndDate(Calendar endDate) {
this.endDate = endDate;
}
// this method is called to get the default for the form.
public Date getStartDate() {
return startDate.getTime();
}
public void setStartDate(Date date) {
//we want to set only year month and day here not the whole date
Calendar cal = Calendar.getInstance();
cal.setTime(date);
this.startDate.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH));
}
public SelectOption getStartHour() {
SelectOption option = new SelectOption("Unknown", new String("" +
startDate.get(Calendar.HOUR_OF_DAY)));
return option;
}
public void setStartHour(SelectOption hour) {
startDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(hour.getValue()));
}
public void setStartMinute(String minute) {
startDate.set(Calendar.MINUTE, Integer.valueOf(minute));
}
public void setStartMinute(int minute) {
startDate.set(Calendar.MINUTE, minute);
}
public int getStartMinute() {
return startDate.get(Calendar.MINUTE);
}
public Date getEndDate() {
return endDate.getTime();
}
public void setEndDate(Date date) {
//we want to set only year month and day here not the whole date
Calendar cal = Calendar.getInstance();
cal.setTime(date);
this.endDate.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH));
}
public SelectOption getEndHour() {
SelectOption option = new SelectOption("Unknown", new String("" +
endDate.get(Calendar.HOUR_OF_DAY)));
return option;
}
public void setEndHour(SelectOption hour) {
endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(hour.getValue()));
}
public void setEndMinute(String minute) {
endDate.set(Calendar.MINUTE, Integer.valueOf(minute));
}
public void setEndMinute(int minute) {
endDate.set(Calendar.MINUTE, minute);
}
public int getEndMinute() {
return endDate.get(Calendar.MINUTE);
}
}
public class DateTimeSelectionForm extends Form {
public DateTimeSelectionForm(String id, final
IModel<DateTimeSelectionModel> model) {
//super(id);
super(id, model);
final DateTextField dateStartField = new DateTextField("startDate",new
PropertyModel<Date>(model, "startDate"), new
PatternDateConverter("MM-dd-yyyy",true)) ;
add(dateStartField);
dateStartField.add(new DatePicker());
// Start Hour
DropDownChoice<SelectOption> startHourChoice = new
DropDownChoice<SelectOption>("startHour", getHourChoices(), new
ChoiceRenderer<SelectOption>("label", "value"));
startHourChoice.setNullValid(false);
add(startHourChoice);
DropDownChoice<Integer> startMinuteChoice = new
DropDownChoice<Integer>("startMinute" , getMinuteChoices());
startMinuteChoice.setNullValid(false);
add(startMinuteChoice);
DateTextField dateEndField = new DateTextField("endDate", new
PropertyModel<Date>(model, "endDate"), new PatternDateConverter("MM-dd-yyyy",
true)) ;
add(dateEndField);
dateEndField.add(new DatePicker());
DropDownChoice<SelectOption> endHourChoice = new
DropDownChoice<SelectOption>("endHour", getHourChoices(), new
ChoiceRenderer<SelectOption>("label", "value"));
endHourChoice.setNullValid(false);
add(endHourChoice);
DropDownChoice<Integer> endMinuteChoice = new
DropDownChoice<Integer>("endMinute", getMinuteChoices());
endMinuteChoice.setNullValid(false);
add(endMinuteChoice);
Button todayButton = new Button("today"){
@Override
public void onSubmit() {
Calendar startDate = Calendar.getInstance();
// initialize end date
Calendar endDate = Calendar.getInstance();
model.getObject().setStartDate(startDate);
model.getObject().setEndDate(endDate);
getForm().modelChanged();
super.onSubmit();
}
};
todayButton.setDefaultFormProcessing(false);
Send
add(todayButton);
// submit button
Button submitButton = new Button("submitButton");
add(submitButton);
// NOTE: the reset button is all on the client side, so wicket doesn't
need to see it.
}
thank you