Author: ehillenius
Date: Tue Jun  5 11:56:07 2007
New Revision: 544593

URL: http://svn.apache.org/viewvc?view=rev&rev=544593
Log:
WICKET-500

Modified:
    
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
    
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
    
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java?view=diff&rev=544593&r1=544592&r2=544593
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
 Tue Jun  5 11:56:07 2007
@@ -24,7 +24,6 @@
 import org.apache.wicket.model.PropertyModel;
 import org.joda.time.MutableDateTime;
 
-
 /**
  * Works on a [EMAIL PROTECTED] java.util.Date} object. Displays a date field 
and a
  * [EMAIL PROTECTED] CalendarPopup calendar popup}.
@@ -33,7 +32,6 @@
  */
 public class DateField extends FormComponentPanel
 {
-
        private static final long serialVersionUID = 1L;
 
        private MutableDateTime date;
@@ -64,6 +62,28 @@
        }
 
        /**
+        * Gets 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
+        * [EMAIL PROTECTED] #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 [EMAIL PROTECTED] 
#updateModel()}
+        * anyway (so we don't have to override that anymore).
+        * </p>
+        * 
+        * @return instance of [EMAIL PROTECTED] Date}, possibly null
+        * 
+        * @see 
org.apache.wicket.markup.html.form.FormComponent#getConvertedInput()
+        */
+       public Object getConvertedInput()
+       {
+               return dateField.getConvertedInput();
+       }
+
+       /**
         * Gets date.
         * 
         * @return date
@@ -82,23 +102,7 @@
        public void setDate(Date date)
        {
                this.date = (date != null) ? new MutableDateTime(date) : null;
-       }
-
-       /**
-        * @see org.apache.wicket.markup.html.form.FormComponent#updateModel()
-        */
-       public void updateModel()
-       {
-
-               if (date != null)
-               {
-                       Date d = date.toDate();
-                       setModelObject(d);
-               }
-               else
-               {
-                       setModelObject(null);
-               }
+               setModelObject(date);
        }
 
        /**
@@ -106,7 +110,6 @@
         */
        private void init()
        {
-
                setType(Date.class);
                add(dateField = DateTextField.forShortStyle("date", new 
PropertyModel(this, "date")));
                dateField.add(new DatePicker());
@@ -117,7 +120,6 @@
         */
        protected void onBeforeRender()
        {
-
                Date d = (Date)getModelObject();
                if (d != null)
                {

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java?view=diff&rev=544593&r1=544592&r2=544593
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
 Tue Jun  5 11:56:07 2007
@@ -48,7 +48,6 @@
 // systems with AM/PM, others have 24 hour systems
 public class DateTimeField extends FormComponentPanel
 {
-
        /**
         * Enumerated type for different ways of handling the render part of
         * requests.
@@ -56,7 +55,6 @@
        // enums are mucho nicer, but let's keep this project at 1.4 for now
        private static class AM_PM extends EnumeratedType
        {
-
                private static final long serialVersionUID = 1L;
 
                static final AM_PM AM = new AM_PM("AM");
@@ -126,6 +124,67 @@
        }
 
        /**
+        * Gets the converted input. It combines the inputs of the nested date,
+        * hours, minutes and am/pm fields and constructs a date from it.
+        * <p>
+        * Note that overriding this method is a better option than overriding
+        * [EMAIL PROTECTED] #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 [EMAIL PROTECTED] 
#updateModel()}
+        * anyway (so we don't have to override that anymore).
+        * </p>
+        * 
+        * @return instance of [EMAIL PROTECTED] Date}, possibly null
+        * 
+        * @see 
org.apache.wicket.markup.html.form.FormComponent#getConvertedInput()
+        */
+       public Object getConvertedInput()
+       {
+               MutableDateTime date = new 
MutableDateTime(dateField.getConvertedInput());
+               Integer hours = (Integer)hoursField.getConvertedInput();
+               Integer minutes = (Integer)minutesField.getConvertedInput();
+               AM_PM amOrPm = (AM_PM)amOrPmChoice.getConvertedInput();
+
+               if (date != null)
+               {
+                       try
+                       {
+                               TimeZone zone = getClientTimeZone();
+                               if (zone != null)
+                               {
+                                       
date.setZone(DateTimeZone.forTimeZone(zone));
+                               }
+
+                               if (hours != null)
+                               {
+                                       
date.set(DateTimeFieldType.hourOfHalfday(), hours.intValue() % 12);
+                                       date.setMinuteOfHour((minutes != null) 
? minutes.intValue() : 0);
+                               }
+                               if (amOrPm == AM_PM.PM)
+                               {
+                                       
date.set(DateTimeFieldType.halfdayOfDay(), 1);
+                               }
+                               else
+                               {
+                                       
date.set(DateTimeFieldType.halfdayOfDay(), 0);
+                               }
+
+                               // the date will be in the server's timezone
+                               return date.toDate();
+                       }
+                       catch (RuntimeException e)
+                       {
+                               DateTimeField.this.error(e.getMessage());
+                               invalid();
+                       }
+
+               }
+
+               return null;
+       }
+
+       /**
         * Gets date.
         * 
         * @return date
@@ -175,6 +234,7 @@
        public void setDate(Date date)
        {
                this.date = (date != null) ? new MutableDateTime(date) : null;
+               setModelObject(date);
        }
 
        /**
@@ -200,53 +260,6 @@
        }
 
        /**
-        * @see org.apache.wicket.markup.html.form.FormComponent#updateModel()
-        */
-       public void updateModel()
-       {
-               if (date != null)
-               {
-                       try
-                       {
-                               TimeZone zone = getClientTimeZone();
-                               if (zone != null)
-                               {
-                                       
date.setZone(DateTimeZone.forTimeZone(zone));
-                               }
-
-                               if (hours != null)
-                               {
-                                       
date.set(DateTimeFieldType.hourOfHalfday(), hours.intValue() % 12);
-                                       date.setMinuteOfHour((minutes != null) 
? minutes.intValue() : 0);
-                               }
-                               if (amOrPm == AM_PM.PM)
-                               {
-                                       
date.set(DateTimeFieldType.halfdayOfDay(), 1);
-                               }
-                               else
-                               {
-                                       
date.set(DateTimeFieldType.halfdayOfDay(), 0);
-                               }
-
-                               // the date will be in the server's timezone
-                               Date d = date.toDate();
-                               setModelObject(d);
-
-                       }
-                       catch (RuntimeException e)
-                       {
-                               DateTimeField.this.error(e.getMessage());
-                               invalid();
-                       }
-
-               }
-               else
-               {
-                       setModelObject(null);
-               }
-       }
-
-       /**
         * Gets the client's time zone.
         * 
         * @return The client's time zone or null
@@ -263,7 +276,6 @@
 
        private void init()
        {
-
                setType(Date.class);
                add(dateField = DateTextField.forShortStyle("date", new 
PropertyModel(this, "date")));
                dateField.add(new DatePicker());
@@ -283,7 +295,6 @@
         */
        protected void onBeforeRender()
        {
-
                Date d = (Date)getModelObject();
                if (d != null)
                {

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java?view=diff&rev=544593&r1=544592&r2=544593
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
 Tue Jun  5 11:56:07 2007
@@ -548,9 +548,14 @@
        }
 
        /**
+        * Gets the converter input. You typically should not override this 
method,
+        * unless you are writing a
+        * [EMAIL PROTECTED] FormComponentPanel special form component} that 
embeds other form
+        * components that receive the real user input.
+        * 
         * @return value of input converted into appropriate type if any was set
         */
-       public final Object getConvertedInput()
+       public Object getConvertedInput()
        {
                return convertedInput;
        }
@@ -833,8 +838,10 @@
         */
        public final boolean isValid()
        {
-               class IsValidVisitor implements IVisitor {
+               class IsValidVisitor implements IVisitor
+               {
                        boolean valid = true;
+
                        public Object formComponent(IFormVisitorParticipant 
formComponent)
                        {
                                final FormComponent fc = 
(FormComponent)formComponent;


Reply via email to