Index: src/com/google/gwt/gen2/datepicker/client/DefaultCalendarView.java
===================================================================
--- src/com/google/gwt/gen2/datepicker/client/DefaultCalendarView.java	(revision 1075)
+++ src/com/google/gwt/gen2/datepicker/client/DefaultCalendarView.java	(working copy)
@@ -29,7 +29,7 @@
  */
 
 @SuppressWarnings(/* Date manipulation required */{"deprecation"})
-class DefaultCalendarView extends CalendarView {
+public final class DefaultCalendarView extends CalendarView {
 
   /**
    * Cell grid.
Index: src/com/google/gwt/gen2/datepicker/client/dropdownselector/DropDownMonthSelector.java
===================================================================
--- src/com/google/gwt/gen2/datepicker/client/dropdownselector/DropDownMonthSelector.java	(revision 0)
+++ src/com/google/gwt/gen2/datepicker/client/dropdownselector/DropDownMonthSelector.java	(revision 0)
@@ -0,0 +1,132 @@
+package com.google.gwt.gen2.datepicker.client.dropdownselector;
+
+import com.google.gwt.gen2.datepicker.client.MonthSelector;
+import com.google.gwt.gen2.event.logical.shared.SelectionEvent;
+import com.google.gwt.gen2.event.logical.shared.SelectionHandler;
+import com.google.gwt.gen2.selection.client.DropDownListBox;
+import com.google.gwt.i18n.client.DateTimeFormat;
+import com.google.gwt.libideas.logging.shared.Log;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.PushButton;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.widgetideas.table.client.overrides.Grid;
+import com.google.gwt.widgetideas.table.client.overrides.HTMLTable.CellFormatter;
+
+import java.util.Date;
+
+class DropDownMonthSelector extends MonthSelector {
+  private static final DateTimeFormat MONTH_NAME_FORMAT = DateTimeFormat.getFormat("MMMM");
+  private static final DateTimeFormat MONTH_ABBREVIATION_FORMAT = DateTimeFormat.getFormat("MMM");
+
+  /* java.util.date subtracts 1900 from years */
+  private static final int MAGIC_YEAR_CONSTANT = 1900;
+
+  private int startYearOffset;
+  private int maxYear;
+
+  DropDownMonthSelector(int startYear, int yearsToDisplay) {
+    assert yearsToDisplay > 0 : "Cannot display fewer than one year";
+    startYearOffset = startYear - MAGIC_YEAR_CONSTANT;
+    maxYear = startYear + yearsToDisplay;
+  }
+
+  private PushButton backwards;
+  private PushButton forwards;
+  private DropDownListBox<Integer> monthList;
+  private DropDownListBox<Integer> yearList;
+
+  private Grid grid;
+
+  @Override
+  public void setAllowableDateRange(Date from, Date to) {
+    Log.info("setAllowableDateRange is not yet implemented");
+  }
+
+  @Override
+  protected void refresh() {
+    if (monthList.getSelectedValue() == null
+        || !monthList.getSelectedValue().equals(getModel().getCurrentMonth())) {
+      monthList.setSelectedValue(getModel().getCurrentMonth());
+    }
+
+    if (yearList.getSelectedValue() == null
+        || !yearList.getSelectedValue().equals(
+            getModel().getCurrentYear() + MAGIC_YEAR_CONSTANT)) {
+      yearList.setSelectedValue(getModel().getCurrentYear()
+          + MAGIC_YEAR_CONSTANT);
+    }
+  }
+
+  @Override
+  protected void setup() {
+    monthList = new DropDownListBox<Integer>(
+        MONTH_ABBREVIATION_FORMAT.format(getModel().getCurrentMonthAndYear()));
+
+    final String[] monthAbbreviations = new String[12];
+
+    for (int a = 0; a < 12; a++) {
+      Date month = new Date(1, a, 1);
+      monthAbbreviations[a] = MONTH_ABBREVIATION_FORMAT.format(month);
+      monthList.addItem(monthAbbreviations[a], a,
+          MONTH_NAME_FORMAT.format(month));
+    }
+
+    monthList.addSelectionHandler(new SelectionHandler<Integer>() {
+      public void onSelection(SelectionEvent<Integer> event) {
+        addMonths(event.getNewValue() - getModel().getCurrentMonth());
+        monthList.getButton().setHTML(monthAbbreviations[event.getNewValue()]);
+      }
+    });
+
+    yearList = new DropDownListBox<Integer>(
+        String.valueOf(getModel().getCurrentYear() + MAGIC_YEAR_CONSTANT));
+    for (int a = MAGIC_YEAR_CONSTANT + startYearOffset; a < maxYear; a++) {
+      yearList.addItem(String.valueOf(a), a);
+    }
+
+    yearList.addSelectionHandler(new SelectionHandler<Integer>() {
+      public void onSelection(SelectionEvent<Integer> event) {
+        addMonths((event.getNewValue() - MAGIC_YEAR_CONSTANT - getModel().getCurrentYear()) * 12);
+        yearList.getButton().setHTML(String.valueOf(event.getNewValue()));
+      }
+    });
+
+    // Set up backwards.
+    backwards = new PushButton();
+    backwards.addClickListener(new ClickListener() {
+      public void onClick(Widget sender) {
+        addMonths(-1);
+      }
+    });
+
+    backwards.getUpFace().setHTML("&laquo;");
+    backwards.setStyleName(css().datePickerPreviousButton());
+
+    forwards = new PushButton();
+    forwards.getUpFace().setHTML("&raquo;");
+    forwards.setStyleName(css().datePickerNextButton());
+    forwards.addClickListener(new ClickListener() {
+      public void onClick(Widget sender) {
+        addMonths(+1);
+      }
+    });
+
+    // Set up grid.
+    grid = new Grid(1, 5);
+    grid.setWidget(0, 0, backwards);
+    grid.setWidget(0, 1, monthList);
+    grid.setWidget(0, 3, yearList);
+    grid.setWidget(0, 4, forwards);
+
+    CellFormatter formatter = grid.getCellFormatter();
+    formatter.setStyleName(0, 1, css().datePickerMonth());
+    formatter.setStyleName(0, 3, css().datePickerMonth());
+    grid.setStyleName(css().datePickerDays());
+    initWidget(grid);
+  }
+
+  protected void addMonths(int numMonths) {
+    getModel().shiftCurrentMonth(numMonths);
+    refreshAll();
+  }
+}
Index: src/com/google/gwt/gen2/datepicker/client/dropdownselector/DropDownDatePicker.java
===================================================================
--- src/com/google/gwt/gen2/datepicker/client/dropdownselector/DropDownDatePicker.java	(revision 0)
+++ src/com/google/gwt/gen2/datepicker/client/dropdownselector/DropDownDatePicker.java	(revision 0)
@@ -0,0 +1,124 @@
+package com.google.gwt.gen2.datepicker.client.dropdownselector;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.gen2.commonwidget.client.impl.StandardCssImpl;
+import com.google.gwt.gen2.datepicker.client.CalendarModel;
+import com.google.gwt.gen2.datepicker.client.DatePicker;
+import com.google.gwt.gen2.datepicker.client.DefaultCalendarView;
+import com.google.gwt.gen2.widgetbase.client.Gen2CssInjector;
+import com.google.gwt.libideas.resources.client.ImmutableResourceBundle;
+
+public class DropDownDatePicker extends DatePicker {
+
+  /**
+   * Convenience class to group css handling code.
+   * 
+   */
+  static class StandardCss extends StandardCssImpl implements Css {
+    /**
+     * CSS resource for {@link WrappedDropDownListBox}.
+     * 
+     */
+    static interface Resources extends ImmutableResourceBundle {
+      @Resource("com/google/gwt/gen2/widgetbase/public/DatePicker.css")
+      Css css();
+    }
+
+    /**
+     * Default Css for {@link DatePicker}
+     */
+    static Css DEFAULT = createCss("gwt-DatePicker");
+
+    static void injectCss() {
+      if (Gen2CssInjector.isInjectionEnabled()) {
+        Css css = ((Resources) GWT.create(Resources.class)).css();
+        DEFAULT = Gen2CssInjector.inject(css);
+      }
+    }
+
+    public StandardCss(String baseStyleName) {
+      super(baseStyleName);
+    }
+
+    public String datePicker() {
+      return getWidgetStyleName();
+    }
+
+    public String datePickerDay() {
+      return wrap("Day");
+    }
+
+    public String datePickerDayIsDisabled() {
+      return day("Disabled");
+    }
+
+    public String datePickerDayIsFiller() {
+      return day("Filler");
+    }
+
+    public String datePickerDayIsHighlighted() {
+      return day("Highlighted");
+    }
+
+    public String datePickerDayIsSelected() {
+      return day("Selected");
+    }
+
+    public String datePickerDayIsSelectedAndHighlighted() {
+      return datePickerDayIsSelected() + "AndHighlighted";
+    }
+
+    public String datePickerDayIsToday() {
+      return day("Today");
+    }
+
+    public String datePickerDayIsWeekend() {
+      return day("Weekend");
+    }
+
+    public String datePickerDays() {
+      return wrap("Days");
+    }
+
+    public String datePickerMonth() {
+      return wrap("Month");
+    }
+
+    public String datePickerMonthSelector() {
+      return wrap("MonthSelector");
+    }
+
+    public String datePickerNextButton() {
+      return wrap("NextButton");
+    }
+
+    public String datePickerPreviousButton() {
+      return wrap("PreviousButton");
+    }
+
+    public String datePickerWeekdayLabel() {
+      return wrap("WeekdayLabel");
+    }
+
+    public String datePickerWeekendLabel() {
+      return wrap("WeekdayLabel");
+    }
+
+    public String day(String dayModifier) {
+      return datePickerDay() + "Is" + dayModifier;
+    }
+
+    public String daysLabel() {
+      return wrap("DaysLabel");
+    }
+  }
+
+  public DropDownDatePicker() {
+    this(1950, 100);
+  }
+
+  public DropDownDatePicker(int startYear, int yearsToDisplay) {
+    super(new DropDownMonthSelector(startYear, yearsToDisplay),
+        new DefaultCalendarView(), new CalendarModel(), StandardCss.DEFAULT);
+  }
+}
Index: src/com/google/gwt/gen2/datepicker/client/DatePickerComponent.java
===================================================================
--- src/com/google/gwt/gen2/datepicker/client/DatePickerComponent.java	(revision 1075)
+++ src/com/google/gwt/gen2/datepicker/client/DatePickerComponent.java	(working copy)
@@ -44,6 +44,10 @@
    */
   protected abstract void refresh();
 
+  protected void refreshAll() {
+    getDatePicker().refresh();
+  }
+
   /**
    * Set up the component.
    */
Index: src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/DropDownDatePickerDemo.gwt.xml
===================================================================
--- src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/DropDownDatePickerDemo.gwt.xml	(revision 0)
+++ src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/DropDownDatePickerDemo.gwt.xml	(revision 0)
@@ -0,0 +1,19 @@
+<module>
+
+	<!-- Inherit the core Web Toolkit stuff.                  -->
+	<inherits name='com.google.gwt.user.User' />
+	
+	<!-- Inherit the custom list box code   -->
+	<inherits name='com.google.gwt.gen2.selection.Selection' />
+
+	<!--  Inherit Date picker-->
+	<inherits name='com.google.gwt.gen2.datepicker.DatePicker' />
+
+	<!-- Specify the app entry point class.                   -->
+	<entry-point
+		class='com.google.gwt.gen2.demo.dropdowndatepicker.client.DropDownDatePickerDemo' />
+	<stylesheet src='DropDownDatePickerDemo.css' />
+	
+	<!-- used to debug this widget's css -->
+	<inherits name='com.google.gwt.gen2.widgetbase.Css_debug' />
+</module>
\ No newline at end of file
Index: src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/client/DropDownDatePickerDemo.java
===================================================================
--- src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/client/DropDownDatePickerDemo.java	(revision 0)
+++ src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/client/DropDownDatePickerDemo.java	(revision 0)
@@ -0,0 +1,347 @@
+/*
+ * Copyright 2008 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.google.gwt.gen2.demo.dropdowndatepicker.client;
+
+import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.gen2.datepicker.client.DateBox;
+import com.google.gwt.gen2.datepicker.client.dropdownselector.DropDownDatePicker;
+import com.google.gwt.gen2.event.dom.client.KeyDownEvent;
+import com.google.gwt.gen2.event.dom.client.KeyDownHandler;
+import com.google.gwt.gen2.event.logical.shared.HasHighlightHandlers;
+import com.google.gwt.gen2.event.logical.shared.HasSelectionHandlers;
+import com.google.gwt.gen2.event.logical.shared.HasShowRangeHandlers;
+import com.google.gwt.gen2.event.logical.shared.HighlightEvent;
+import com.google.gwt.gen2.event.logical.shared.HighlightHandler;
+import com.google.gwt.gen2.event.logical.shared.SelectionEvent;
+import com.google.gwt.gen2.event.logical.shared.SelectionHandler;
+import com.google.gwt.gen2.event.logical.shared.ShowRangeEvent;
+import com.google.gwt.gen2.event.logical.shared.ShowRangeHandler;
+import com.google.gwt.gen2.event.shared.EventHandler;
+import com.google.gwt.gen2.event.shared.HandlerRegistration;
+import com.google.gwt.i18n.client.DateTimeFormat;
+import com.google.gwt.libideas.logging.client.SimpleLogHandler;
+import com.google.gwt.libideas.logging.shared.Log;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.user.client.ui.TabPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.widgetideas.client.LazyPanel;
+
+import java.util.Date;
+
+/**
+ * Date picker demo.
+ */
+public class DropDownDatePickerDemo implements EntryPoint {
+  private abstract class HandlerCheckBox<EventHandlerType extends EventHandler, HasHandlers>
+      extends CheckBox {
+    protected HandlerRegistration registration;
+    protected final HasHandlers widget;
+    protected final EventHandlerType handler;
+    String title;
+
+    HandlerCheckBox(final String title, HasHandlers widget,
+        final EventHandlerType handler) {
+      super(title);
+      this.widget = widget;
+      this.handler = handler;
+      this.title = title;
+      this.addClickListener(new ClickListener() {
+        public void onClick(Widget sender) {
+          if (isChecked()) {
+            Log.info("Adding handler '" + title + "'");
+            addHandler();
+          } else {
+            Log.info("Removing handler '" + title + "'");
+            registration.removeHandler();
+          }
+        }
+      });
+    }
+
+    abstract void addHandler();
+  }
+
+  private class HighlightHandlerCheckBox extends
+      HandlerCheckBox<HighlightHandler<Date>, HasHighlightHandlers<Date>> {
+
+    HighlightHandlerCheckBox(String title, HasHighlightHandlers<Date> widget,
+        HighlightHandler handler) {
+      super(title, widget, handler);
+    }
+
+    @Override
+    void addHandler() {
+      registration = widget.addHighlightHandler(handler);
+    }
+  }
+
+  private class SelectionHandlerCheckBox extends
+      HandlerCheckBox<SelectionHandler<Date>, HasSelectionHandlers<Date>> {
+
+    SelectionHandlerCheckBox(String title, HasSelectionHandlers<Date> widget,
+        SelectionHandler handler) {
+      super(title, widget, handler);
+    }
+
+    @Override
+    void addHandler() {
+      registration = widget.addSelectionHandler(handler);
+    }
+  }
+
+  private class ShowRangeHandlerCheckBox extends
+      HandlerCheckBox<ShowRangeHandler<Date>, HasShowRangeHandlers<Date>> {
+
+    ShowRangeHandlerCheckBox(String title, HasShowRangeHandlers<Date> widget,
+        ShowRangeHandler handler) {
+      super(title, widget, handler);
+    }
+
+    @Override
+    void addHandler() {
+      registration = widget.addShowRangeHandler(handler);
+    }
+  }
+
+  private DateBox start;
+
+  /**
+   * This is the entry point method.
+   */
+  public void onModuleLoad() {
+    Log.info("Log messages enabled");
+    HorizontalPanel master = new HorizontalPanel();
+    SimpleLogHandler handler = new SimpleLogHandler(false);
+    Log.addLogHandler(handler);
+
+    DropDownDatePicker.injectDefaultCss();
+    TabPanel panel = new TabPanel();
+    master.add(panel);
+    master.add(handler.getWidget());
+    panel.add(new LazyPanel<Widget>() {
+
+      @Override
+      public Widget createWidget() {
+        return simplePicker();
+      }
+
+    }, "simple");
+
+    panel.add(new LazyPanel<Widget>() {
+
+      @Override
+      public Widget createWidget() {
+        return eventPicker();
+      }
+
+    }, "events");
+
+    panel.add(new LazyPanel<Widget>() {
+
+      @Override
+      public Widget createWidget() {
+        return stylingPicker();
+      }
+
+    }, "styles");
+
+    panel.add(new LazyPanel<Widget>() {
+
+      @Override
+      public Widget createWidget() {
+        return dateRange();
+      }
+
+    }, "date range");
+
+    panel.selectTab(0);
+
+    RootPanel.get().add(master);
+  }
+
+  private Widget dateRange() {
+    VerticalPanel v = new VerticalPanel();
+    HorizontalPanel p = new HorizontalPanel();
+    v.add(p);
+    start = new DateBox(new DropDownDatePicker());
+    start.setAnimationEnabled(true);
+    final DateBox end = new DateBox(new DropDownDatePicker());
+    end.setAnimationEnabled(true);
+
+    start.addKeyDownHandler(new KeyDownHandler() {
+      public void onKeyDown(KeyDownEvent e) {
+        if (e.isRightKeyCode()
+            && start.getCursorPos() == start.getText().length()) {
+          start.hideDatePicker();
+          end.setFocus(true);
+        }
+      }
+    });
+
+    end.addKeyDownHandler(new KeyDownHandler() {
+      public void onKeyDown(KeyDownEvent e) {
+        if ((e.isLeftKeyCode()) && end.getCursorPos() == 0) {
+          start.setFocus(true);
+          end.hideDatePicker();
+        }
+      }
+    });
+
+    end.getDatePicker().addSelectionHandler(new SelectionHandler<Date>() {
+      public void onSelection(SelectionEvent<Date> event) {
+        start.removeStyleName("user-modified");
+      }
+    });
+
+    start.showDate(new Date());
+
+    p.add(start);
+    Label l = new Label(" - ");
+    l.setStyleName("filler");
+    p.add(l);
+    p.add(end);
+    HorizontalPanel h2 = new HorizontalPanel();
+    v.add(h2);
+    h2.add(new Button("Short format", new ClickListener() {
+
+      public void onClick(Widget sender) {
+        start.setDateFormat(DateTimeFormat.getShortDateFormat());
+        end.setDateFormat(DateTimeFormat.getShortDateFormat());
+      }
+    }));
+    h2.add(new Button("Long format", new ClickListener() {
+
+      public void onClick(Widget sender) {
+        start.setDateFormat(DateTimeFormat.getLongDateFormat());
+        end.setDateFormat(DateTimeFormat.getLongDateFormat());
+      }
+    }));
+
+    h2.add(new Button("clear", new ClickListener() {
+      public void onClick(Widget sender) {
+        start.clear();
+        end.clear();
+      }
+    }));
+    return v;
+  }
+
+  private Widget eventPicker() {
+
+    // Set up code
+    final DropDownDatePicker picker = new DropDownDatePicker();
+    HorizontalPanel panel = new HorizontalPanel();
+    panel.add(picker);
+    VerticalPanel monitorEvents = new VerticalPanel();
+    panel.add(monitorEvents);
+
+    monitorEvents.add(new HighlightHandlerCheckBox("Log highlight events",
+        picker, new HighlightHandler<Date>() {
+          public void onHighlight(HighlightEvent<Date> event) {
+            Log.info("Highlight: " + event.getValue());
+          }
+        }));
+
+    monitorEvents.add(new SelectionHandlerCheckBox("Log select events", picker,
+        new SelectionHandler<Date>() {
+          public void onSelection(SelectionEvent<Date> event) {
+            Log.info("Select: " + event.getOldValue() + "-->"
+                + event.getNewValue());
+          }
+        }));
+
+    monitorEvents.add(new SelectionHandlerCheckBox("Disable selected item",
+        picker, new SelectionHandler<Date>() {
+          public void onSelection(SelectionEvent<Date> event) {
+            Date d = event.getNewValue();
+            picker.setEnabledOnVisibleDate(d, !picker.isDateEnabled(d));
+          }
+        }));
+
+    // Add alerts on bad user input
+
+    return panel;
+  };
+
+  private DropDownDatePicker simplePicker() {
+    DropDownDatePicker picker = new DropDownDatePicker();
+    Date d = new Date();
+    d.setMonth(2);
+    d.setDate(1);
+    picker.setSelectedDate(d);
+    return picker;
+  };
+
+  private Widget stylingPicker() {
+    final DropDownDatePicker picker = new DropDownDatePicker();
+    HorizontalPanel panel = new HorizontalPanel();
+    panel.add(picker);
+    VerticalPanel styling = new VerticalPanel();
+    panel.add(styling);
+
+    styling.add(new ShowRangeHandlerCheckBox(
+        "First and last displayed date will be underlined and bold", picker,
+        new ShowRangeHandler<Date>() {
+          public void onShowRange(ShowRangeEvent<Date> event) {
+            Date startDate = event.getStart();
+            Date endDate = event.getEnd();
+            picker.addStyleToVisibleDate(startDate, "underlined-and-bold-text");
+            picker.addStyleToVisibleDate(endDate, "underlined-and-bold-text");
+          }
+        }));
+
+    styling.add(new ShowRangeHandlerCheckBox("5th of the month will be red",
+        picker, new ShowRangeHandler<Date>() {
+          public void onShowRange(ShowRangeEvent<Date> event) {
+            Date monthShown = picker.getDateShown();
+            Date d = new Date(monthShown.getTime());
+            d.setDate(5);
+            Log.info("Adding a red style to the 5th day of the month");
+            picker.addStyleToVisibleDate(d, "red-date");
+          }
+        }));
+
+    styling.add(new SelectionHandlerCheckBox(
+        "Add random style to selected date", picker,
+        new SelectionHandler<Date>() {
+          String[] styles = {
+              "blue-background", "green-border", "red-text", "big-text",
+              "green-background", "underlined-and-bold-text",
+              "yellow-background"};
+
+          int styleIndex = 0;
+
+          public void onSelection(SelectionEvent<Date> event) {
+            if (event.getNewValue() != null) {
+              styleIndex = ++styleIndex % styles.length;
+              String styling = styles[styleIndex];
+              Log.info(event.getNewValue() + " has style " + styling, "styling");
+              picker.addGlobalStyleToDate(event.getNewValue(), styling);
+            }
+          }
+        }));
+
+    return panel;
+  };
+
+}
Index: src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/public/DropDownDatePickerDemo.html
===================================================================
--- src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/public/DropDownDatePickerDemo.html	(revision 0)
+++ src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/public/DropDownDatePickerDemo.html	(revision 0)
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+
+<title>DropDownDatePickerDemo</title>
+
+<!--                                           -->
+<!-- Use normal html, such as style            -->
+<!--                                           -->
+<style>
+body,td,a,div,.p {
+	font-family: arial, sans-serif
+}
+
+div,td {
+	color: #000000
+}
+
+a:link,.w,.w a:link {
+	color: #0000cc
+}
+
+a:visited {
+	color: #551a8b
+}
+
+a:active {
+	color: #ff0000
+}
+</style>
+
+<!--                                           -->
+<!-- This script loads your compiled module.   -->
+<!-- If you add any GWT meta tags, they must   -->
+<!-- be added before this line.                -->
+<!--                                           -->
+<script language='javascript'
+	src='com.google.gwt.gen2.demo.dropdowndatepicker.DropDownDatePickerDemo.nocache.js'></script>
+</head>
+
+<!--                                           -->
+<!-- The body can have arbitrary html, or      -->
+<!-- you can leave the body empty if you want  -->
+<!-- to create a completely dynamic ui         -->
+<!--                                           -->
+<body>
+
+<!-- OPTIONAL: include this if you want history support -->
+<iframe src="javascript:''" id="__gwt_historyFrame"
+	style="width: 0; height: 0; border: 0"></iframe>
+
+<h1>DropDownDatePickerDemo</h1>
+
+</body>
+</html>
Index: src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/public/DropDownDatePickerDemo.css
===================================================================
--- src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/public/DropDownDatePickerDemo.css	(revision 0)
+++ src-demo/com/google/gwt/gen2/demo/dropdowndatepicker/public/DropDownDatePickerDemo.css	(revision 0)
@@ -0,0 +1,104 @@
+/****************************
+helper styles
+******************************/
+.log-panel {
+	position: relative;
+	float: right;
+	border: 1px solid black;
+	margin-left: 30px;
+}
+
+.gwt-TabPanel {
+	margin-top: 4px;
+}
+
+.gwt-TabPanelBottom {
+	background-color: #E8EEF7;
+}
+
+.gwt-TabBar {
+	padding-top: 2px;
+	border-bottom: 4px solid #87B3FF;
+	background-color: #fff;
+}
+
+.gwt-TabBar .gwt-TabBarItem {
+	padding: 4px;
+	cursor: pointer;
+	cursor: hand;
+	background-color: #e8eef7;
+	border-bottom: 2px solid white;
+	margin-right: 2px;
+}
+
+.gwt-TabBar .gwt-TabBarItem-selected {
+	padding: 4px;
+	font-weight: bold;
+	cursor: default;
+	background-color: #87b3ff;
+	border-bottom: 2px solid #87b3ff;
+	margin-right: 2px;
+}
+
+/*  Styles demo*/
+.gwt-DatePicker .red-date {
+	background-color: red;
+}
+
+.gwt-DatePicker .blue-background {
+	background-color: blue;
+}
+
+.gwt-DatePicker .red-text {
+	color: red;
+}
+
+.gwt-DatePicker .green-border {
+	border: 5px solid green;
+}
+
+.gwt-DatePicker .big-text {
+	font-size: x-large;
+}
+
+.gwt-DatePicker .underlined-and-bold-text {
+	font-weight: bold;
+	text-decoration: underline;
+}
+
+.gwt-DatePicker .yellow-background {
+	background-color: yellow;
+}
+
+/* date range styles */
+.filler {
+	width: 30px;
+	text-align: center;
+}
+
+
+.dropDownListBoxListBox {
+  background: #ffffff;
+  border: 1px solid black;
+}
+
+.dropDownListBoxItem {
+  cursor: pointer;
+}
+
+.dropDownListBoxHighlightedItem {
+  background: #cccccc;
+}
+
+.dropDownListBoxSelectedItem {
+  background: #afafff;
+}
+
+.dropDownListBoxSelectedAndHighlightedItem {
+  background: #afafff;
+}
+
+.gwt-PopupPanel .popupContent {
+  height: 10em;
+  overflow: auto;
+}
\ No newline at end of file
