/* * Copyright 2008 Jeff Dwyer * * 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. */ /* * Simple Date Picker Widget for GWT library of Google, Inc. * * Copyright (c) 2006 Parvinder Thapar * http://psthapar.googlepages.com/ * * This library is free software; you can redistribute * it and/or modify it under the terms of the GNU Lesser * General Public License as published by the Free Software * Foundation; either version 2.1 of the License, or * (at your option) any later version. This library is * distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNULesser General Public License for more details. * You should have received a copy of the GNU Lesser General * PublicLicense along with this library; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package com.apress.progwt.client.widget.datepicker; import java.util.Date; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /* * SimpleDatePicker is a date picker which sub classes DatePicker and * defines a calendar popup which allows user to traverse back and forth * in month and year * * * * WARN! NOTE ETC!!!!! DON'T Use any date format besides mm/dd/yyyy !! */ public class SimpleDatePicker extends DatePicker implements ClickListener { protected PopupPanel calendarPopup = new PopupPanel(true); protected VerticalPanel vertPanel = new VerticalPanel(); protected CalendarPanel calendarPanel = null; protected TodayPanel todayPanel = null; protected CalendarTraversalPanel calendarTraversalPanel = null; /* * Default Constructor */ public SimpleDatePicker() { super(); this.init(); this.calendarPanel = new CalendarPanel(this); this.calendarTraversalPanel = new CalendarTraversalPanel(this); this.todayPanel = new TodayPanel(this); this.addCalendar(this); } /* * Overridden Constructor * * @param String * * Uses the name to assign to the "name" value of the HTML textbox */ public SimpleDatePicker(String name) { this(); DOM.setAttribute(this.getElement(), "name", name); } /* * init * * Does the initialization to the textbox */ protected void init() { this.setWidth(80 + "px"); this.setStyleName("txtbox"); addClickListener(this); addKeyboardListener(this); } /* * addCalendar * * Adds the popup panel which displays three main panels: a. * CalendarTraversalPanel: DockPanel b. CalendarPanel: AbsolutePanel * c. TodayPanel: AbsolutePanel * * @param DatePicker */ protected void addCalendar(DatePicker datePicker) { vertPanel.add(calendarTraversalPanel); vertPanel.add(calendarPanel); vertPanel.add(todayPanel); vertPanel.addStyleName("date_DisplayPanel"); calendarPanel.addStyleName("date_popupPanel"); calendarPopup.add(vertPanel); } /* * showCalendar * * Displays the popup calendar panel */ protected void showCalendar() { calendarPopup.show(); calendarPopup.setPopupPosition(this.getAbsoluteLeft(), this .getAbsoluteTop() + this.getOffsetHeight() + 4); calendarPopup.setHeight(120 + "px"); calendarPopup.setWidth(165 + "px"); } /* * hideCalendar * * Hides the popup calendar panel */ public void hideCalendar() { this.calendarPopup.hide(); } /* * redrawCalendar * * Redraws the calendar panel with new month/ year */ public void redrawCalendar() { this.calendarPanel.redrawCalendar(); this.calendarTraversalPanel.drawTitle(); } /* * Methods from AbstractUIDatePicker * */ public void show() { this.redrawCalendar(); this.showCalendar(); } public void hide() { this.hideCalendar(); } /* * Methods from ClickListener */ public void onClick(Widget sender) { // Log.debug("ONCLICK!!!!!!!!!!!! "); // Log.debug("sel "+getSelectedDate()+" || "+this.getText()+" || // "+getCurrentDate()); // // Log.debug("STRING: "+this.getText()); Date ddd = DateUtil.convertString2Date(this.getText()); // Log.debug("ddd "+ddd); this.setSelectedDate(ddd); // Log.debug("b4show "+getSelectedDate()+" "+this.getText()+" // "+getCurrentDate()); this.show(); } /* * getWeekendSelectable Getter method for isWeekendSelectable * * @return boolean */ public boolean isWeekendSelectable() { return this.calendarPanel.isWeekendSelectable(); } /* * setWeekendSelectable Setter method for isWeekendSelectable * * @param boolean */ public void setWeekendSelectable(boolean isWeekendSelectable) { this.calendarPanel.setWeekendSelectable(isWeekendSelectable); } /* * setDateFormat Setter method set the format of the display date * * @param boolean */ public void setDateFormat(DateFormat dateFormat) { super.setDateFormat(dateFormat); this.calendarPanel.setDateFormatter(this.getDateFormatter()); } }