Package com.apress.progwt.client.widget.datepicker

Source Code of com.apress.progwt.client.widget.datepicker.DatePicker

/*
* 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.ui.ChangeListener;
import com.google.gwt.user.client.ui.ChangeListenerCollection;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

/*
* Abstract Base class for a Date Picker object. Extend this class if you wish to create a new kind
* of a date picker
*
* Date Picker extends a Text box and is intended to be used in conjuction with the calendar popup.
* It implements KeyBoardListener but the methods do nothing. You can implement its methids in your
* sub class if needed.
*/
public abstract class DatePicker extends TextBox implements KeyboardListener {
  // Current maintains where the calendar is at any point in time
  // Use can be traversing back and forth in the calendar. This
  // field tracks that.
  private Date currentDate = new Date();

  // Keeps the collection of all the change listners
  private ChangeListenerCollection changeListeners;

  // Holds the date last selected by the user
  private Date selectedDate = new Date();

  // Holds the default DateFormatter Object
  private DateFormatter dateFormatter = new DateFormatter(DateFormatter.DATE_FORMAT_MMDDYYYY);

  /*
   * Default Constructor
   */
  protected DatePicker() {
    super();
  }

  /*
   * show Abstract method to be implemented by all the sub classes. This tells the app how to show
   * the date picker
   */
  public abstract void show();

  /*
   * hide Abstract method to be implemented by all the sub classes. The tells what to do when the
   * calendar needs to be hidden
   */
  public abstract void hide();

  /*
   * redrawCalendar Abstract method to define what to do in case the user traverses the month or
   * year
   */
  public abstract void redrawCalendar();

  /*
   * getCurrentDate Getter method for currentDate
   *
   * @return Date
   */
  public Date getCurrentDate() {
    return currentDate;
  }

  /*
   * setCurrentDate Setter method for currentDate
   *
   * You should probably call setSelectedDate() instead of this
   *
   * @param Date
   */
  protected void setCurrentDate(Date currentDate) {
    this.currentDate = currentDate;
  }

  /*
   * getSelectedDate Getter method for selectedDate
   *
   * @return Date
   */
  public Date getSelectedDate() {
    return selectedDate;
  }

  /*
   * setSelectedDate Setter method for selectedDate
   *
   * @param Date
   */
  public void setSelectedDate(Date selectedDate) {
    this.selectedDate = selectedDate;
    setCurrentDate(selectedDate);
    String dateStr = dateFormatter.formatDate(selectedDate);
    setText(dateStr);
  }

  /*
   * getWeekendSelectable Getter method for isWeekendSelectable
   *
   * @return boolean
   */
  public abstract boolean isWeekendSelectable();

  /*
   * setWeekendSelectable Setter method for isWeekendSelectable
   *
   * @param boolean
   */
  public abstract void setWeekendSelectable(boolean isWeekendSelectable);

  /*
   * getWeekendSelectable Getter method for isWeekendSelectable
   *
   * @return boolean
   */
  public DateFormatter getDateFormatter() {
    return this.dateFormatter;
  }

  /*
   * setText
   *
   * @param text to be displayed (String)
   */
  public void setText(String text) {
    super.setText(text);
    if (changeListeners != null) {
      changeListeners.fireChange(this);
    }
  }

  /*
   * setDateFormat Setter method set the format of the display date
   *
   * @param boolean
   */
  public void setDateFormat(DateFormat dateFormat) {
    this.getDateFormatter().setDateFormat(dateFormat);
  }

  /*
   * Methods from KeyboardListener
   */
  /**
   * Not used at all
   */
  public void onKeyDown(Widget sender, char keyCode, int modifiers) {
    this.show();
  }

  /**
   * Not used at all
   */
  public void onKeyPress(Widget sender, char keyCode, int modifiers) {
  }

  /**
   * Not used at all
   */
  public void onKeyUp(Widget sender, char keyCode, int modifiers) {

  }

  /*
   * addChangeListener
   *
   * Adds the Change Listener Object to its collection
   */
  public void addChangeListener(ChangeListener listener) {
    if (null == this.changeListeners) {
      this.changeListeners = new ChangeListenerCollection();
    }
    this.changeListeners.add(listener);
  }
}
TOP

Related Classes of com.apress.progwt.client.widget.datepicker.DatePicker

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.