/* * File : DateManager.java * Created : 14-feb-2003 16:38 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import edu.xtec.jclic.report.ReportUtils; import java.util.Date; import java.util.GregorianCalendar; /** * * @author Francesc Busquets (fbusquets@xtec.cat) * @version 13.08.09 */ public class DateManager { public static final String FROM="from", TO="to"; //public static final String FROM_FORM="fromForm", TO_FORM="toForm"; protected Date dFrom, dTo, firstDate, today; private GregorianCalendar calendar; protected Basic rp; /** Creates a new instance of DateManager */ public DateManager(Basic rp) { this.rp=rp; } public boolean init() throws Exception{ firstDate=Basic.bridge.getMinSessionDate(); today=new Date(); if(firstDate==null || firstDate.compareTo(today)>0) firstDate=today; dFrom=rp.getDateParam(FROM, firstDate, false); dTo=rp.getDateParam(TO, today, true); if(dFrom.compareTo(dTo)>0) dFrom=dTo; System.out.println("From: "+dFrom+" To: "+dTo); return true; } public GregorianCalendar getCalendar(){ if(calendar==null) calendar=new GregorianCalendar(); return calendar; } public void writeHiddenFields(StringBuilder sb) throws Exception{ sb.append("<input type=\"hidden\" name=\"").append(FROM).append("\" value=\"").append(ReportUtils.dateToStr(dFrom)).append("\">\n"); sb.append("<input type=\"hidden\" name=\"").append(TO).append("\" value=\"").append(ReportUtils.dateToStr(dTo)).append("\">\n"); } public void writeDateScript(StringBuilder sb){ sb.append("<script language=\"JavaScript\" type=\"text/javascript\">\n"); sb.append("<!--\n"); sb.append(" function updateDateFrom(){\n"); sb.append(" mainForm.from.value=\n"); sb.append(" \"\"+mainForm.yearFrom.options[mainForm.yearFrom.selectedIndex].value+\n"); sb.append(" \"-\"+mainForm.monthFrom.options[mainForm.monthFrom.selectedIndex].value+\n"); sb.append(" \"-\"+mainForm.dayFrom.options[mainForm.dayFrom.selectedIndex].value;\n"); sb.append(" };\n"); sb.append(" function updateDateTo(){\n"); sb.append(" mainForm.to.value=\n"); sb.append(" \"\"+mainForm.yearTo.options[mainForm.yearTo.selectedIndex].value+\n"); sb.append(" \"-\"+mainForm.monthTo.options[mainForm.monthTo.selectedIndex].value+\n"); sb.append(" \"-\"+mainForm.dayTo.options[mainForm.dayTo.selectedIndex].value;\n"); sb.append(" };\n"); sb.append("//-->\n"); sb.append("</script>\n"); } protected void zonaData(StringBuilder sb, String button){ liniaData(sb, true); liniaData(sb, false); if(button!=null){ sb.append("<p>").append(button).append("</p>"); } } protected void liniaData(StringBuilder sb, boolean bFrom){ String[] n=Basic.getFormattedNumbers(); String msgKey = bFrom ? "report_from" : "report_to"; //String formName = bFrom ? FROM_FORM : TO_FORM; //String type = bFrom ? FROM : TO; String type = bFrom ? "From" : "To"; String ctrlName = Basic.MAIN_FORM+"."+type; //String actionStr=" onChange=updateDate"+formName+"()"; String actionStr="\" onChange=updateDate"+type+"()"; GregorianCalendar c=getCalendar(); c.setTime(firstDate); int firstYear=c.get(GregorianCalendar.YEAR); c.setTime(today); int currentYear=c.get(GregorianCalendar.YEAR); c.setTime(bFrom ? dFrom : dTo); sb.append("<p><strong>").append(Basic.toNbsp(rp.getMsg(msgKey))).append("</strong> "); sb.append("<select name=\"day").append(type).append("\" onChange=\"updateDate").append(type).append("()\">\n"); int x=c.get(GregorianCalendar.DAY_OF_MONTH); for(int i=1; i<=31; i++){ sb.append("<option"); if (i==x) sb.append(" selected"); sb.append(" value=\"").append(n[i]).append("\">").append(n[i]).append("</option>\n"); } sb.append("</select> <select name=\"month").append(type).append("\" onChange=\"updateDate").append(type).append("()\">\n"); x=c.get(GregorianCalendar.MONTH); for(int i=0; i<12; i++){ sb.append("<option"); if(i==x) sb.append(" selected"); sb.append(" value=\"").append(n[i+1]).append("\">").append(Basic.filter(rp.months[i])).append("</option>\n"); } sb.append("</select> <select name=\"year").append(type).append("\" onChange=\"updateDate").append(type).append("()\">\n"); x=c.get(GregorianCalendar.YEAR); for (int i=firstYear; i<=currentYear; i++){ sb.append("<option"); if(i==x) sb.append(" selected"); sb.append(" value=\"").append(i).append("\">").append(i).append("</option>\n"); } sb.append("</select></p>\n"); } }