private void initScheduleEditor(Schedule sched) throws CronParseException {
    DualModeScheduleEditor scheduleEditor = scheduleCreatorDialog.getScheduleEditor();

    scheduleEditor.setSubscriptionSchedule(sched.isSubscriptionSchedule());
    scheduleEditor.setName(sched.getJobName());
    scheduleEditor.setGroupName(sched.getJobGroup());
    scheduleEditor.setDescription(sched.getDescription());

    String repeatIntervalInMillisecs = sched.getRepeatInterval();
    if (sched.isCronSchedule()) {
      scheduleEditor.setCronString(sched.getCronString()); // throws CronParseException
    } else if (sched.isRepeatSchedule()) {
      long repeatIntervalInSecs =
          TimeUtil.millsecondsToSecs(Long.parseLong(repeatIntervalInMillisecs));
      if (0 == repeatIntervalInSecs) {
        // run once
        scheduleEditor.setScheduleType(ScheduleEditor.ScheduleType.RUN_ONCE);
      } else {
        // run multiple
        scheduleEditor.setRepeatInSecs((int) repeatIntervalInSecs);
      }
    } else {
      throw new RuntimeException(
          Messages.getString("illegalStateMissingCronAndRepeat")); // $NON-NLS-1$
    }

    String timePart = null;
    String strDate = sched.getStartDate();
    if (null != strDate) {
      Date startDate = TimeUtil.getDate(strDate);
      if (sched.isRepeatSchedule()) {
        timePart = TimeUtil.getTimePart(startDate);
        scheduleEditor.setStartTime(timePart);
        startDate = TimeUtil.zeroTimePart(startDate);
      }
      scheduleEditor.setStartDate(startDate);
    }
    //    scheduleEditor.getRunOnceEditor().setStartTime(strTime)
    //    scheduleEditor.getRunOnceEditor().setStartDate(strTime)

    strDate = sched.getEndDate();
    if (null != strDate) {
      scheduleEditor.setEndBy();
      Date endDate = TimeUtil.getDate(strDate);
      if (sched.isRepeatSchedule()) {
        endDate = TimeUtil.zeroTimePart(endDate);
      }
      scheduleEditor.setEndDate(endDate);
    } else {
      scheduleEditor.setNoEndDate();
    }
  }