package jfxtras.scene.control.agenda.icalendar.editors.revisors; import java.time.temporal.Temporal; import java.time.temporal.TemporalAmount; import jfxtras.icalendarfx.components.VTodo; import jfxtras.icalendarfx.properties.component.time.DateTimeDue; import jfxtras.icalendarfx.utilities.DateTimeUtilities; /** * Reviser for {@link VTodo} * * @author David Bal * */ public class ReviserVTodo extends ReviserLocatable<ReviserVTodo, VTodo> { public ReviserVTodo(VTodo component) { super(component); } @Override public void adjustDateTime(VTodo vComponentEditedCopy) { super.adjustDateTime(vComponentEditedCopy); TemporalAmount duration = DateTimeUtilities.temporalAmountBetween(getStartRecurrence(), getEndRecurrence()); if (vComponentEditedCopy.getDuration() != null) { vComponentEditedCopy.setDuration(duration); } else if (vComponentEditedCopy.getDateTimeDue() != null) { Temporal due = vComponentEditedCopy.getDateTimeStart().getValue().plus(duration); vComponentEditedCopy.setDateTimeDue(new DateTimeDue(due)); } else { throw new RuntimeException("Either DTEND or DURATION must be set"); } } }