You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wicket.apache.org by Martin Grigorov <mg...@apache.org> on 2010/12/21 10:21:24 UTC
Re: svn commit: r1051262 - in /wicket/trunk/wicket-datetime/src:
main/java/org/apache/wicket/extensions/yui/calendar/ test/java/org/apache/wicket/extensions/yui/calendar/
DateField is no more FormComponentPanel, but now extends DateTimeField and
just sets the time related components to invisible.
Should we do the same for the recently added TimeField ?
On Mon, Dec 20, 2010 at 8:51 PM, <jd...@apache.org> wrote:
> Author: jdonnerstag
> Date: Mon Dec 20 19:51:09 2010
> New Revision: 1051262
>
> URL: http://svn.apache.org/viewvc?rev=1051262&view=rev
> Log:
> WICKET-3249 fixed DateConverter improperly converts time, causing different
> results between DateField and DateTimeField
>
> Removed:
>
> wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.html
> Modified:
>
> wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
>
> wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
>
> wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java
>
> Modified:
> wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
> URL:
> http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java?rev=1051262&r1=1051261&r2=1051262&view=diff
>
> ==============================================================================
> ---
> wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
> (original)
> +++
> wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
> Mon Dec 20 19:51:09 2010
> @@ -19,10 +19,7 @@ package org.apache.wicket.extensions.yui
> import java.util.Date;
>
> import org.apache.wicket.datetime.markup.html.form.DateTextField;
> -import org.apache.wicket.markup.html.form.FormComponentPanel;
> import org.apache.wicket.model.IModel;
> -import org.apache.wicket.model.PropertyModel;
> -import org.joda.time.MutableDateTime;
>
> /**
> * Works on a {@link java.util.Date} object. Displays a {@link
> DateTextField} and a
> @@ -53,14 +50,10 @@ import org.joda.time.MutableDateTime;
> *
> * @author eelcohillenius
> */
> -public class DateField extends FormComponentPanel<Date>
> +public class DateField extends DateTimeField
> {
> private static final long serialVersionUID = 1L;
>
> - private MutableDateTime date;
> -
> - private DateTextField dateField;
> -
> /**
> * Construct.
> *
> @@ -80,116 +73,9 @@ public class DateField extends FormCompo
> public DateField(String id, IModel<Date> model)
> {
> super(id, model);
> - setType(Date.class);
> - }
> -
> - /**
> - * Gets date.
> - *
> - * @return date
> - */
> - public Date getDate()
> - {
> - return (date != null) ? date.toDate() : null;
> - }
> -
> - /**
> - * @see org.apache.wicket.markup.html.form.FormComponent#getInput()
> - */
> - @Override
> - public String getInput()
> - {
> - // since we override convertInput, we can let this method
> return a value
> - // that is just suitable for error reporting
> - return dateField.getInput();
> - }
> -
> - /**
> - * Sets date.
> - *
> - * @param date
> - * date
> - */
> - public void setDate(Date date)
> - {
> - this.date = (date != null) ? new MutableDateTime(date) :
> null;
> - setDefaultModelObject(date);
> - }
> -
> - /**
> - * Sets the converted input. In this case, we're really just
> interested in the nested date
> - * field, as that is the element that receives the real user input.
> So we're just passing that
> - * on.
> - * <p>
> - * Note that overriding this method is a better option than
> overriding {@link #updateModel()}
> - * like the first versions of this class did. The reason for that
> is that this method can be
> - * used by form validators without having to depend on the actual
> model being updated, and this
> - * method is called by the default implementation of {@link
> #updateModel()} anyway (so we don't
> - * have to override that anymore).
> - * </p>
> - *
> - * @see
> org.apache.wicket.markup.html.form.FormComponent#convertInput()
> - */
> - @Override
> - protected void convertInput()
> - {
> - setConvertedInput(dateField.getConvertedInput());
> - }
> -
> - /**
> - * create a new {@link DateTextField} instance to be added to this
> panel.
> - *
> - * @param id
> - * The id to be used when creating the component
> - * @param dateFieldModel
> - * model that should be used by the {@link
> DateTextField}
> - * @return a new date text field instance
> - */
> - protected DateTextField newDateTextField(final String id,
> - final PropertyModel<Date> dateFieldModel)
> - {
> - return DateTextField.forShortStyle(id, dateFieldModel);
> - }
>
> - /**
> - * @see org.apache.wicket.Component#onBeforeRender()
> - */
> - @Override
> - protected void onBeforeRender()
> - {
> - if (dateField == null)
> - {
> - // intiailize datefield and datepicker
> - PropertyModel<Date> dateFieldModel = new
> PropertyModel<Date>(this, "date");
> - add(dateField = newDateTextField("date",
> dateFieldModel));
> - dateField.add(newDatePicker());
> - }
> -
> - dateField.setRequired(isRequired());
> -
> - // obsolete with WICKET-1919
> - // dateField.setEnabled(isEnabledInHierarchy());
> -
> - Date d = (Date)getDefaultModelObject();
> - if (d != null)
> - {
> - date = new MutableDateTime(d);
> - }
> - else
> - {
> - date = null;
> - }
> -
> - super.onBeforeRender();
> - }
> -
> - /**
> - * Factory method for datepicker that will be added to the field
> - *
> - * @return datepicker instance
> - */
> - protected DatePicker newDatePicker()
> - {
> - return new DatePicker();
> + get("hours").setVisible(false);
> + get("minutes").setVisible(false);
> + get("amOrPmChoice").setVisible(false);
> }
> }
>
> Modified:
> wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
> URL:
> http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java?rev=1051262&r1=1051261&r2=1051262&view=diff
>
> ==============================================================================
> ---
> wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
> (original)
> +++
> wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
> Mon Dec 20 19:51:09 2010
> @@ -23,7 +23,6 @@ import java.util.Map;
> import java.util.TimeZone;
>
> import org.apache.wicket.Session;
> -import org.apache.wicket.datetime.StyleDateConverter;
> import org.apache.wicket.datetime.markup.html.form.DateTextField;
> import org.apache.wicket.markup.html.form.DropDownChoice;
> import org.apache.wicket.markup.html.form.FormComponentPanel;
> @@ -57,8 +56,12 @@ public class DateTimeField extends FormC
> /**
> * Enumerated type for different ways of handling the render part of
> requests.
> */
> - private static enum AM_PM {
> - AM("AM"), PM("PM");
> + public static enum AM_PM {
> + /** */
> + AM("AM"),
> +
> + /** */
> + PM("PM");
>
> /** */
> private String value;
> @@ -322,6 +325,10 @@ public class DateTimeField extends FormC
> try
> {
> boolean use12HourFormat = use12HourFormat();
> + if (hoursField.isVisibleInHierarchy() ==
> false)
> + {
> + hours = 0;
> + }
> if (hours != null)
> {
>
> date.set(DateTimeFieldType.hourOfDay(), hours %
> @@ -378,7 +385,7 @@ public class DateTimeField extends FormC
> */
> protected DateTextField newDateTextField(String id,
> PropertyModel<Date> dateFieldModel)
> {
> - return new DateTextField(id, dateFieldModel, new
> StyleDateConverter(false));
> + return DateTextField.forShortStyle(id, dateFieldModel);
> }
>
> /**
>
> Modified:
> wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java
> URL:
> http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java?rev=1051262&r1=1051261&r2=1051262&view=diff
>
> ==============================================================================
> ---
> wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java
> (original)
> +++
> wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatePickerTest.java
> Mon Dec 20 19:51:09 2010
> @@ -19,17 +19,28 @@ package org.apache.wicket.extensions.yui
> import java.util.Date;
> import java.util.GregorianCalendar;
> import java.util.Locale;
> +import java.util.TimeZone;
>
> import org.apache.wicket.Page;
> import org.apache.wicket.WicketTestCase;
> +import org.apache.wicket.protocol.http.request.WebClientInfo;
> import org.apache.wicket.util.tester.DiffUtil;
> import org.apache.wicket.util.tester.FormTester;
> +import org.slf4j.Logger;
> +import org.slf4j.LoggerFactory;
>
> /**
> *
> */
> public class DatePickerTest extends WicketTestCase
> {
> + /** log. */
> + private static final Logger log =
> LoggerFactory.getLogger(DatePickerTest.class);
> +
> + /**
> + *
> + * @throws Exception
> + */
> public void test1() throws Exception
> {
> myTestExecution(DatesPage1.class,
> "DatesPage1_ExpectedResult.html");
> @@ -52,8 +63,48 @@ public class DatePickerTest extends Wick
> formTester.setValue("dateField:date", "06.11.2010");
> formTester.submit();
> DatesPage2 page = (DatesPage2)tester.getLastRenderedPage();
> - assertEquals(date, page.dateTime);
> - assertEquals(date, page.date);
> +
> + log.error("orig: " + date + "; date: " + page.date + ";
> dateTime: " + page.dateTime);
> + assertEquals(date.toString(), page.dateTime.toString());
> + assertEquals(date.toString(), page.date.toString());
> + }
> +
> + /**
> + *
> + * @throws Exception
> + */
> + public void test3() throws Exception
> + {
> + TimeZone tzClient =
> TimeZone.getTimeZone("America/Los_Angeles");
> + TimeZone tzServer = TimeZone.getTimeZone("Europe/Berlin");
> +
> + System.setProperty("user.timezone",
> tzServer.getDisplayName());
> +
> + Class<? extends Page> pageClass = DatesPage2.class;
> + GregorianCalendar gc = new GregorianCalendar(tzClient);
> + gc.set(2010, 10, 06, 0, 0, 0);
> + Date date = gc.getTime();
> +
> + WebClientInfo clientInfo =
> (WebClientInfo)tester.getSession().getClientInfo();
> + clientInfo.getProperties().setTimeZone(tzClient);
> +
> + tester.getSession().setLocale(Locale.GERMAN);
> + tester.startPage(pageClass);
> + tester.assertRenderedPage(pageClass);
> + FormTester formTester = tester.newFormTester("form");
> + formTester.setValue("dateTimeField:date", "06.11.2010");
> + formTester.setValue("dateTimeField:hours", "00");
> + formTester.setValue("dateTimeField:minutes", "00");
> + formTester.setValue("dateField:date", "06.11.2010");
> + formTester.setValue("dateField:hours", "00");
> + formTester.setValue("dateField:minutes", "00");
> + formTester.submit();
> +
> + DatesPage2 page = (DatesPage2)tester.getLastRenderedPage();
> +
> + log.error("orig: " + date + "; date: " + page.date + ";
> dateTime: " + page.dateTime);
> + assertEquals(date.toString(), page.dateTime.toString());
> + assertEquals(date.toString(), page.date.toString());
> }
>
> /**
>
>
>
Re: svn commit: r1051262 - in /wicket/trunk/wicket-datetime/src:
main/java/org/apache/wicket/extensions/yui/calendar/ test/java/org/apache/wicket/extensions/yui/calendar/
Posted by Andrea Del Bene <ad...@ciseonweb.it>.
+1 for making TimeField a subtype of DateTimeField. currently they have
a considerable amount of code in common so IMHO it would be a good idea
to put them in the same hierarchy.
> DateField is no more FormComponentPanel, but now extends DateTimeField and
> just sets the time related components to invisible.
> Should we do the same for the recently added TimeField ?
>
> On Mon, Dec 20, 2010 at 8:51 PM,<jd...@apache.org> wrote:
>