You can do 

cvs diff -u DateSelector.java

Which will diff your working version with the one in CVS.  The output of
that is what we need.

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Monday, February 05, 2001 7:17 AM
> To: [EMAIL PROTECTED]
> Subject: [PATCH]DateSelector.java
> 
> 
> Below is a modified version of the DateSelector class that 
> adds two more
> constructors to allow you to specify the range of years given in the
> selector.  I hope its ok as I'm not the hottest java coder :-)
> 
> Sorry its not a diff - I'm still figuring this stuff out.
> 
> Regards,
> 
> Jon North
> 
> 
> package org.apache.turbine.util;
> 
> /*
>  * Copyright (c) 1997-2000 The Java Apache Project.  All 
> rights reserved.
>  *
>  * Redistribution and use in source and binary forms, with or without
>  * modification, are permitted provided that the following conditions
>  * are met:
>  *
>  * 1. Redistributions of source code must retain the above copyright
>  *    notice, this list of conditions and the following disclaimer.
>  *
>  * 2. Redistributions in binary form must reproduce the above 
> copyright
>  *    notice, this list of conditions and the following disclaimer in
>  *    the documentation and/or other materials provided with the
>  *    distribution.
>  *
>  * 3. All advertising materials mentioning features or use of this
>  *    software must display the following acknowledgment:
>  *    "This product includes software developed by the Java Apache
>  *    Project for use in the Apache JServ servlet engine project
>  *    <http://java.apache.org/>."
>  *
>  * 4. The names "Apache JServ", "Apache JServ Servlet 
> Engine", "Turbine",
>  *    "Apache Turbine", "Turbine Project", "Apache Turbine 
> Project" and
>  *    "Java Apache Project" must not be used to endorse or 
> promote products
>  *    derived from this software without prior written permission.
>  *
>  * 5. Products derived from this software may not be called 
> "Apache JServ"
>  *    nor may "Apache" nor "Apache JServ" appear in their 
> names without
>  *    prior written permission of the Java Apache Project.
>  *
>  * 6. Redistributions of any form whatsoever must retain the following
>  *    acknowledgment:
>  *    "This product includes software developed by the Java Apache
>  *    Project for use in the Apache JServ servlet engine project
>  *    <http://java.apache.org/>."
>  *
>  * THIS SOFTWARE IS PROVIDED BY THE JAVA APACHE PROJECT "AS 
> IS" AND ANY
>  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
>  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
>  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE JAVA APACHE 
> PROJECT OR
>  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
>  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
>  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
>  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
>  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
>  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
>  * OF THE POSSIBILITY OF SUCH DAMAGE.
>  *
>  * This software consists of voluntary contributions made by many
>  * individuals on behalf of the Java Apache Group. For more 
> information
>  * on the Java Apache Project and the Apache JServ Servlet 
> Engine project,
>  * please see <http://java.apache.org/>.
>  *
>  */
> 
> // Java Core Classes
> import java.util.*;
> import java.text.*;
> 
> // ECS stuff.
> import org.apache.ecs.html.*;
> import org.apache.ecs.*;
> 
> /**
>  * DateSelector is a utility class to handle the creation of a set of
>  * date popup menus.  The code is broken into a set of static methods
>  * for quick and easy access to the individual select objects:
>  *
>  *  <pre>
>  *  ElementContainer ec dateSelect = new ElementContainer();
>  *  String myName = "mydate";
>  *  ec.addElement(DateSelector.getMonthSelector(myName));
>  *  ec.addElement(DateSelector.getDaySelector(myName));
>  *  ec.addElement(DateSelector.getYearSelector(myName));
>  *  </pre>
>  *
>  * There are also methods which will use attributes to build a
>  * complete month,day,year selector:
>  *
>  *  <pre>
>  *  DateSelector ds = new DateSelector(myName);
>  *  dateSelect = ds.ecsOutput();
>  *  </pre>
>  *
>  * The above element container would use the onChange setting and may
>  * hide the selected day if set via showDays().<br>
>  *
>  * @author <a href="mailto:[EMAIL PROTECTED]">Jeffrey D. Brekke</a>
>  * @author <a href="mailto:[EMAIL PROTECTED]">Jon S. Stevens</a>
>  * @author <a href="mailto:[EMAIL PROTECTED]">Leon Atkinson</a>
>  * @author <a href="mailto:[EMAIL PROTECTED]">Jon North</a>
>  * @version $Id: DateSelector.java,v 1.3 2000/09/01 22:11:27 
> gonzalo Exp $
>  */
> public class DateSelector
> {
>     /** Prefix for date names. */
>     public static final String DEFAULT_PREFIX   = "DateSelector";
> 
>     /** Suffix for day parameter. */
>     public static final String DAY_SUFFIX   = "_day";
> 
>     /** Suffix for month parameter. */
>     public static final String MONTH_SUFFIX = "_month";
> 
>     /** Suffix for year parameter. */
>     public static final String YEAR_SUFFIX  = "_year";
> 
>     private Calendar useDate = null;
>     private String selName = null;
>     private static final String[] monthName =
>         new DateFormatSymbols().getMonths();
>     private String onChange = null;
>     private boolean onChangeSet = false;
>     private boolean showDays = true;
>     private int setDay = 0;
> 
>     private static int yearsAfter = 5;
>     private static int yearsBefore = 5;
> 
> 
>     /**
>      * Constructor defaults to current date and uses the default
>      * prefix: <pre>DateSelector.DEFAULT</pre>
>      */
>     public DateSelector( )
>     {
>         this.selName = DEFAULT_PREFIX;
>         this.useDate = Calendar.getInstance();
>         this.useDate.setTime ( new Date() );
>     }
> 
>     /**
>      * Constructor, uses the date set in a calendar that has been
>      * already passed in (with the date set correctly).
>      *
>      * @param selName A String with the selector name.
>      * @param useDate A Calendar with a date.
>      */
>     public DateSelector( String selName, Calendar useDate )
>     {
>         this.useDate = useDate;
>         this.selName = selName;
>     }
> 
>     /**
>      * Constructor, uses the date set in a calendar that has been
>      * already passed in (with the date set correctly).
>      *
>      * @param selName A String with the selector name.
>      * @param useDate A Calendar with a date.
>      * @param yearsBefore Number of years prior to useDate to show in
> selector
>      * @param yearsAfter Number of years after useDate to 
> show in selector
>      */
>     public DateSelector( String selName, Calendar useDate, 
> int yearsBefore,
> int yearsAfter )
>     {
>         this.useDate = useDate;
>         this.selName = selName;
>         if (yearsBefore < 0) yearsBefore = 0;
>         this.yearsBefore = yearsBefore;
>         if (yearsAfter  < 0) yearsAfter  = 0;
>         this.yearsAfter  = yearsAfter ;
>     }
> 
>     /**
>      * Constructor defaults to current date.
>      *
>      * @param selName A String with the selector name.
>      * @param yearsBefore Number of years prior to useDate to show in
> selector
>      * @param yearsAfter Number of years after useDate to 
> show in selector
>      */
>     public DateSelector( String selName, int yearsBefore, int 
> yearsAfter )
>     {
>         this.selName = selName;
>         this.useDate = Calendar.getInstance();
>         this.useDate.setTime ( new Date() );
>         if (yearsBefore < 0) yearsBefore = 0;
>         this.yearsBefore = yearsBefore;
>         if (yearsAfter < 0) yearsAfter = 0;
>         this.yearsAfter = yearsAfter;
>     }
> 
>     /**
>      * Constructor defaults to current date.
>      *
>      * @param selName A String with the selector name.
>      */
>     public DateSelector( String selName )
>     {
>         this.selName = selName;
>         this.useDate = Calendar.getInstance();
>         this.useDate.setTime ( new Date() );
>     }
> 
>     /**
>      * Adds the onChange to all of <SELECT> tags.  This is limited to
>      * one function for all three popups and is only used when the
>      * output() methods are used.  Individual getMonth, getDay,
>      * getYear static methods will not use this setting.
>      *
>      * @param string A String to use for onChange attribute.  If null,
>      * then nothing will be set.
>      * @return A DateSelector (self).
>      */
>     public DateSelector setOnChange ( String onChange )
>     {
>         if (onChange != null)
>         {
>             this.onChange = onChange;
>             this.onChangeSet = true;
>         }
>         else
>         {
>             this.onChange = null;
>             this.onChangeSet = false;
>         }
>         return this;
>     }
> 
>     /**
>      * Select the day to be selected if the showDays(false) behavior
>      * is used.  Individual getMonth, getDay, getYear static methods
>      * will not use this setting.
>      *
>      * @param day The day.
>      * @return A DateSelector (self).
>      */
>     public DateSelector setDay( int day )
>     {
>         this.setDay = day;
>         this.showDays = false;
>         return this;
>     }
> 
>     /**
>      * Whether or not to show the days as a popup menu.  The days will
>      * be a hidden parameter and the value set with setDay is used.
>      * Individual getMonth, getDay, getYear static methods will not
>      * use this setting.
>      *
>      * @param show True if the day should be shown.
>      * @return A DateSelector (self).
>      */
>     public DateSelector setShowDay ( boolean show )
>     {
>         this.showDays = false;
>         return this;
>     }
> 
>     /**
>      * Set the selector name prefix.  Individual getMonth, getDay,
>      * getYear static methods will not use this setting.
>      *
>      * @param selname A String with the select name prefix.
>      */
>     public void setSelName( String selName )
>     {
>         this.selName = selName;
>     }
> 
>     /**
>      * Get the selector name prefix.
>      *
>      * @return A String with the select name prefix.
>      */
>     public String getSelName()
>     {
>         return selName;
>     }
> 
>     /**
>      * Return a month selector.
>      *
>      * @param name The name to use for the selected month.
>      * @return A select object with all the months.
>      */
>     public static Select getMonthSelector(String name)
>     {
>         return(getMonthSelector(name, Calendar.getInstance()));
>     }
> 
>     /**
>      * Return a month selector.
>      *
>      * Note: The values of the month placed into the select list are
>      * the month integers starting at 0 (ie: if the user selects
>      * February, the selected value will be 1).
>      *
>      * @param name The name to use for the selected month.
>      * @param now Calendar to start with.
>      * @return A select object with all the months.
>      */
>     public static Select getMonthSelector(String name,
>                                           Calendar now)
>     {
>         Select monthSelect = new Select().setName(name);
> 
>         for (int curMonth = 0;curMonth <= 11; curMonth++)
>         {
>             Option o = new Option();
>             o.addElement(monthName[curMonth]);
>             o.setValue(curMonth);
>             if ((now.get(Calendar.MONTH)) == curMonth)
>             {
>                 o.setSelected(true);
>             }
>             monthSelect.addElement(o);
>         }
>         return(monthSelect);
>     }
> 
>     /**
>      * Return a day selector.
>      *
>      * @param name The name to use for the selected day.
>      * @return A select object with all the days in a month.
>      */
>     public static Select getDaySelector(String name)
>     {
>         return(getDaySelector(name, Calendar.getInstance()));
>     }
> 
>     /**
>      * Return a day selector.
>      *
>      * @param name The name to use for the selected day.
>      * @param now Calendar to start with.
>      * @return A select object with all the days in a month.
>      */
>     public static Select getDaySelector(String name,
>                                         Calendar now)
>     {
>         Select daySelect = new Select().setName(name);
> 
>         for(int currentDay=1; currentDay <= 31; currentDay++)
>         {
>             Option o = new Option();
>             o.addElement(Integer.toString(currentDay));
>             o.setValue(currentDay);
>             if (now.get(Calendar.DAY_OF_MONTH) == currentDay)
>             {
>                 o.setSelected(true);
>             }
>             daySelect.addElement(o);
>         }
>         return(daySelect);
>     }
> 
>     /**
>      * Return a year selector.
>      *
>      * @param name The name to use for the selected year.
>      * @return A select object with all the years starting five years
>      * from now and five years before this year.
>      */
>     public static Select getYearSelector(String name)
>     {
>         return(getYearSelector(name, Calendar.getInstance()));
>     }
> 
>     /**
>      * Return a year selector.
>      *
>      * @param name The name to use for the selected year.
>      * @param now Calendar to start with.
>      * @return A select object with all the years starting 
> yearsAfter years
>      * from now and yearsBefore years before this year.
>      */
>     public static Select getYearSelector(String name,
>                                          Calendar now)
>     {
>         Select yearSelect = new Select().setName(name);
> 
>         int startYear = now.get(Calendar.YEAR);
>         for(int currentYear = startYear - yearsBefore;
>             currentYear <= startYear + yearsAfter;
>             currentYear++)
>         {
>             Option o = new Option();
>             o.addElement(Integer.toString(currentYear));
>             o.setValue(currentYear);
>             if (startYear == currentYear)
>             {
>                 o.setSelected(true);
>             }
>             yearSelect.addElement(o);
>         }
>         return(yearSelect);
>     }
> 
>     /**
>      * Used to build the popupmenu in HTML.  The properties set in the
>      * object are used to generate the correct HTML.  The selName
>      * attribute is used to seed the names of the select lists.  The
>      * names will be generated as follows:
>      *
>      * <ul>
>      *  <li>selName + "_month"</li>
>      *  <li>selName + "_day"</li>
>      *  <li>selName + "_year"</li>
>      * </ul>
>      *
>      * If onChange was set it is also used in the generation of the
>      * output.  The output HTML will list the select lists in the
>      * following order: month day year.
>      *
>      * @return A String with the correct HTML for the date selector.
>      */
>     public String output()
>     {
>         return(ecsOutput().toString());
>     }
> 
>     /**
>      * Used to build the popupmenu in HTML.  The properties set in the
>      * object are used to generate the correct HTML.  The selName
>      * attribute is used to seed the names of the select lists.  The
>      * names will be generated as follows:
>      *
>      * <ul>
>      *  <li>selName + "_month"</li>
>      *  <li>selName + "_day"</li>
>      *  <li>selName + "_year"</li>
>      * </ul>
>      *
>      * The output HTML will list the select lists in the following
>      * order: month day year.
>      *
>      * @return A String with the correct HTML for the date selector.
>      */
>     public String toString()
>     {
>         return(ecsOutput().toString());
>     }
> 
>     /*
>      * Return an ECS container with the month, day, and year select
>      * objects inside.
>      *
>      * @return An ECS container.
>      */
>     public ElementContainer ecsOutput()
>     {
>         if ( this.useDate == null )
>         {
>             this.useDate.setTime ( new Date() );
>         }
> 
>         Select monthSelect = getMonthSelector(selName + MONTH_SUFFIX,
> useDate);
>         ConcreteElement daySelect = null;
>         if (!showDays)
>         {
>             daySelect = new Input(Input.hidden,
>                                   selName + DAY_SUFFIX,
>                                   setDay);
>         }
>         else
>         {
>             Select tmp = getDaySelector(selName + DAY_SUFFIX, 
> useDate);
>             if (onChangeSet)
>                 tmp.setOnChange(onChange);
>             daySelect = tmp;
>         }
>         Select yearSelect = getYearSelector(selName + 
> YEAR_SUFFIX, useDate);
>         if (onChangeSet)
>         {
>             monthSelect.setOnChange(onChange);
>             yearSelect.setOnChange(onChange);
>         }
>         ElementContainer ec = new ElementContainer();
>         ec.addElement(new Comment("== BEGIN
> org.apache.turbine.util.DateSelector.ecsOutput() =="));
>         ec.addElement(monthSelect);
>         ec.addElement(daySelect);
>         ec.addElement(yearSelect);
>         ec.addElement(new Comment("== END
> org.apache.turbine.util.DateSelector.ecsOutput() =="));
>         return (ec);
>     }
> }
> 
> 
> 
> 
> --------------------------------------------------
> DISCLAIMER: This message contains proprietary
> information some or all of which may be
> confidential and/or legally privileged. It is for
> the intended recipient only who may use and apply
> the information only for the intended purpose.
> Internet communications are not secure and
> therefore the British Biotech group does not
> accept legal responsibility for the contents of
> this message. Any views or opinions presented are
> only those of the author and not those of the
> British Biotech group. If you are not the intended
> recipient please delete this e-mail and notify the
> author immediately by calling ++44 (0)1865 748747;
> do not use, disclose, distribute, copy, print or
> rely on this e-mail.
> 
> 
> ------------------------------------------------------------
> To subscribe:        [EMAIL PROTECTED]
> To unsubscribe:      [EMAIL PROTECTED]
> Search: <http://www.mail-archive.com/turbine%40list.working-dogs.com/>
> Problems?:           [EMAIL PROTECTED]
> 


------------------------------------------------------------------------

This message has been scanned for viruses with Trend Micro's Interscan VirusWall.


------------------------------------------------------------
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Search: <http://www.mail-archive.com/turbine%40list.working-dogs.com/>
Problems?:           [EMAIL PROTECTED]

Reply via email to