org.formaria.swing.date
Class CalendarPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by org.formaria.swing.date.CalendarPanel
All Implemented Interfaces:
java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, TextHolder

public class CalendarPanel
extends javax.swing.JComponent
implements java.awt.event.MouseListener, java.awt.event.MouseMotionListener, TextHolder

A panel containing a representation of a month so that the user can select a date visually. Events/Appointments can be added and rendered via the CalendatEvent interface.

Copyright (c) Formaria Ltd., 2008, This software is licensed under the GNU Public License (GPL), please see license.txt for more details. If you make commercial use of this software you must purchase a commercial license from Formaria.

$Revision: 1.2 $

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
static int DAY_VIEW
           
protected  int highlightedDay
           
static int MONTH_VIEW
           
protected  int selectedDay
           
protected  StyleManager styleManager
           
protected  java.lang.String[] styles
           
 
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
CalendarPanel()
           
 
Method Summary
 java.util.Date getDate()
          Gets the current date.
 boolean getDayNames()
          Get the style of the 3D elements including the navigation buttons
 boolean getDrawBorder()
          Get the drawBorder flag value
 java.lang.String getFormat()
          Get the format of the edit field.
 java.lang.String getHeaderStyle()
          Get the style of the header.
 java.lang.String getHighlightStyle()
          Get the style of the highlighted date.
 Appointment getSelectedAppointment()
          Get the selected appointment if any.
 java.lang.String getSelectedStyle()
          Get the style of the selected date.
 java.lang.String getStyle()
          Get the style asociated with the normal elements
 java.lang.String getStyleHighlighted()
          Get the style asociated with the highlighted element
 java.lang.String getStyleSelected()
          Get the style asociated with the selected elements
 java.lang.String getStyleWeekend()
          Get the style asociated with the weekend element
 java.lang.String getText()
          Get the text/label of a component
 java.lang.String getThreeDStyle()
          Get the style of the 3D elements including the navigation buttons
 java.lang.String getWeekendStyle()
          Get the style of the weekend elements.
 void mouseClicked(java.awt.event.MouseEvent e)
           
 void mouseDragged(java.awt.event.MouseEvent e)
           
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mouseMoved(java.awt.event.MouseEvent e)
           
 void mousePressed(java.awt.event.MouseEvent e)
           
 void mouseReleased(java.awt.event.MouseEvent e)
           
 void next()
          Move to the next month
 void nextDay()
          Move to the next month
 void nextYear()
          Move to the next year
 void paintComponent(java.awt.Graphics g)
          Renders the current month
 void paintDayView(java.awt.Graphics2D g2d)
          Paint the day view of the calendar
 void paintMonthView(java.awt.Graphics2D g2d)
          Paint the month view of the calendar
 void prev()
          Move to the previous month
 void prevDay()
          Move to the previous month
 void prevYear()
          Move to the previous year
 void setAppointmentPainter(AppointmentPainter painter)
          Set the AppointmentPainter which will receive month and day view paint events.
 void setAppointmentProvider(AppointmentProvider provider)
          Set the appointment provider that provides the dates for this calendar
 void setBounds(int x, int y, int w, int h)
          Moves and resizes this component.
 void setDate(java.util.Date newDate)
          Sets the current date
 void setDateFormat(java.lang.String dateFormat)
          Set the date format string
 void setDayNames(boolean show)
          Set the style of the 3D elements including the navigation buttons
 void setDrawBorder(boolean b)
          Set the drawBorder flag value
 void setFormat(java.lang.String format)
          Set the format of the edit field.
 void setHeaderStyle(java.lang.String styleName)
          Set the style of the header.
 void setHighlightStyle(java.lang.String styleName)
          Set the style of the highlighted date.
 void setSelectedStyle(java.lang.String styleName)
          Set the style of the selected date.
 void setShowDayNames(boolean state)
          Show or hide the day names
 void setStyle(java.lang.String newStyle)
          set the style asociated with the normal elements
 void setStyleHighlighted(java.lang.String newStyle)
          set the style asociated with highlighted element
 void setStyles(java.lang.String[] styles)
          Set the styles for the date panel
 void setStyleSelected(java.lang.String newStyle)
          Get the style asociated with the selected elements
 void setStyleWeekend(java.lang.String newStyle)
          set the style asociated with weekend element
 void setText(java.lang.String s)
          Set the text/label of a component
 void setThreeDStyle(java.lang.String styleName)
          Set the style of the 3D elements including the navigation buttons
 void setView(java.lang.String mode)
          Set the view mode
 void setWeekendStyle(java.lang.String styleName)
          Set the style of the weekend elements.
 void showNavItems(boolean bShow)
          Show the navigation header items
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, 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, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
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, 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, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, 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

MONTH_VIEW

public static final int MONTH_VIEW
See Also:
Constant Field Values

DAY_VIEW

public static final int DAY_VIEW
See Also:
Constant Field Values

styleManager

protected StyleManager styleManager

selectedDay

protected int selectedDay

highlightedDay

protected int highlightedDay

styles

protected java.lang.String[] styles
Constructor Detail

CalendarPanel

public CalendarPanel()
Method Detail

setAppointmentPainter

public void setAppointmentPainter(AppointmentPainter painter)
Set the AppointmentPainter which will receive month and day view paint events.

Parameters:
painter - the AppointmentPainter object

setAppointmentProvider

public void setAppointmentProvider(AppointmentProvider provider)
Set the appointment provider that provides the dates for this calendar

Parameters:
provider - the object that provides the appointment information

showNavItems

public void showNavItems(boolean bShow)
Show the navigation header items

Parameters:
bShow - true to show the navigation items

setBounds

public void setBounds(int x,
                      int y,
                      int w,
                      int h)
Moves and resizes this component. The new location of the top-left corner is specified by x and y, and the new size is specified by width and height.

Overrides:
setBounds in class java.awt.Component
Parameters:
x - the new x-coordinate of this component
y - the new y-coordinate of this component
width - the new width of this component
height - the new height of this component
Since:
JDK1.1
See Also:
JComponent.getBounds(java.awt.Rectangle), Component.setLocation(int, int), Component.setLocation(Point), Component.setSize(int, int), Component.setSize(Dimension)

setView

public void setView(java.lang.String mode)
Set the view mode

Parameters:
mode - "month" or "day"

getDate

public java.util.Date getDate()
Gets the current date.

Returns:

setDate

public void setDate(java.util.Date newDate)
Sets the current date

Parameters:
newDate - the new date

prev

public void prev()
Move to the previous month


next

public void next()
Move to the next month


prevDay

public void prevDay()
Move to the previous month


nextDay

public void nextDay()
Move to the next month


prevYear

public void prevYear()
Move to the previous year


nextYear

public void nextYear()
Move to the next year


getSelectedAppointment

public Appointment getSelectedAppointment()
Get the selected appointment if any.

Returns:
the appointment or null if none is selected

paintComponent

public void paintComponent(java.awt.Graphics g)
Renders the current month

Overrides:
paintComponent in class javax.swing.JComponent
Parameters:
g -

paintMonthView

public void paintMonthView(java.awt.Graphics2D g2d)
Paint the month view of the calendar


paintDayView

public void paintDayView(java.awt.Graphics2D g2d)
Paint the day view of the calendar


mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Specified by:
mouseClicked in interface java.awt.event.MouseListener

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Specified by:
mouseReleased in interface java.awt.event.MouseListener

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent e)
Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener

getStyleSelected

public java.lang.String getStyleSelected()
Get the style asociated with the selected elements

Returns:
the style name

setStyleSelected

public void setStyleSelected(java.lang.String newStyle)
Get the style asociated with the selected elements

Parameters:
newStyle - the style name

getStyleWeekend

public java.lang.String getStyleWeekend()
Get the style asociated with the weekend element

Returns:
the style name

setStyleWeekend

public void setStyleWeekend(java.lang.String newStyle)
set the style asociated with weekend element

Parameters:
newStyle - the style name

getStyleHighlighted

public java.lang.String getStyleHighlighted()
Get the style asociated with the highlighted element

Returns:
the style name

setStyleHighlighted

public void setStyleHighlighted(java.lang.String newStyle)
set the style asociated with highlighted element

Parameters:
newStyle - the style name

getStyle

public java.lang.String getStyle()
Get the style asociated with the normal elements

Returns:
the style name

setStyle

public void setStyle(java.lang.String newStyle)
set the style asociated with the normal elements

Parameters:
newStyle - the style name

setStyles

public void setStyles(java.lang.String[] styles)
Set the styles for the date panel

Parameters:
styles - the styles in the following order: style, selectedStyle, weekendStyle, highlightStyle, headerStyle, threeDStyle

setShowDayNames

public void setShowDayNames(boolean state)
Show or hide the day names

Parameters:
state - true to show the day names

setWeekendStyle

public void setWeekendStyle(java.lang.String styleName)
Set the style of the weekend elements. The weekend elements are the dates that fall on weekends (Saturday and Sunday). This style allowes those dates to be shown in an alternative styles, typically with a grayed out or less saturated/right background color.

Parameters:
styleName - the style name for the weekend dates

setSelectedStyle

public void setSelectedStyle(java.lang.String styleName)
Set the style of the selected date. The selected date is chosen by clicking on a date. It is shown in the specified style even if the curosr is moved.

Parameters:
styleName - the style name for the selected date

setHighlightStyle

public void setHighlightStyle(java.lang.String styleName)
Set the style of the highlighted date. The highlighted date is is the date shown below the curose. Setting this style provides user feedback when the mouse moves.

Parameters:
styleName - the style name for the highlighted date

setHeaderStyle

public void setHeaderStyle(java.lang.String styleName)
Set the style of the header. The header shows the month, year and the navigation buttons. It is painted with a gradient

Parameters:
styleName - the style name for the highlighted date

setThreeDStyle

public void setThreeDStyle(java.lang.String styleName)
Set the style of the 3D elements including the navigation buttons

Parameters:
styleName - the style name for the highlighted date

setFormat

public void setFormat(java.lang.String format)
Set the format of the edit field. The format is used in the construction of a java.text.SimpleDateFormat instance.

Parameters:
format - the new date format

setDayNames

public void setDayNames(boolean show)
Set the style of the 3D elements including the navigation buttons

Parameters:
styleName - the style name for the highlighted date

getWeekendStyle

public java.lang.String getWeekendStyle()
Get the style of the weekend elements. The weekend elements are the dates that fall on weekends (Saturday and Sunday). This style allowes those dates to be shown in an alternative styles, typically with a grayed out or less saturated/right background color.

Returns:
the style name for the weekend dates

getSelectedStyle

public java.lang.String getSelectedStyle()
Get the style of the selected date. The selected date is chosen by clicking on a date. It is shown in the specified style even if the curosr is moved.

Returns:
the style name for the selected date

getHighlightStyle

public java.lang.String getHighlightStyle()
Get the style of the highlighted date. The highlighted date is is the date shown below the curose. Setting this style provides user feedback when the mouse moves.

Returns:
the style name for the highlighted date

getHeaderStyle

public java.lang.String getHeaderStyle()
Get the style of the header. The header shows the month, year and the navigation buttons. It is painted with a gradient

Returns:
the style name for the highlighted date

getThreeDStyle

public java.lang.String getThreeDStyle()
Get the style of the 3D elements including the navigation buttons

Returns:
the style name for the highlighted date

getFormat

public java.lang.String getFormat()
Get the format of the edit field. The format is used in the construction of a java.text.SimpleDateFormat instance.

Returns:
the new date format

getDayNames

public boolean getDayNames()
Get the style of the 3D elements including the navigation buttons

Returns:
the style name for the highlighted date

setText

public void setText(java.lang.String s)
Description copied from interface: TextHolder
Set the text/label of a component

Specified by:
setText in interface TextHolder
Parameters:
s - the new text

getText

public java.lang.String getText()
Description copied from interface: TextHolder
Get the text/label of a component

Specified by:
getText in interface TextHolder
Returns:
the component's text

getDrawBorder

public boolean getDrawBorder()
Get the drawBorder flag value

Returns:
true if the border is drawn

setDrawBorder

public void setDrawBorder(boolean b)
Set the drawBorder flag value

Parameters:
b - true if the border is drawn

setDateFormat

public void setDateFormat(java.lang.String dateFormat)
Set the date format string

Parameters:
dateFormat -