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
                                          

Reply via email to