Project: Calendar-Application
/*
 *  DateChooserPanel.java  - A panel to demo several JDateChooser configurations. 
 *  Copyright (C) 2006 Kai Toedter 
 *  www.toedter.com 
 * 
 *  This program 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 
 *  of the License, or (at your option) any later version. 
 * 
 *  This program 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 
 *  GNU Lesser General Public License for more details. 
 * 
 *  You should have received a copy of the GNU Lesser General Public License 
 *  along with this program; if not, write to the Free Software 
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
 */
 
package com.toedter.calendar.demo; 
 
import java.awt.Dimension; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.beans.PropertyChangeEvent; 
import java.beans.PropertyChangeListener; 
import java.util.Date; 
import java.util.Locale; 
 
import javax.swing.JComponent; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
 
import com.toedter.calendar.JDateChooser; 
import com.toedter.calendar.JSpinnerDateEditor; 
 
/**
 * A demonstration panel including several JDateChoosers. 
 *  
 * @author Kai Toedter 
 * @version $LastChangedRevision: 153 $ 
 * @version $LastChangedDate: 2011-06-09 16:49:22 +0200 (Do, 09 Jun 2011) $ 
 */
 
public class DateChooserPanel extends JPanel implements PropertyChangeListener { 
 private static final long serialVersionUID = -1282280858252793253L
 private final JComponent[] components; 
 
 public DateChooserPanel() { 
  setName("JDateChooser"); 
 
  GridBagLayout gridbag = new GridBagLayout(); 
  GridBagConstraints c = new GridBagConstraints(); 
  c.fill = GridBagConstraints.BOTH; 
 
  setLayout(gridbag); 
 
  components = new JComponent[6]; 
  components[0] = new JDateChooser(); 
  components[1] = new JDateChooser(); 
  ((JDateChooser) components[1]).getJCalendar().getDayChooser() 
    .addDateEvaluator(new BirthdayEvaluator()); 
  ((JDateChooser) components[1]).getJCalendar().getDayChooser() 
    .addDateEvaluator(new TestDateEvaluator()); 
  ((JDateChooser) components[1]).getJCalendar().setTodayButtonVisible( 
    true); 
  ((JDateChooser) components[1]).getJCalendar().setNullDateButtonVisible( 
    true); 
 
  components[2] = new JDateChooser(new Date()); 
  components[3] = new JDateChooser(nullnullnull
    new JSpinnerDateEditor()); 
  components[4] = new JDateChooser("yyyy/MM/dd""####/##/##", '_'); 
  components[5] = new DemoTable(); 
 
  addEntry("Default", components[0], gridbag); 
  addEntry("Default (with addons)", components[1], gridbag); 
  addEntry("Default with date set", components[2], gridbag); 
  addEntry("Spinner Editor", components[3], gridbag); 
  addEntry("Explicite date pattern and mask", components[4], gridbag); 
  addEntry("Table with date editors", components[5], gridbag); 
 
 
 private void addEntry(String text, JComponent component, GridBagLayout grid) { 
  JLabel label = new JLabel(text + ": "null, JLabel.RIGHT); 
  GridBagConstraints c = new GridBagConstraints(); 
  c.weightx = 1.0
  c.fill = GridBagConstraints.BOTH; 
  grid.setConstraints(label, c); 
  add(label); 
  c.gridwidth = GridBagConstraints.REMAINDER; 
  grid.setConstraints(component, c); 
  add(component); 
  JPanel blankLine = new JPanel() { 
   private static final long serialVersionUID = 4514530330521503732L
 
   public Dimension getPreferredSize() { 
    return new Dimension(103); 
   
  }; 
  grid.setConstraints(blankLine, c); 
  add(blankLine); 
 
 
 /**
  * Gets the date format string. 
  *  
  * @return Returns the dateFormatString. 
  */
 
 public String getDateFormatString() { 
  return ((JDateChooser) components[1]).getDateFormatString(); 
 
 
 /**
  * Sets the date format string. E.g "MMMMM d, yyyy" will result in "July 21, 
  * 2004" if this is the selected date and locale is English. 
  *  
  * @param dfString 
  *            The dateFormatString to set. 
  */
 
 public void setDateFormatString(String dfString) { 
  for (int i = 0; i < 4; i++) { 
   ((JDateChooser) components[i]).setDateFormatString(dfString); 
  
 
 
 /**
  * Returns the date. If the JDateChooser is started with an empty date and 
  * no date is set by the user, null is returned. 
  *  
  * @return the current date 
  */
 
 public Date getDate() { 
  return ((JDateChooser) components[1]).getDate(); 
 
 
 /**
  * Sets the date. Fires the property change "date" if date != null. 
  *  
  * @param date 
  *            the new date. 
  */
 
 public void setDate(Date date) { 
  for (int i = 0; i < 4; i++) { 
   ((JDateChooser) components[i]).setDate(date); 
  
 
 
 public void propertyChange(PropertyChangeEvent evt) { 
  if (evt.getPropertyName().equals("date")) { 
   setDate((Date) evt.getNewValue()); 
  
 
 
 /**
  * Returns the locale of the first JDateChooser. 
  */
 
 public Locale getLocale() { 
  return ((JDateChooser) components[0]).getLocale(); 
 
 
 /**
  * Sets the locale of the first 4 JDateChoosers. 
  */
 
 public void setLocale(Locale locale) { 
  for (int i = 0; i < 5; i++) { 
   components[i].setLocale(locale); 
  
 
 
 /*
  * (non-Javadoc) 
  *  
  * @see java.awt.Component#isEnabled() 
  */
 
 public boolean isEnabled() { 
  return ((JDateChooser) components[0]).isEnabled(); 
 
 
 /*
  * (non-Javadoc) 
  *  
  * @see javax.swing.JComponent#setEnabled(boolean) 
  */
 
 public void setEnabled(boolean enabled) { 
  for (int i = 0; i < 5; i++) { 
   components[i].setEnabled(enabled); 
  
 
 
 public Date getMinSelectableDate() { 
  return ((JDateChooser) components[0]).getMinSelectableDate(); 
 
 
 public void setMinSelectableDate(Date date) { 
  for (int i = 0; i < 4; i++) { 
   ((JDateChooser) components[i]).setMinSelectableDate(date); 
  
 
 
 public Date getMaxSelectableDate() { 
  return ((JDateChooser) components[0]).getMaxSelectableDate(); 
 
 
 public void setMaxSelectableDate(Date date) { 
  for (int i = 0; i < 4; i++) { 
   ((JDateChooser) components[i]).setMaxSelectableDate(date); 
  
 
}