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

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.JDayChooser
All Implemented Interfaces:
ActionListener, FocusListener, KeyListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible

public class JDayChooser
extends JPanel
implements ActionListener, KeyListener, FocusListener

JDayChooser is a bean for choosing a day.

Version:
$LastChangedRevision: 107 $, $LastChangedDate: 2009-05-01 15:48:00 +0200 (Fr, 01 Mai 2009) $
Author:
Kai Toedter
See Also:
Serialized Form

Nested Class Summary
(package private)  class JDayChooser.DecoratorButton
           
 
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
private  boolean alwaysFireDayProperty
           
protected  Calendar calendar
           
protected  int day
           
protected  boolean dayBordersVisible
           
protected  String[] dayNames
           
protected  JPanel dayPanel
           
protected  JButton[] days
           
protected  Color decorationBackgroundColor
           
protected  boolean decorationBackgroundVisible
           
protected  boolean decorationBordersVisible
           
protected  Date defaultMaxSelectableDate
           
protected  Date defaultMinSelectableDate
           
protected  boolean initialized
           
protected  Locale locale
           
protected  int maxDayCharacters
           
protected  Date maxSelectableDate
           
protected  Date minSelectableDate
           
protected  Color oldDayBackgroundColor
           
protected  Color selectedColor
           
protected  JButton selectedDay
           
private static long serialVersionUID
           
protected  Color sundayForeground
           
protected  Calendar today
           
protected  Color weekdayForeground
           
protected  boolean weekOfYearVisible
           
protected  JPanel weekPanel
           
protected  JButton[] weeks
           
 
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
JDayChooser()
          Default JDayChooser constructor.
JDayChooser(boolean weekOfYearVisible)
          JDayChooser constructor.
 
Method Summary
 void actionPerformed(ActionEvent e)
          JDayChooser is the ActionListener for all day buttons.
private  void drawDayNames()
          Draws the day names of the day columnes.
protected  void drawDays()
          Hides and shows the day buttons.
protected  void drawWeeks()
          Hides and shows the week buttons.
 void focusGained(FocusEvent e)
          JDayChooser is the FocusListener for all day buttons.
 void focusLost(FocusEvent e)
          Does nothing.
 int getDay()
          Returns the selected day.
 JPanel getDayPanel()
          Returns the day panel.
 Color getDecorationBackgroundColor()
          Returns the color of the decoration (day names and weeks).
 Locale getLocale()
          Returns the locale.
 int getMaxDayCharacters()
          Gets the maximum number of characters of a day name or 0.
 Date getMaxSelectableDate()
          Gets the maximum selectable date.
 Date getMinSelectableDate()
          Gets the minimum selectable date.
 Color getSundayForeground()
          Returns the Sunday foreground.
 Color getWeekdayForeground()
          Returns the weekday foreground.
protected  void init()
          Initilizes the locale specific names for the days of the week.
protected  void initDecorations()
          Initializes both day names and weeks of the year.
 boolean isDayBordersVisible()
           
 boolean isDecorationBackgroundVisible()
          The decoration background is the background color of the day titles and the weeks of the year.
 boolean isDecorationBordersVisible()
          The decoration border is the button border of the day titles and the weeks of the year.
 boolean isWeekOfYearVisible()
          In some Countries it is often usefull to know in which week of the year a date is.
 void keyPressed(KeyEvent e)
          JDayChooser is the KeyListener for all day buttons.
 void keyReleased(KeyEvent e)
          Does nothing.
 void keyTyped(KeyEvent e)
          Does nothing.
static void main(String[] s)
          Creates a JFrame with a JDayChooser inside and can be used for testing.
 void setAlwaysFireDayProperty(boolean alwaysFire)
          this is needed for JDateChooser.
 void setCalendar(Calendar calendar)
          Sets a specific calendar.
 void setDay(int d)
          Sets the day.
 void setDayBordersVisible(boolean dayBordersVisible)
           
 void setDecorationBackgroundColor(Color decorationBackgroundColor)
          Sets the background of days and weeks of year buttons.
 void setDecorationBackgroundVisible(boolean decorationBackgroundVisible)
          The decoration background is the background color of the day titles and the weeks of the year.
 void setDecorationBordersVisible(boolean decorationBordersVisible)
          The decoration border is the button border of the day titles and the weeks of the year.
 void setEnabled(boolean enabled)
          Enable or disable the JDayChooser.
 void setFocus()
          Requests that the selected day also have the focus.
 void setFont(Font font)
          Sets the font property.
 void setForeground(Color foreground)
          Sets the foregroundColor color.
 void setLocale(Locale locale)
          Sets the locale.
 void setMaxDayCharacters(int maxDayCharacters)
          Sets the maximum number of characters per day in the day bar.
 Date setMaxSelectableDate(Date max)
          Sets the maximum selectable date.
 Date setMinSelectableDate(Date min)
          Sets the minimum selectable date.
 void setMonth(int month)
          Sets a specific month.
 void setSelectableDateRange(Date min, Date max)
          Sets a valid date range for selectable dates.
 void setSundayForeground(Color sundayForeground)
          Sets the Sunday foreground.
 void setWeekdayForeground(Color weekdayForeground)
          Sets the weekday foreground.
 void setWeekOfYearVisible(boolean weekOfYearVisible)
          In some Countries it is often usefull to know in which week of the year a date is.
 void setYear(int year)
          Sets a specific year.
 void updateUI()
          Updates the UI and sets the day button preferences.
 
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, 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, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, 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

days

protected JButton[] days

weeks

protected JButton[] weeks

selectedDay

protected JButton selectedDay

weekPanel

protected JPanel weekPanel

dayPanel

protected JPanel dayPanel

day

protected int day

oldDayBackgroundColor

protected Color oldDayBackgroundColor

selectedColor

protected Color selectedColor

sundayForeground

protected Color sundayForeground

weekdayForeground

protected Color weekdayForeground

decorationBackgroundColor

protected Color decorationBackgroundColor

dayNames

protected String[] dayNames

calendar

protected Calendar calendar

today

protected Calendar today

locale

protected Locale locale

initialized

protected boolean initialized

weekOfYearVisible

protected boolean weekOfYearVisible

decorationBackgroundVisible

protected boolean decorationBackgroundVisible

decorationBordersVisible

protected boolean decorationBordersVisible

dayBordersVisible

protected boolean dayBordersVisible

alwaysFireDayProperty

private boolean alwaysFireDayProperty

minSelectableDate

protected Date minSelectableDate

maxSelectableDate

protected Date maxSelectableDate

defaultMinSelectableDate

protected Date defaultMinSelectableDate

defaultMaxSelectableDate

protected Date defaultMaxSelectableDate

maxDayCharacters

protected int maxDayCharacters
Constructor Detail

JDayChooser

public JDayChooser()
Default JDayChooser constructor.


JDayChooser

public JDayChooser(boolean weekOfYearVisible)
JDayChooser constructor.

Parameters:
weekOfYearVisible - true, if the weeks of a year shall be shown
Method Detail

init

protected void init()
Initilizes the locale specific names for the days of the week.


drawDayNames

private void drawDayNames()
Draws the day names of the day columnes.


initDecorations

protected void initDecorations()
Initializes both day names and weeks of the year.


drawWeeks

protected void drawWeeks()
Hides and shows the week buttons.


drawDays

protected void drawDays()
Hides and shows the day buttons.


getLocale

public Locale getLocale()
Returns the locale.

Overrides:
getLocale in class Component
Returns:
the locale value
See Also:
setLocale(java.util.Locale)

setLocale

public void setLocale(Locale locale)
Sets the locale.

Overrides:
setLocale in class Component
Parameters:
locale - the new locale value
See Also:
getLocale()

setDay

public void setDay(int d)
Sets the day. This is a bound property.

Parameters:
d - the day
See Also:
getDay()

setAlwaysFireDayProperty

public void setAlwaysFireDayProperty(boolean alwaysFire)
this is needed for JDateChooser.

Parameters:
alwaysFire - true, if day property shall be fired every time a day is chosen.

getDay

public int getDay()
Returns the selected day.

Returns:
the day value
See Also:
setDay(int)

setMonth

public void setMonth(int month)
Sets a specific month. This is needed for correct graphical representation of the days.

Parameters:
month - the new month

setYear

public void setYear(int year)
Sets a specific year. This is needed for correct graphical representation of the days.

Parameters:
year - the new year

setCalendar

public void setCalendar(Calendar calendar)
Sets a specific calendar. This is needed for correct graphical representation of the days.

Parameters:
calendar - the new calendar

setFont

public void setFont(Font font)
Sets the font property.

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

setForeground

public void setForeground(Color foreground)
Sets the foregroundColor color.

Overrides:
setForeground in class JComponent
Parameters:
foreground - the new foregroundColor

actionPerformed

public void actionPerformed(ActionEvent e)
JDayChooser is the ActionListener for all day buttons.

Specified by:
actionPerformed in interface ActionListener
Parameters:
e - the ActionEvent

focusGained

public void focusGained(FocusEvent e)
JDayChooser is the FocusListener for all day buttons. (Added by Thomas Schaefer)

Specified by:
focusGained in interface FocusListener
Parameters:
e - the FocusEvent

focusLost

public void focusLost(FocusEvent e)
Does nothing.

Specified by:
focusLost in interface FocusListener
Parameters:
e - the FocusEvent

keyPressed

public void keyPressed(KeyEvent e)
JDayChooser is the KeyListener for all day buttons. (Added by Thomas Schaefer and modified by Austin Moore)

Specified by:
keyPressed in interface KeyListener
Parameters:
e - the KeyEvent

keyTyped

public void keyTyped(KeyEvent e)
Does nothing.

Specified by:
keyTyped in interface KeyListener
Parameters:
e - the KeyEvent

keyReleased

public void keyReleased(KeyEvent e)
Does nothing.

Specified by:
keyReleased in interface KeyListener
Parameters:
e - the KeyEvent

setEnabled

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

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

isWeekOfYearVisible

public boolean isWeekOfYearVisible()
In some Countries it is often usefull to know in which week of the year a date is.

Returns:
boolean true, if the weeks of the year is shown

setWeekOfYearVisible

public void setWeekOfYearVisible(boolean weekOfYearVisible)
In some Countries it is often usefull to know in which week of the year a date is.

Parameters:
weekOfYearVisible - true, if the weeks of the year shall be shown

getDayPanel

public JPanel getDayPanel()
Returns the day panel.

Returns:
the day panel

getDecorationBackgroundColor

public Color getDecorationBackgroundColor()
Returns the color of the decoration (day names and weeks).

Returns:
the color of the decoration (day names and weeks).

setDecorationBackgroundColor

public void setDecorationBackgroundColor(Color decorationBackgroundColor)
Sets the background of days and weeks of year buttons.

Parameters:
decorationBackgroundColor - The background to set

getSundayForeground

public Color getSundayForeground()
Returns the Sunday foreground.

Returns:
Color the Sunday foreground.

getWeekdayForeground

public Color getWeekdayForeground()
Returns the weekday foreground.

Returns:
Color the weekday foreground.

setSundayForeground

public void setSundayForeground(Color sundayForeground)
Sets the Sunday foreground.

Parameters:
sundayForeground - The sundayForeground to set

setWeekdayForeground

public void setWeekdayForeground(Color weekdayForeground)
Sets the weekday foreground.

Parameters:
weekdayForeground - The weekdayForeground to set

setFocus

public void setFocus()
Requests that the selected day also have the focus.


isDecorationBackgroundVisible

public boolean isDecorationBackgroundVisible()
The decoration background is the background color of the day titles and the weeks of the year.

Returns:
Returns true, if the decoration background is painted.

setDecorationBackgroundVisible

public void setDecorationBackgroundVisible(boolean decorationBackgroundVisible)
The decoration background is the background color of the day titles and the weeks of the year.

Parameters:
decorationBackgroundVisible - true, if the decoration background shall be painted.

isDecorationBordersVisible

public boolean isDecorationBordersVisible()
The decoration border is the button border of the day titles and the weeks of the year.

Returns:
Returns true, if the decoration border is painted.

isDayBordersVisible

public boolean isDayBordersVisible()

setDecorationBordersVisible

public void setDecorationBordersVisible(boolean decorationBordersVisible)
The decoration border is the button border of the day titles and the weeks of the year.

Parameters:
decorationBordersVisible - true, if the decoration border shall be painted.

setDayBordersVisible

public void setDayBordersVisible(boolean dayBordersVisible)

updateUI

public void updateUI()
Updates the UI and sets the day button preferences.

Overrides:
updateUI in class JPanel

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 Date setMaxSelectableDate(Date max)
Sets the maximum selectable date. If null, the date 01\01\9999 will be set instead.

Parameters:
max - the maximum selectable date
Returns:
the maximum selectable date

setMinSelectableDate

public Date setMinSelectableDate(Date min)
Sets the minimum selectable date. If null, the date 01\01\0001 will be set instead.

Parameters:
min - the minimum selectable date
Returns:
the minimum selectable date

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

getMaxDayCharacters

public int getMaxDayCharacters()
Gets the maximum number of characters of a day name or 0. If 0 is returned, dateFormatSymbols.getShortWeekdays() will be used.

Returns:
the maximum number of characters of a day name or 0.

setMaxDayCharacters

public void setMaxDayCharacters(int maxDayCharacters)
Sets the maximum number of characters per day in the day bar. Valid values are 0-4. If set to 0, dateFormatSymbols.getShortWeekdays() will be used, otherwise theses strings will be reduced to the maximum number of characters.

Parameters:
maxDayCharacters - the maximum number of characters of a day name.

main

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

Parameters:
s - The command line arguments