Index: src/com/google/gwt/demos/datepicker/client/DatePickerDemo.java
===================================================================
--- src/com/google/gwt/demos/datepicker/client/DatePickerDemo.java	(revision 934)
+++ src/com/google/gwt/demos/datepicker/client/DatePickerDemo.java	(working copy)
@@ -118,8 +118,9 @@
             @Override
             public void run() {
               start.setFocus(true);
-            }};
-            t.schedule(350);
+            }
+          };
+          t.schedule(350);
         }
       }
 
@@ -184,6 +185,13 @@
         end.setDateFormat(DateTimeFormat.getLongDateFormat());
       }
     }));
+
+    h2.add(new Button("clear", new ClickListener() {
+      public void onClick(Widget sender) {
+        start.clear();
+        end.clear();
+      }
+    }));
     return v;
   }
 
Index: src/com/google/gwt/widgetideas/datepicker/client/CalendarModel.java
===================================================================
--- src/com/google/gwt/widgetideas/datepicker/client/CalendarModel.java	(revision 934)
+++ src/com/google/gwt/widgetideas/datepicker/client/CalendarModel.java	(working copy)
@@ -25,7 +25,7 @@
 /**
  * Model used to get calendar information.
  */
-@SuppressWarnings({"deprecation"})
+@SuppressWarnings( {"deprecation"})
 public class CalendarModel {
 
   public static final int WEEKS_IN_MONTH = 6;
@@ -67,6 +67,9 @@
    * @return the copy
    */
   public static Date copy(Date date) {
+    if (date == null) {
+      return null;
+    }
     Date newDate = new Date();
     newDate.setTime(date.getTime());
     return newDate;
@@ -346,7 +349,8 @@
   public Date getFirstDayOfCurrentFirstWeek() {
     int wkDayOfMonth1st = curMonthAndYear.getDay();
     if (wkDayOfMonth1st == getLocaleStartingDayOfWeek()) {
-      // always return a copy to allow SimpleCalendarView to adjust first display date
+      // always return a copy to allow SimpleCalendarView to adjust first
+      // display date
       return new Date(curMonthAndYear.getTime());
     } else {
       Date d = new Date(curMonthAndYear.getTime());
Index: src/com/google/gwt/widgetideas/datepicker/client/DateBox.java
===================================================================
--- src/com/google/gwt/widgetideas/datepicker/client/DateBox.java	(revision 934)
+++ src/com/google/gwt/widgetideas/datepicker/client/DateBox.java	(working copy)
@@ -159,6 +159,14 @@
   }
 
   /**
+   * Clears the current selection.
+   */
+  public void clear() {
+    picker.setSelectedDate(null, false);
+    box.setText("");
+  }
+
+  /**
    * Gets the current cursor position in the date box.
    */
   public int getCursorPos() {
Index: src/com/google/gwt/widgetideas/datepicker/client/DatePicker.java
===================================================================
--- src/com/google/gwt/widgetideas/datepicker/client/DatePicker.java	(revision 934)
+++ src/com/google/gwt/widgetideas/datepicker/client/DatePicker.java	(working copy)
@@ -146,7 +146,7 @@
       return getModel().createKeyFromDate(d);
     }
   }
-  
+
   private EventHandlers handlers = new EventHandlers();
 
   private DateStyler styler = new DateStyler();
@@ -360,7 +360,9 @@
     }
 
     selectedDate = CalendarModel.copy(date);
-    addGlobalDateStyle(selectedDate, Styles.SELECTED_CELL);
+    if (selectedDate != null) {
+      addGlobalDateStyle(selectedDate, Styles.SELECTED_CELL);
+    }
   }
 
   /**
