DESY ACOP Beans Home

com.cosylab.gui.components
Class DateSpanSelector

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 com.cosylab.gui.components.DateSpanSelector
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class DateSpanSelector
extends javax.swing.JPanel

A simple graphical widget for selecting date intervals. The component consists of a SimpleComboBox containing months and years and a panel of labels indicating days in the selected month. The user can select date intervals by dragging the mouse over the chosen set of date labels. Selections of spanning over multiple months are possible by dragging the mouse outside the date panel area in the chosen direction.

When a date is selected PropertyChangeListeners are notified through the property selectedDateSpan. The new value indicates the current date selection. Date is always selected from the midnight of the beginning date till the end of the ending date.

Version:
$id$
Author:
Jernej Kamenik
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
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 java.lang.String[] DAYS
          Names of week days.
static java.lang.String[] MONTHS
          Names of months.
 
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
DateSpanSelector()
          Constructs the DateSpanSelector.
 
Method Summary
static void copyDate(java.util.Calendar source, java.util.Calendar destination)
          Copies date from te source to the destination.
static java.util.Calendar createCopy(java.util.Calendar source)
          Creates a copy of the calendar.
 java.util.Date getSelectedDate()
          Returns the selected date if single date is selected otherwise null.
 DateSpan getSelectedDateSpan()
          Returns the selected date interval.
static boolean isSameDate(java.util.Date date1, java.util.Date date2)
          Returns true if the two dates are the same for the selector.
 boolean isSingleDateSelected()
          Returns whether a single date is selected.
static void main(java.lang.String[] args)
          For testing and demonstration purposes only.
static void normalizeToBeginningOfDay(java.util.Calendar date)
          Normalizes date to the beginning of the day.
static void normalizeToEndOfDay(java.util.Calendar date)
          Normalizes date to the last milisecond of the day.
static void normalizeToMiddleOfDay(java.util.Calendar date)
          Normalizes date to the middle of the day.
 void setEnabled(boolean enabled)
           
 void setSelectedDate(java.util.Date date)
          Sets the single selected date.
 void setSelectedDateSpan(DateSpan newSpan)
           
 void setSelectedDateSpan(DateSpan newSpan, boolean shouldScroll)
          Sets a new date interval to be selected.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
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, setFont, 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, 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, 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

DAYS

public static final java.lang.String[] DAYS
Names of week days.


MONTHS

public static final java.lang.String[] MONTHS
Names of months.

Constructor Detail

DateSpanSelector

public DateSpanSelector()
Constructs the DateSpanSelector.

Method Detail

isSameDate

public static boolean isSameDate(java.util.Date date1,
                                 java.util.Date date2)
Returns true if the two dates are the same for the selector. Dates are the same if they have the same year and the same day of year.

Parameters:
date1 -
date2 -
Returns:

setSelectedDateSpan

public void setSelectedDateSpan(DateSpan newSpan)

setSelectedDateSpan

public void setSelectedDateSpan(DateSpan newSpan,
                                boolean shouldScroll)
Sets a new date interval to be selected. If null, the selection is reset to current date. Also triggers single date selection: if the datespan points to the single day, the single selection is synchronized. Otherwise, single selection is removed.

Parameters:
newSpan -
shouldScroll - flag indicates whether the calendar should scroll to the selected finishing date

getSelectedDateSpan

public DateSpan getSelectedDateSpan()
Returns the selected date interval.

Returns:
DateSpan

copyDate

public static void copyDate(java.util.Calendar source,
                            java.util.Calendar destination)
Copies date from te source to the destination.

Parameters:
source - source calendar
destination - destination calendar

createCopy

public static java.util.Calendar createCopy(java.util.Calendar source)
Creates a copy of the calendar.

Parameters:
source - calendar to be copies
Returns:
a copy of the given calendar

normalizeToBeginningOfDay

public static void normalizeToBeginningOfDay(java.util.Calendar date)
Normalizes date to the beginning of the day. Needed for comparison of Calendars, when only DAY, MONTH and YEAR values are relevant.

Parameters:
date - Calendar

normalizeToEndOfDay

public static void normalizeToEndOfDay(java.util.Calendar date)
Normalizes date to the last milisecond of the day. Needed for comparison of Calendars, when only DAY, MONTH and YEAR values are relevant.

Parameters:
date - Calendar

normalizeToMiddleOfDay

public static void normalizeToMiddleOfDay(java.util.Calendar date)
Normalizes date to the middle of the day. Needed for comparison of Calendars, when only DAY, MONTH and YEAR values are relevant.

Parameters:
date - Calendar

setSelectedDate

public void setSelectedDate(java.util.Date date)
Sets the single selected date. If null is set, the current selection is reset to current date. Also triggers dateSpan selection to reflect the date selection.

Parameters:
date -

getSelectedDate

public java.util.Date getSelectedDate()
Returns the selected date if single date is selected otherwise null.

Returns:
single date selection

isSingleDateSelected

public boolean isSingleDateSelected()
Returns whether a single date is selected.

Returns:
true if a single date is selected, false otherwise.

setEnabled

public void setEnabled(boolean enabled)
Overrides:
setEnabled in class javax.swing.JComponent

main

public static void main(java.lang.String[] args)
For testing and demonstration purposes only.

Parameters:
args - String[]


Copyright © 2010. All Rights Reserved.