package org.jblooming.waf.html.input; import org.jblooming.utilities.JSP; import org.jblooming.waf.html.core.HtmlBootstrap; import org.jblooming.waf.html.core.JspHelper; import org.jblooming.waf.view.PageState; import javax.servlet.ServletException; import javax.servlet.jsp.PageContext; import java.io.IOException; public class DateDurationInput extends JspHelper implements HtmlBootstrap { public DateField startField; public String onBlurStartAdditionalScript; public CheckField startMilestoneField; public DateField endField; public String onBlurEndAdditionalScript; public CheckField endMilestoneField; public TextField durationField; public String onBlurDurationAdditionalScript; public boolean durationInWorkingDays=true; public boolean durationInTime=false; public static final String COMPUTE_FIELDS = "CMPF"; public DateDurationInput(String prefix, PageState pageState) { this(prefix + "START", prefix + "STARTISMILES", prefix + "END", prefix + "ENDISMILES", prefix + "DURATION", pageState); } public DateDurationInput(String startField, String startMilestoneField, String endField, String endMilestoneField, String durationField, PageState pageState) { this.startField = new DateField(startField, pageState); this.startMilestoneField = new CheckField(startMilestoneField, " ", false); this.endField = new DateField(endField, pageState); this.endMilestoneField = new CheckField(endMilestoneField, " ", false); this.durationField = TextField.getDurationInDaysInstance(durationField); this.startField.onblurOnDateValid = JSP.w(onBlurStartAdditionalScript) + "resynchDates('START','" + this.startField.id + "','" + this.startMilestoneField.id + "','" + this.durationField.id + "','" + this.endField.id + "','" + this.endMilestoneField.id + "');"; this.startMilestoneField.additionalOnclickScript = "resynchDates('MILES','" + this.startField.id + "','" + this.startMilestoneField.id + "','" + this.durationField.id + "','" + this.endField.id + "','" + this.endMilestoneField.id + "');"; this.endField.onblurOnDateValid = JSP.w(onBlurEndAdditionalScript) + "resynchDates('END','" + this.startField.id + "','" + this.startMilestoneField.id + "','" + this.durationField.id + "','" + this.endField.id + "','" + this.endMilestoneField.id + "');"; this.endMilestoneField.additionalOnclickScript = "resynchDates('MILES','" + this.startField.id + "','" + this.startMilestoneField.id + "','" + this.durationField.id + "','" + this.endField.id + "','" + this.endMilestoneField.id + "');"; this.durationField.script = " autocomplete=\"off\" onBlur=\"" + JSP.w(onBlurDurationAdditionalScript) + "resynchDates('TASK_DURATION','" + this.startField.id + "','" + this.startMilestoneField.id + "','" + this.durationField.id + "','" + this.endField.id + "','" + this.endMilestoneField.id + "');\" "; this.urlToInclude = "/commons/layout/dateDurationInput/partDateDurationInput.jsp"; } public String getDiscriminator() { return DateDurationInput.class.getName(); } public boolean validate(PageState pageState) throws IOException, ServletException { return true; } public void init(PageContext pageContext) { PageState ps = PageState.getCurrentPageState(); if (!ps.initedElements.contains(getDiscriminator())) { pageContext.getRequest().setAttribute(ACTION, INITIALIZE); super.toHtml(pageContext); ps.initedElements.add(getDiscriminator()); } } public void drawStart(PageContext pageContext) { init(pageContext); startField.toHtml(pageContext); } public void drawStartMiles(PageContext pageContext) { init(pageContext); startMilestoneField.toHtml(pageContext); } public void drawDuration(PageContext pageContext) { init(pageContext); durationField.toHtml(pageContext); } public void drawEnd(PageContext pageContext) { init(pageContext); endField.toHtml(pageContext); } public void drawEndMiles(PageContext pageContext) { init(pageContext); endMilestoneField.toHtml(pageContext); } /** * @deprecated */ public void toHtml(PageContext pageContext) { throw new RuntimeException("Call drawStart,drawStartMiles,drawDuration,drawEnd and drawEndMiles"); } }