com.michaelbaranov.microba.calendar
Class CalendarPane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by com.michaelbaranov.microba.common.MicrobaComponent
                  extended by com.michaelbaranov.microba.calendar.CalendarPane
All Implemented Interfaces:
CalendarColors, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable
Direct Known Subclasses:
DatePicker

public class CalendarPane
extends MicrobaComponent
implements CalendarColors

A concrete implementation of JComponent. Capable of displaying and selecting dates, much like a real-world calendar.

Author:
Michael Baranov
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Field Summary
static java.lang.String PROPERTY_NAME_DATE
          The name of a "date" property.
static java.lang.String PROPERTY_NAME_FOCUS_LOST_BEHAVIOR
          The name of a "focusLocatBehavior" property.
static java.lang.String PROPERTY_NAME_HOLIDAY_POLICY
          The name of a "holidayPolicy" property.
static java.lang.String PROPERTY_NAME_LOCALE
          The name of a "locale" property.
static java.lang.String PROPERTY_NAME_RESOURCES
          The name of a "resources" property.
static java.lang.String PROPERTY_NAME_SHOW_NONE_BTN
          The name of a "showNoneButton" property.
static java.lang.String PROPERTY_NAME_SHOW_NUMBER_WEEK
          The name of a "resources" property.
static java.lang.String PROPERTY_NAME_SHOW_TODAY_BTN
          The name of a "showTodayButton" property.
static java.lang.String PROPERTY_NAME_STRIP_TIME
          The name of a "stripTime" property.
static java.lang.String PROPERTY_NAME_STYLE
          The name of a "style" property.
static java.lang.String PROPERTY_NAME_VETO_POLICY
          The name of a "vetoPolicy" property.
static java.lang.String PROPERTY_NAME_ZONE
          The name of a "zone" property.
static int STYLE_CLASSIC
          A constant for the "style" property.
static int STYLE_MODERN
          A constant for the "style" property.
 
Fields inherited from class com.michaelbaranov.microba.common.MicrobaComponent
PROPERTY_NAME_COLOR_OVERRIDE_MAP
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, 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 com.michaelbaranov.microba.calendar.CalendarColors
COLOR_CALENDAR_GRID_BACKGROUND_DISABLED, COLOR_CALENDAR_GRID_BACKGROUND_ENABLED, COLOR_CALENDAR_GRID_FOCUS, COLOR_CALENDAR_GRID_FOREGROUND_DISABLED, COLOR_CALENDAR_GRID_FOREGROUND_ENABLED, COLOR_CALENDAR_GRID_HOLIDAY_FOREGROUND_DISABLED, COLOR_CALENDAR_GRID_HOLIDAY_FOREGROUND_ENABLED, COLOR_CALENDAR_GRID_RESTRICTED, COLOR_CALENDAR_GRID_SELECTION_BACKGROUND_DISABLED, COLOR_CALENDAR_GRID_SELECTION_BACKGROUND_ENABLED, COLOR_CALENDAR_GRID_WEEKEND_FOREGROUND_DISABLED, COLOR_CALENDAR_GRID_WEEKEND_FOREGROUND_ENABLED, COLOR_CALENDAR_HEADER_BACKGROUND_DISABLED, COLOR_CALENDAR_HEADER_BACKGROUND_ENABLED, COLOR_CALENDAR_HEADER_FOREGROUND_DISABLED, COLOR_CALENDAR_HEADER_FOREGROUND_ENABLED, COLOR_CALENDAR_HEADER_FOREGROUND_WEEKEND_DISABLED, COLOR_CALENDAR_HEADER_FOREGROUND_WEEKEND_ENABLED
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
CalendarPane()
          Constructor.
CalendarPane(java.util.Date initialDate)
          Constructor.
CalendarPane(java.util.Date initialDate, int style)
          Constructor.
CalendarPane(java.util.Date initialDate, int style, java.util.Locale locale)
          Constructor.
CalendarPane(java.util.Date initialDate, int style, java.util.Locale locale, java.util.TimeZone zone)
          Constructor.
CalendarPane(int style)
          Constructor.
 
Method Summary
 void addActionListener(java.awt.event.ActionListener listener)
          Adds an ActionListener listener.
 void addCommitListener(CommitListener listener)
          Adds an CommitListener listener.
 boolean commitEdit()
          Forces the control to commit current user's edit.
 void commitOrRevert()
          Forces the control to commit or revert user's edit depending on the current focus lost behavior as if the focus would be lost.
 java.util.Date getDate()
          Returns currently selected date in the control.
 int getFocusLostBehavior()
          Returns the focus lost behavior.
 HolidayPolicy getHolidayPolicy()
          Returns current holliday policy (model).
 java.util.Locale getLocale()
          Returns current locale.
 CalendarResources getResources()
          Resurns current calendar resources model.
 int getStyle()
          Returns current visual style of the control.
 java.lang.String getUIClassID()
           
 VetoPolicy getVetoPolicy()
          Returns the current veto policy (model).
 java.util.TimeZone getZone()
          Returns current time zone.
 boolean isShowNoneButton()
          Is the none-button visible?
 boolean isShowNumberOfWeek()
          Is the number of every week visible?
 boolean isShowTodayButton()
          Is today button visible?
 boolean isStripTime()
          Is time protion of the date automatically striped, based on current locale and ime zone?
 void removeActionListener(java.awt.event.ActionListener listener)
          Removes an ActionListener listener.
 void removeCommitListener(CommitListener listener)
          Removes an CommitListener listener.
 void revertEdit()
          Forces the control to revert current user's edit to reflect current control's date.
 void setDate(java.util.Date date)
          Sets currently selected date to the control.
 void setFocusLostBehavior(int behavior)
          Sets the focus lost behaviour.
 void setHolidayPolicy(HolidayPolicy holidayPolicy)
          Sets current holliday policy (model) then updates the control to reflect the policy set.
 void setLocale(java.util.Locale locale)
          Sets current locale.
 void setResources(CalendarResources resources)
          Sets current calendar resources model.
 void setShowNoneButton(boolean visible)
          Shows or hides the none-button.
 void setShowNumberOfWeek(boolean visible)
          Shows or hides the the number of every week.
 void setShowTodayButton(boolean visible)
          Shows or hides the today-button.
 void setStripTime(boolean stripTime)
          Makes getDate() either strip the time portion of the date, or keep it.
 void setStyle(int style)
          Sets the current visual style of the control.
 void setVetoPolicy(VetoPolicy vetoModel)
          Sets the current veto policy (model).
 void setZone(java.util.TimeZone zone)
          Sets current time zone.
static java.util.Date stripTime(java.util.Date date, java.util.TimeZone zone, java.util.Locale locale)
          Returns same date as given, but time portion (hours, minutes, seconds, fraction of second) set to zero, based on given locale and time zone.
 
Methods inherited from class com.michaelbaranov.microba.common.MicrobaComponent
getColorOverrideMap, getUI, setColorOverrideMap, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, 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, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, 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, 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
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

PROPERTY_NAME_DATE

public static final java.lang.String PROPERTY_NAME_DATE
The name of a "date" property.

See Also:
Constant Field Values

PROPERTY_NAME_LOCALE

public static final java.lang.String PROPERTY_NAME_LOCALE
The name of a "locale" property.

See Also:
Constant Field Values

PROPERTY_NAME_ZONE

public static final java.lang.String PROPERTY_NAME_ZONE
The name of a "zone" property.

See Also:
Constant Field Values

PROPERTY_NAME_STYLE

public static final java.lang.String PROPERTY_NAME_STYLE
The name of a "style" property.

See Also:
Constant Field Values

PROPERTY_NAME_SHOW_TODAY_BTN

public static final java.lang.String PROPERTY_NAME_SHOW_TODAY_BTN
The name of a "showTodayButton" property.

See Also:
Constant Field Values

PROPERTY_NAME_SHOW_NONE_BTN

public static final java.lang.String PROPERTY_NAME_SHOW_NONE_BTN
The name of a "showNoneButton" property.

See Also:
Constant Field Values

PROPERTY_NAME_FOCUS_LOST_BEHAVIOR

public static final java.lang.String PROPERTY_NAME_FOCUS_LOST_BEHAVIOR
The name of a "focusLocatBehavior" property.

See Also:
Constant Field Values

PROPERTY_NAME_VETO_POLICY

public static final java.lang.String PROPERTY_NAME_VETO_POLICY
The name of a "vetoPolicy" property.

See Also:
Constant Field Values

PROPERTY_NAME_HOLIDAY_POLICY

public static final java.lang.String PROPERTY_NAME_HOLIDAY_POLICY
The name of a "holidayPolicy" property.

See Also:
Constant Field Values

PROPERTY_NAME_RESOURCES

public static final java.lang.String PROPERTY_NAME_RESOURCES
The name of a "resources" property.

See Also:
Constant Field Values

PROPERTY_NAME_SHOW_NUMBER_WEEK

public static final java.lang.String PROPERTY_NAME_SHOW_NUMBER_WEEK
The name of a "resources" property.

See Also:
Constant Field Values

PROPERTY_NAME_STRIP_TIME

public static final java.lang.String PROPERTY_NAME_STRIP_TIME
The name of a "stripTime" property.

See Also:
Constant Field Values

STYLE_MODERN

public static final int STYLE_MODERN
A constant for the "style" property.

See Also:
Constant Field Values

STYLE_CLASSIC

public static final int STYLE_CLASSIC
A constant for the "style" property.

See Also:
Constant Field Values
Constructor Detail

CalendarPane

public CalendarPane()
Constructor.


CalendarPane

public CalendarPane(int style)
Constructor.


CalendarPane

public CalendarPane(java.util.Date initialDate)
Constructor.


CalendarPane

public CalendarPane(java.util.Date initialDate,
                    int style)
Constructor.


CalendarPane

public CalendarPane(java.util.Date initialDate,
                    int style,
                    java.util.Locale locale)
Constructor.


CalendarPane

public CalendarPane(java.util.Date initialDate,
                    int style,
                    java.util.Locale locale,
                    java.util.TimeZone zone)
Constructor.

Method Detail

getUIClassID

public java.lang.String getUIClassID()
Overrides:
getUIClassID in class javax.swing.JComponent

getDate

public java.util.Date getDate()
Returns currently selected date in the control.

The returned date is guaranteed to pass the restriction check by the current VetoPolicy. Based on the value of stripTime property, the returned date may be automatically stripped.

Returns:
currently selected date
See Also:
stripTime, stripTime(Date, TimeZone, Locale)

setDate

public void setDate(java.util.Date date)
             throws java.beans.PropertyVetoException
Sets currently selected date to the control.

The given date is checked against the current VetoPolicy. If the check is passed, the date is transferred to the control and the control is updated to display the date.

A PropertyChangeEvent may be fired, an ActionEvent may be fired.

Parameters:
date - the date to set
Throws:
java.beans.PropertyVetoException - if the date is restricted by the current VetoPolicy.
See Also:
getVetoPolicy(), setVetoPolicy(VetoPolicy), addActionListener(ActionListener)

getLocale

public java.util.Locale getLocale()
Returns current locale.

Overrides:
getLocale in class java.awt.Component
Returns:
current locale

setLocale

public void setLocale(java.util.Locale locale)
Sets current locale.

The locale is used to construct internal Calendar instances and affects visual representation of the control.

Overrides:
setLocale in class java.awt.Component
Parameters:
locale - the locale to set

getZone

public java.util.TimeZone getZone()
Returns current time zone.

Returns:
current time zone

setZone

public void setZone(java.util.TimeZone zone)
Sets current time zone.

The time zone is used to construct internal Calendar instances and affects visual representation of the control. The dates returned by getDate() will have all time components set to zero considering the current locale.

Parameters:
zone - the time zone to set

getStyle

public int getStyle()
Returns current visual style of the control.

Returns:
current visual style constant.

setStyle

public void setStyle(int style)
Sets the current visual style of the control.

The control is then updated to reflect the new style.

Parameters:
style - the style to set
See Also:
STYLE_CLASSIC, STYLE_MODERN

isShowTodayButton

public boolean isShowTodayButton()
Is today button visible?

The today button allows the user to quickly select current date.

Returns:
true if the today button is visible, false otherwise

setShowTodayButton

public void setShowTodayButton(boolean visible)
Shows or hides the today-button.

The today-button allows the user to quickly select current date.

Parameters:
visible - true to show the today-button false to hide

isShowNoneButton

public boolean isShowNoneButton()
Is the none-button visible?

The none-button allows the user to select empty date (null-date, no date).

Returns:
true if the none-button is visible, false otherwise

setShowNoneButton

public void setShowNoneButton(boolean visible)
Shows or hides the none-button.

The none-button allows the user to select empty date (null-date, no date).

Parameters:
visible - true to show the none-button false to hide

getFocusLostBehavior

public int getFocusLostBehavior()
Returns the focus lost behavior. Possible values are: Original meaning preserved.

Returns:
the focus lost behavior constant
See Also:
JFormattedTextField

setFocusLostBehavior

public void setFocusLostBehavior(int behavior)
Sets the focus lost behaviour. Possible values are: Original meaning preserved.

Parameters:
behavior - the focus lost behavior constant
See Also:
JFormattedTextField

getResources

public CalendarResources getResources()
Resurns current calendar resources model.

The model is used to query localized resources for the control.

Returns:
current calendar resources model
See Also:
CalendarResources

setResources

public void setResources(CalendarResources resources)
Sets current calendar resources model.

The model is used to query localized resources for the control.

Parameters:
resources - a calendar resources model to set. Should not be null
See Also:
CalendarResources

getHolidayPolicy

public HolidayPolicy getHolidayPolicy()
Returns current holliday policy (model).

The policy is used to query holliday dates and holliday descriptions.

Returns:
current holliday policy or null if none set
See Also:
HolidayPolicy

setHolidayPolicy

public void setHolidayPolicy(HolidayPolicy holidayPolicy)
Sets current holliday policy (model) then updates the control to reflect the policy set.

The policy is used to query holliday dates and holiday descriptions.

Parameters:
holidayPolicy - a holliday policy to set. May be null
See Also:
VetoPolicy

getVetoPolicy

public VetoPolicy getVetoPolicy()
Returns the current veto policy (model).

The policy is used to veto dates in the control.

Returns:
current veto policy or null if none set
See Also:
VetoPolicy

setVetoPolicy

public void setVetoPolicy(VetoPolicy vetoModel)
Sets the current veto policy (model).

The policy is used to veto dates in the control.

Parameters:
vetoModel - a veto policy to set. May be null

isShowNumberOfWeek

public boolean isShowNumberOfWeek()
Is the number of every week visible?

Returns:
true if the number of every week is visible, false otherwise

isStripTime

public boolean isStripTime()
Is time protion of the date automatically striped, based on current locale and ime zone?

Returns:
true if getDate() returns a stripped date, false otherwise
See Also:
setStripTime(boolean), stripTime(Date, TimeZone, Locale)

setStripTime

public void setStripTime(boolean stripTime)
Makes getDate() either strip the time portion of the date, or keep it.

Parameters:
stripTime - true to strip time, false to keep time

setShowNumberOfWeek

public void setShowNumberOfWeek(boolean visible)
Shows or hides the the number of every week.

The number of week is based on the current locale for the component.

Parameters:
visible - true to show the the number of every week false to hide

addActionListener

public void addActionListener(java.awt.event.ActionListener listener)
Adds an ActionListener listener.

Parameters:
listener - a listener to add
See Also:
ActionListener

removeActionListener

public void removeActionListener(java.awt.event.ActionListener listener)
Removes an ActionListener listener.

Parameters:
listener - a listener to remove
See Also:
ActionListener

addCommitListener

public void addCommitListener(CommitListener listener)
Adds an CommitListener listener.

Parameters:
listener - a listener to add
See Also:
CommitListener

removeCommitListener

public void removeCommitListener(CommitListener listener)
Removes an CommitListener listener.

Parameters:
listener - a listener to remove
See Also:
CommitListener

commitEdit

public boolean commitEdit()
Forces the control to commit current user's edit. The opertaion may fail because the date in the control may be restricted by current veto policy. If successfull, the current date of the control may change, a CommitEvent is fired.

Returns:
true if successful, false otherwise
See Also:
revertEdit(), getFocusLostBehavior(), setFocusLostBehavior(int)

revertEdit

public void revertEdit()
Forces the control to revert current user's edit to reflect current control's date. The current date of the control may change, a CommitEvent is fired.

See Also:
revertEdit(), getFocusLostBehavior(), setFocusLostBehavior(int)

commitOrRevert

public void commitOrRevert()
Forces the control to commit or revert user's edit depending on the current focus lost behavior as if the focus would be lost.

See Also:
commitEdit(), revertEdit(), getFocusLostBehavior(), setFocusLostBehavior(int)

stripTime

public static java.util.Date stripTime(java.util.Date date,
                                       java.util.TimeZone zone,
                                       java.util.Locale locale)
Returns same date as given, but time portion (hours, minutes, seconds, fraction of second) set to zero, based on given locale and time zone. Utility method.

Examle:
Fri Sep 29 15:57:23 EEST 2006 -> Fri Sep 29 00:00:00 EEST 2006

Parameters:
date - date to strip time from
zone - time zone to get zero fields in
locale - locale to base the calendar on
Returns:
stripped date