package nl.fontys.sofa.limo.view.wizard.leg.scheduled; import java.util.List; import javax.swing.event.ChangeListener; import nl.fontys.sofa.limo.domain.component.leg.ScheduledLeg; import nl.fontys.sofa.limo.validation.BeanValidator; import nl.fontys.sofa.limo.validation.ValidationException; import org.openide.WizardDescriptor; import org.openide.WizardValidationException; import org.openide.util.HelpCtx; /** * Wizard to create Scheduled Leg * * @author Pascal Lindner */ public class ScheduledLegWizard implements WizardDescriptor.ValidatingPanel<WizardDescriptor> { private ScheduledLegPanel component; private ScheduledLeg leg; private final BeanValidator validator = BeanValidator.getInstance(); @Override public ScheduledLegPanel getComponent() { if (component == null) { component = new ScheduledLegPanel(); } return component; } @Override public HelpCtx getHelp() { return HelpCtx.DEFAULT_HELP; } @Override public boolean isValid() { return true; } @Override public void addChangeListener(ChangeListener l) { } @Override public void removeChangeListener(ChangeListener l) { } @Override public void readSettings(WizardDescriptor wiz) { leg = (ScheduledLeg) wiz.getProperty("leg"); getComponent().update(leg.getExpectedTime(), leg.getWaitingTimeLimit(), leg.getAcceptanceTimes(), leg.getAlternative()); } @Override public void storeSettings(WizardDescriptor wiz) { try { List<Long> times = getComponent().getAcceptanceTimes(); if (times.size() > 0) { leg.setAcceptanceTimes(times); } if (getComponent().getAlternativeLeg() != null) { leg.setAlternative(getComponent().getAlternativeLeg()); } leg.setExpectedTime(getComponent().getExpcetedTime()); //This can throw a NumberFormatException when non-numaric values are inserted leg.setWaitingTimeLimit(getComponent().getWaitingTimeLimit()); } catch (Exception e) { } } @Override public void validate() throws WizardValidationException { ScheduledLeg scheduledLeg; try { scheduledLeg = component.getSchedueldLeg(); validator.validate(scheduledLeg); } catch (NumberFormatException e) { throw new WizardValidationException(null, "Expected time or waiting time contains non valid input", null); } catch (ValidationException ex) { throw new WizardValidationException(null, ex.getMessage(), null); } } }