edu.wisc.ssec.mcidasv.data.dateChooser
Class JDateChooser

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by edu.wisc.ssec.mcidasv.data.dateChooser.JDateChooser
All Implemented Interfaces:
ActionListener, ImageObserver, MenuContainer, PropertyChangeListener, Serializable, EventListener, Accessible

public class JDateChooser
extends JPanel
implements ActionListener, PropertyChangeListener

A date chooser containig a date editor and a button, that makes a JCalendar visible for choosing a date. If no date editor is specified, a JTextFieldDateEditor is used as default.

Version:
$LastChangedRevision: 101 $, $LastChangedDate: 2006-06-04 14:42:29 +0200 (So, 04 Jun 2006) $
Author:
Kai Toedter
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  JButton calendarButton
           
private  ChangeListener changeListener
           
protected  IDateEditor dateEditor
           
protected  boolean dateSelected
           
protected  boolean isInitialized
           
protected  JCalendar jcalendar
           
protected  Date lastSelectedDate
           
protected  JPopupMenu popup
           
private static long serialVersionUID
           
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JDateChooser()
          Creates a new JDateChooser.
JDateChooser(Date date)
          Creates a new JDateChooser.
JDateChooser(Date date, String dateFormatString)
          Creates a new JDateChooser.
JDateChooser(Date date, String dateFormatString, IDateEditor dateEditor)
          Creates a new JDateChooser.
JDateChooser(IDateEditor dateEditor)
          Creates a new JDateChooser with given IDateEditor.
JDateChooser(JCalendar jcal, Date date, String dateFormatString, IDateEditor dateEditor)
          Creates a new JDateChooser.
JDateChooser(String datePattern, String maskPattern, char placeholder)
          Creates a new JDateChooser.
 
Method Summary
 void actionPerformed(ActionEvent e)
          Called when the jalendar button was pressed.
 void cleanup()
          Should only be invoked if the JDateChooser is not used anymore.
 Calendar getCalendar()
          Returns the calendar.
 JButton getCalendarButton()
          Returns the calendar button.
 Date getDate()
          Returns the date.
 IDateEditor getDateEditor()
          Returns the date editor.
 String getDateFormatString()
          Gets the date format string.
 JCalendar getJCalendar()
          Returns the JCalendar component.
 Date getMaxSelectableDate()
          Gets the maximum selectable date.
 Date getMinSelectableDate()
          Gets the minimum selectable date.
 boolean isEnabled()
          Returns true, if enabled.
static void main(String[] s)
          Creates a JFrame with a JDateChooser inside and can be used for testing.
 void propertyChange(PropertyChangeEvent evt)
          Listens for a "date" property change or a "day" property change event from the JCalendar.
 void setCalendar(Calendar calendar)
          Sets the calendar.
 void setDate(Date date)
          Sets the date.
 void setDateFormatString(String dfString)
          Sets the date format string.
 void setEnabled(boolean enabled)
          Enable or disable the JDateChooser.
 void setFont(Font font)
          Sets the font of all subcomponents.
 void setIcon(ImageIcon icon)
          Sets the icon of the buuton.
 void setLocale(Locale l)
          Sets the locale.
 void setMaxSelectableDate(Date max)
           
 void setMinSelectableDate(Date min)
           
 void setSelectableDateRange(Date min, Date max)
          Sets a valid date range for selectable dates.
 void updateUI()
          Updates the UI of itself and the popup.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

dateEditor

protected IDateEditor dateEditor

calendarButton

protected JButton calendarButton

jcalendar

protected JCalendar jcalendar

popup

protected JPopupMenu popup

isInitialized

protected boolean isInitialized

dateSelected

protected boolean dateSelected

lastSelectedDate

protected Date lastSelectedDate

changeListener

private ChangeListener changeListener
Constructor Detail

JDateChooser

public JDateChooser()
Creates a new JDateChooser. By default, no date is set and the textfield is empty.


JDateChooser

public JDateChooser(IDateEditor dateEditor)
Creates a new JDateChooser with given IDateEditor.

Parameters:
dateEditor - the dateEditor to be used used to display the date. if null, a JTextFieldDateEditor is used.

JDateChooser

public JDateChooser(Date date)
Creates a new JDateChooser.

Parameters:
date - the date or null

JDateChooser

public JDateChooser(Date date,
                    String dateFormatString)
Creates a new JDateChooser.

Parameters:
date - the date or null
dateFormatString - the date format string or null (then MEDIUM SimpleDateFormat format is used)

JDateChooser

public JDateChooser(Date date,
                    String dateFormatString,
                    IDateEditor dateEditor)
Creates a new JDateChooser.

Parameters:
date - the date or null
dateFormatString - the date format string or null (then MEDIUM SimpleDateFormat format is used)
dateEditor - the dateEditor to be used used to display the date. if null, a JTextFieldDateEditor is used.

JDateChooser

public JDateChooser(String datePattern,
                    String maskPattern,
                    char placeholder)
Creates a new JDateChooser. If the JDateChooser is created with this constructor, the mask will be always visible in the date editor. Please note that the date pattern and the mask will not be changed if the locale of the JDateChooser is changed.

Parameters:
datePattern - the date pattern, e.g. "MM/dd/yy"
maskPattern - the mask pattern, e.g. "##/##/##"
placeholder - the placeholer charachter, e.g. '_'

JDateChooser

public JDateChooser(JCalendar jcal,
                    Date date,
                    String dateFormatString,
                    IDateEditor dateEditor)
Creates a new JDateChooser.

Parameters:
jcal - the JCalendar to be used
date - the date or null
dateFormatString - the date format string or null (then MEDIUM Date format is used)
dateEditor - the dateEditor to be used used to display the date. if null, a JTextFieldDateEditor is used.
Method Detail

actionPerformed

public void actionPerformed(ActionEvent e)
Called when the jalendar button was pressed.

Specified by:
actionPerformed in interface ActionListener
Parameters:
e - the action event

propertyChange

public void propertyChange(PropertyChangeEvent evt)
Listens for a "date" property change or a "day" property change event from the JCalendar. Updates the date editor and closes the popup.

Specified by:
propertyChange in interface PropertyChangeListener
Parameters:
evt - the event

updateUI

public void updateUI()
Updates the UI of itself and the popup.

Overrides:
updateUI in class JPanel

setLocale

public void setLocale(Locale l)
Sets the locale.

Overrides:
setLocale in class Component
Parameters:
l - The new locale value

getDateFormatString

public String getDateFormatString()
Gets the date format string.

Returns:
Returns the dateFormatString.

setDateFormatString

public void setDateFormatString(String dfString)
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.

Parameters:
dfString - The dateFormatString to set.

getDate

public Date getDate()
Returns the date. If the JDateChooser is started with a null date and no date was set by the user, null is returned.

Returns:
the current date

setDate

public void setDate(Date date)
Sets the date. Fires the property change "date" if date != null.

Parameters:
date - the new date.

getCalendar

public Calendar getCalendar()
Returns the calendar. If the JDateChooser is started with a null date (or null calendar) and no date was set by the user, null is returned.

Returns:
the current calendar

setCalendar

public void setCalendar(Calendar calendar)
Sets the calendar. Value null will set the null date on the date editor.

Parameters:
calendar - the calendar.

setEnabled

public void setEnabled(boolean enabled)
Enable or disable the JDateChooser.

Overrides:
setEnabled in class JComponent
Parameters:
enabled - the new enabled value

isEnabled

public boolean isEnabled()
Returns true, if enabled.

Overrides:
isEnabled in class Component
Returns:
true, if enabled.

setIcon

public void setIcon(ImageIcon icon)
Sets the icon of the buuton.

Parameters:
icon - The new icon

setFont

public void setFont(Font font)
Sets the font of all subcomponents.

Overrides:
setFont in class JComponent
Parameters:
font - the new font

getJCalendar

public JCalendar getJCalendar()
Returns the JCalendar component. THis is usefull if you want to set some properties.

Returns:
the JCalendar

getCalendarButton

public JButton getCalendarButton()
Returns the calendar button.

Returns:
the calendar button

getDateEditor

public IDateEditor getDateEditor()
Returns the date editor.

Returns:
the date editor

setSelectableDateRange

public void setSelectableDateRange(Date min,
                                   Date max)
Sets a valid date range for selectable dates. If max is before min, the default range with no limitation is set.

Parameters:
min - the minimum selectable date or null (then the minimum date is set to 01\01\0001)
max - the maximum selectable date or null (then the maximum date is set to 01\01\9999)

setMaxSelectableDate

public void setMaxSelectableDate(Date max)

setMinSelectableDate

public void setMinSelectableDate(Date min)

getMaxSelectableDate

public Date getMaxSelectableDate()
Gets the maximum selectable date.

Returns:
the maximum selectable date

getMinSelectableDate

public Date getMinSelectableDate()
Gets the minimum selectable date.

Returns:
the minimum selectable date

cleanup

public void cleanup()
Should only be invoked if the JDateChooser is not used anymore. Due to popup handling it had to register a change listener to the default menu selection manager which will be unregistered here. Use this method to cleanup possible memory leaks.


main

public static void main(String[] s)
Creates a JFrame with a JDateChooser inside and can be used for testing.

Parameters:
s - The command line arguments