public DateRangeEditor(Date date) {

    super(MSGS.rangeOfRecurrence());
    this.addStyleName(SCHEDULE_EDITOR_CAPTION_PANEL);
    uniqueInstanceNumber += 1;

    HorizontalPanel outerHP = new HorizontalPanel();
    add(outerHP);

    HorizontalPanel hp = new HorizontalPanel();
    Label l = new Label(MSGS.startLabel());
    l.setStyleName("startLabel"); // $NON-NLS-1$
    hp.add(l);
    DefaultFormat format = new DefaultFormat(DateTimeFormat.getShortDateFormat());
    startDatePicker = new DatePickerEx(format);
    startDatePicker.getDatePicker().setStyleName(START_DATE_PICKER);
    hp.add(startDatePicker.getDatePicker());
    startLabel = new ErrorLabel(hp);
    outerHP.add(startLabel);

    endDatePanel = new EndDatePanel(date);
    outerHP.add(endDatePanel);

    reset(date);
    configureOnChangeHandler();
  }
    public EndDatePanel(Date date) {
      final EndDatePanel localThis = this;

      noEndDateRb =
          new RadioButton(END_DATE_RB_GROUP + uniqueInstanceNumber, MSGS.noEndDateLabel());
      noEndDateRb.setStyleName("recurrenceRadioButton"); // $NON-NLS-1$
      noEndDateRb.setValue(true);
      add(noEndDateRb);
      HorizontalPanel hp = new HorizontalPanel();
      add(hp);

      HorizontalPanel endByPanel = new HorizontalPanel();
      endByRb = new RadioButton(END_DATE_RB_GROUP + uniqueInstanceNumber, MSGS.endByLabel());
      endByRb.setStyleName("recurrenceRadioButton"); // $NON-NLS-1$
      endByPanel.add(endByRb);
      DefaultFormat format = new DefaultFormat(DateTimeFormat.getShortDateFormat());
      endDatePicker = new DatePickerEx(format);
      endDatePicker.getDatePicker().setStyleName(END_DATE_PICKER);
      endDatePicker.getDatePicker().setEnabled(false);
      endByPanel.add(endDatePicker.getDatePicker());
      endByLabel = new ErrorLabel(endByPanel);
      hp.add(endByLabel);

      noEndDateRb.addClickListener(
          new ClickListener() {
            public void onClick(Widget sender) {
              localThis.endDatePicker.getDatePicker().setEnabled(false);
            }
          });

      endByRb.addClickListener(
          new ClickListener() {
            public void onClick(Widget sender) {
              localThis.endDatePicker.getDatePicker().setEnabled(true);
            }
          });
      reset(date);
      configureOnChangeHandler();
    }
 public void setStartDate(Date d) {
   startDatePicker.getDatePicker().setValue(d);
 }
 public void setDate(Date d) {
   endDatePicker.getDatePicker().setValue(d);
 }
 public void setEndBy() {
   noEndDateRb.setValue(false);
   endByRb.setValue(true);
   endDatePicker.getDatePicker().setEnabled(true);
 }
 public void reset(Date d) {
   setNoEndDate();
   endDatePicker.getDatePicker().setValue(d);
 }
 public void reset(Date d) {
   startDatePicker.getDatePicker().setValue(d);
   endDatePanel.reset(d);
 }