QJCC homepage

biz.chitec.quarterback.swing
Class CalendarPanel

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended bybiz.chitec.quarterback.swing.CalendarPanel
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.swing.SwingConstants

public class CalendarPanel
extends javax.swing.JPanel
implements javax.swing.SwingConstants

A panel which shows a date in a standard calendar type The panel shows the month of the current date. It is possible to go one month or one year ahead or backward. A date is selected by clicking on the button with day to be selected. The class features a static popup menu method which allows to show the calendar as a popup. There is always only one popup which is reused every time. The result is passed as property "date" to a PropertyChangeListener.

Version:
$Id: 17ea49788435738071af79a1e2322bb3ae1418fa $
Author:
cantamen/Dirk Hillbrecht 2005 Distributed under the terms of the GNU LGPL.
See Also:
CalendarPanelDemo, Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  javax.swing.ButtonGroup buttongroup
           
private static javax.swing.JPopupMenu calendarpopup
           
private static CalendarPanel calendarpopuppanel
           
private  javax.swing.JLabel[] daylabel
           
private  int firstindex
           
private  EDate lastrefresheddate
           
private  EDate maxdate
           
private  EDate mindate
           
private  javax.swing.JLabel monthname
           
private  java.text.DateFormat monthnameformatter
           
private  javax.swing.JToggleButton[] mybuttons
           
private  javax.swing.JButton nextmonth
           
private  javax.swing.JButton nextyear
           
private static java.beans.PropertyChangeListener popuppcl
           
private  javax.swing.JButton prevmonth
           
private  javax.swing.JButton prevyear
           
private  java.util.ResourceBundle rb
           
private  boolean startsunday
           
private  java.util.Calendar thecalendar
           
private  EDate thedate
           
private  javax.swing.JLabel[] weeklabel
           
 
Fields inherited from class javax.swing.JPanel
 
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.Container
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
CalendarPanel()
          Initialize the panel using the current locale.
CalendarPanel(java.util.Locale loc)
          Initalize the panel using the given locale.
 
Method Summary
private  void refreshCalendar()
          Refresh the presentation after change of min-, max- or current date or selected month or year.
 void setDate(EDate datex)
          Set the date to be shown.
 void setLocale(java.util.Locale loc)
          Set a locale for first-day-of-week-selection.
 void setMaxDate(EDate maxdatex)
          Sets the maximal selectable date.
 void setMinDate(EDate mindatex)
          Sets the minimal selectable date.
static void showPopup(EDate startdate, java.awt.Component caller, int position, java.beans.PropertyChangeListener pcl)
          Show calendar as popup with unrestricted date range.
static void showPopup(EDate startdate, EDate mindate, EDate maxdate, java.awt.Component caller, int position, java.beans.PropertyChangeListener pcl)
          Show calendar as popup with a selectable date range.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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

calendarpopup

private static javax.swing.JPopupMenu calendarpopup

calendarpopuppanel

private static CalendarPanel calendarpopuppanel

popuppcl

private static java.beans.PropertyChangeListener popuppcl

thedate

private EDate thedate

lastrefresheddate

private EDate lastrefresheddate

startsunday

private boolean startsunday

mybuttons

private javax.swing.JToggleButton[] mybuttons

daylabel

private javax.swing.JLabel[] daylabel

weeklabel

private javax.swing.JLabel[] weeklabel

thecalendar

private java.util.Calendar thecalendar

prevyear

private javax.swing.JButton prevyear

prevmonth

private javax.swing.JButton prevmonth

nextmonth

private javax.swing.JButton nextmonth

nextyear

private javax.swing.JButton nextyear

monthname

private javax.swing.JLabel monthname

firstindex

private int firstindex

buttongroup

private javax.swing.ButtonGroup buttongroup

rb

private java.util.ResourceBundle rb

mindate

private EDate mindate

maxdate

private EDate maxdate

monthnameformatter

private java.text.DateFormat monthnameformatter
Constructor Detail

CalendarPanel

public CalendarPanel()
Initialize the panel using the current locale. The locale is used for first-day-of-week-selection.


CalendarPanel

public CalendarPanel(java.util.Locale loc)
Initalize the panel using the given locale.

Parameters:
loc - Locale to use for first-day-of-week-selection.
Method Detail

setLocale

public void setLocale(java.util.Locale loc)
Set a locale for first-day-of-week-selection. This method can be called multiple times. It will always change the appearance of the widget appropriately. Most important locale-specific setting is the first day of the week. The widget will start the weeks either on Sunday or on Monday.

Parameters:
loc - Locale

setMinDate

public void setMinDate(EDate mindatex)
Sets the minimal selectable date. Dates before the given date are not selectable.

Parameters:
mindatex - Minimal selectable date or null if no limit.

setMaxDate

public void setMaxDate(EDate maxdatex)
Sets the maximal selectable date. Dates after the given date are not selectable.

Parameters:
maxdatex - Maximal selectable date or null if no limit.

setDate

public void setDate(EDate datex)
Set the date to be shown. Calling this method does not raise a PropertyChangeEvent.

Parameters:
datex - Date to use as base for selection, null is not allowed.

refreshCalendar

private void refreshCalendar()
Refresh the presentation after change of min-, max- or current date or selected month or year.


showPopup

public static void showPopup(EDate startdate,
                             java.awt.Component caller,
                             int position,
                             java.beans.PropertyChangeListener pcl)
Show calendar as popup with unrestricted date range.

Parameters:
startdate - Date to start selection with.
caller - Component to assign the popup menu to.
position - Relative position of the popup menu.
pcl - Listener to pass selected date as property "date" to.

showPopup

public static void showPopup(EDate startdate,
                             EDate mindate,
                             EDate maxdate,
                             java.awt.Component caller,
                             int position,
                             java.beans.PropertyChangeListener pcl)
Show calendar as popup with a selectable date range. The popup menu is initialized if this has not happened so far. It pops up relatively to the caller component at the given position which should be one of the SwingConstants.NORTH_WEST, .NORTH_EAST, .SOUTH_WEST, or .SOUTH_EAST. It removes itself automatically after a selection has been made.

Parameters:
startdate - Date to start selection with.
mindate - Minimal selectable date.
maxdate - Maximal selectable date.
caller - Component to assign the popup menu to.
position - Relative position of the popup menu.
pcl - Listener to pass selected date as property "date" to.

QJCC homepage