Greetings Mark,
It works for me.  Thank you so much.

Thank you,

Dan Beatty, ABD
Ph.D. Student 
Texas Tech University
dan.bea...@mac.com
http://web.me.com/danielbeatty/My_Home_Page/Welcome.html
(806)438-6620
On Jan 19, 2011, at 1:31 PM, Mark Wardle wrote:

> This is probably hopelessly broken but it seems to work for me:
> 
> Add the rule "shouldEditTime" for the property.
> 
> ****************
> RSD2WDatePicker.html
> <webobject name="ChooseDate"/><webobject
> name="ShouldEditTime"><webobject name="Hours"/><webobject
> name="Minutes"/></webobject>
> 
> ****************
> RSD2WDatePicker.wod
> ChooseDate: AjaxDatePicker {
>       value = objectPropertyValue;
>       format = format;        
> }
> 
> ShouldEditTime: WOConditional {
>       condition = shouldEditTime;
> }
> 
> Hours: WOPopUpButton {
>       list = hoursList;
>       selection = hours;
> }
> Minutes: WOPopUpButton {
>       list = minutesList;
>       selection = minutes;
> }
> 
> ****************
> RSD2WDatePicker.java
> 
> package com.eldrix.rsd2w;
> 
> import java.util.Calendar;
> import java.util.Date;
> import java.util.GregorianCalendar;
> 
> import com.webobjects.appserver.WOContext;
> import com.webobjects.appserver.WORequest;
> import com.webobjects.foundation.NSArray;
> import com.webobjects.foundation.NSMutableArray;
> import com.webobjects.foundation.NSTimestamp;
> import com.webobjects.foundation.NSValidation;
> 
> import er.directtoweb.components.ERDCustomEditComponent;
> import er.extensions.formatters.ERXTimestampFormatter;
> 
> /**
> * D2W component to edit a date.
> * Uses Chuck Hill's AjaxDatePicker
> *
> * @binding formatter : a text string (format) for the date format
> * @binding shouldEditTime : whether to edit the time as well?
> *
> * FIXME: This doesn't use localisation...
> *
> * @author mark
> * @see er.ajax.AjaxDatePicker
> */
> public class RSD2WDatePicker extends ERDCustomEditComponent {
>       protected String _format;
>       protected GregorianCalendar _calendar;
>       protected static final NSArray<String> _hoursList = new
> NSMutableArray<String>() {{
>                       for(int i=0; i < 24; i++) {
>                               add(String.format("%02d", i));
>                       }
>       }};
>       protected static final NSArray<String> _minutesList = new
> NSMutableArray<String>() {{
>               for (int i=0; i < 60; i++) {
>                       add(String.format("%02d", i));
>               }
>       }};
>       
>       public interface Keys extends ERDCustomEditComponent.Keys {
>               public static final String formatter = "formatter";
>               public static final String shouldEditTime = "shouldEditTime";
>       }
> 
>       public RSD2WDatePicker(WOContext context) {
>               super(context);
>       }
>       
>       public NSArray<String> hoursList() {
>               return _hoursList;
>       }
>       public NSArray<String> minutesList() {
>               return _minutesList;
>       }
> 
>       /**
>        * Initialises calendar from the current property value.
>        * @return
>        */
>       public GregorianCalendar calendar() {
>               if (_calendar == null) {
>                       _calendar = new GregorianCalendar();
>                       _calendar.setLenient(true);
>                       if (date() != null) {
>                               _calendar.setTime(date());
>                       }
>               }
>               return _calendar;
>       }
>       
>       public String hours() {
>               return String.format("%02d", 
> calendar().get(Calendar.HOUR_OF_DAY));
>       }
>       public String minutes() {
>               return String.format("%02d", calendar().get(Calendar.MINUTE));
>       }
>       
>       public void setHours(String hours) {
>               calendar().set(Calendar.HOUR_OF_DAY, Integer.parseInt(hours));
>       }
>       public void setMinutes(String minutes) {
>               calendar().set(Calendar.MINUTE, Integer.parseInt(minutes));
>       }
>       
>       /**
>        * We try to keep our calendar object up to date with property changes.
>        */
>       @Override public void setObjectPropertyValue(Object value) {
>               if (value == null || value instanceof Date) {
>                       if (value != null) {
>                               calendar().setTime((Date)value);
>                       }
>                       super.setObjectPropertyValue(value);
>               }
>               else throw new IllegalArgumentException("RSD2WDatePicker must be
> used with an NSTimestamp");
>       }
>       
>       public NSTimestamp date() {
>               Object o = objectPropertyValue();
>               if (o == null || o instanceof NSTimestamp) {
>                       return (NSTimestamp) o;
>               }
>               throw new IllegalArgumentException("RSD2WDatePicker must be used
> with an NSTimestamp");
>       }
> 
>       @Override public boolean synchronizesVariablesWithBindings() {
>               return false;
>       }
> 
>       public String format() {
>               if(_format == null) {
>                       _format = (String)valueForBinding("formatter");
>               }
>               if(_format == null || _format.length() == 0) {
>                       _format = ERXTimestampFormatter.DEFAULT_PATTERN;
>               }
>               return _format;
>       }
> 
>       public void setFormatter(String format) {
>               _format = format;
>       }
> 
>       public boolean shouldEditTime() {
>               return booleanValueForBinding(Keys.shouldEditTime);
>       }
> 
>       public void takeValuesFromRequest (WORequest request, WOContext 
> context) {
>               super.takeValuesFromRequest (request,context);
>               if (_calendar != null && objectPropertyValue() != null) {
>                       NSTimestamp date = new 
> NSTimestamp(calendar().getTime());
>                       try {   
>                               object().validateTakeValueForKeyPath(date, 
> key());
>                       } catch (NSValidation.ValidationException v) {
>                               
> parent().validationFailedWithException(v,date,key());
>                       } catch(Exception e) {
>                               
> parent().validationFailedWithException(e,date,key());
>                       }
>               }
>       }
> }
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/danielbeatty%40mac.com
> 
> This email sent to danielbea...@mac.com

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to