org.jdesktop.swingx.calendar
Class DefaultDateSelectionModel

java.lang.Object
  extended by org.jdesktop.swingx.calendar.AbstractDateSelectionModel
      extended by org.jdesktop.swingx.calendar.DefaultDateSelectionModel
All Implemented Interfaces:
DateSelectionModel

public class DefaultDateSelectionModel
extends AbstractDateSelectionModel


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.jdesktop.swingx.calendar.DateSelectionModel
DateSelectionModel.SelectionMode
 
Field Summary
 
Fields inherited from class org.jdesktop.swingx.calendar.AbstractDateSelectionModel
adjusting, calendar, EMPTY_DATES, listenerMap, locale, lowerBound, upperBound
 
Constructor Summary
DefaultDateSelectionModel()
           
DefaultDateSelectionModel(Locale locale)
           The selection mode defaults to SINGLE_SELECTION.
 
Method Summary
 void addSelectionInterval(Date startDate, Date endDate)
          Adds the specified selection interval to the selection model.
 void clearSelection()
          Clears any selection from the selection model.
 Date getFirstSelectionDate()
          Returns the earliest date in the selection or null if the selection is empty.
 Date getLastSelectionDate()
          Returns the latest date in the selection or null if the selection is empty.
 Date getNormalizedDate(Date date)
          Returns a normalized Date as used by the implementation, if any.
 SortedSet<Date> getSelection()
          Returns the current selection.
 DateSelectionModel.SelectionMode getSelectionMode()
          Get the selection mode.
 SortedSet<Date> getUnselectableDates()
          Returns a SortedSet of Dates that are unselectable.
 boolean isSelected(Date date)
          Returns true if the date specified is selected, false otherwise.
 boolean isSelectionEmpty()
          Returns true if the selection is empty, false otherwise.
 boolean isUnselectableDate(Date date)
          Returns true is the specified date is unselectable.
 void removeSelectionInterval(Date startDate, Date endDate)
          Removes the specifed selection interval from the selection model.
 void setSelectionInterval(Date startDate, Date endDate)
          Sest the specified selection interval to the selection model.
 void setSelectionMode(DateSelectionModel.SelectionMode selectionMode)
          Set the selection mode.
 void setUnselectableDates(SortedSet<Date> unselectableDates)
          Sets a collection of dates which are not selectable.
 
Methods inherited from class org.jdesktop.swingx.calendar.AbstractDateSelectionModel
addDateSelectionListener, adjustDatesToTimeZone, endOfDay, fireValueChanged, getCalendar, getDateSelectionListeners, getFirstDayOfWeek, getLocale, getLowerBound, getMinimalDaysInFirstWeek, getTimeZone, getUpperBound, isAdjusting, isSameDay, removeDateSelectionListener, setAdjusting, setFirstDayOfWeek, setLocale, setLowerBound, setMinimalDaysInFirstWeek, setTimeZone, setUpperBound, startOfDay
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultDateSelectionModel

public DefaultDateSelectionModel()

DefaultDateSelectionModel

public DefaultDateSelectionModel(Locale locale)

The selection mode defaults to SINGLE_SELECTION.

Method Detail

getSelectionMode

public DateSelectionModel.SelectionMode getSelectionMode()
Get the selection mode.

Returns:
return the current selection mode

setSelectionMode

public void setSelectionMode(DateSelectionModel.SelectionMode selectionMode)
Set the selection mode.

Parameters:
selectionMode - new selection mode

addSelectionInterval

public void addSelectionInterval(Date startDate,
                                 Date endDate)
Adds the specified selection interval to the selection model.

Parameters:
startDate - interval start date, must not be null
endDate - interval end date >= start date, must not be null

setSelectionInterval

public void setSelectionInterval(Date startDate,
                                 Date endDate)
Sest the specified selection interval to the selection model.

Parameters:
startDate - interval start date, must not be null
endDate - interval end date >= start date, must not be null

removeSelectionInterval

public void removeSelectionInterval(Date startDate,
                                    Date endDate)
Removes the specifed selection interval from the selection model. If the selection is changed by this method, it fires a DateSelectionEvent of type DATES_REMOVED.

Parameters:
startDate - interval start date, must not be null
endDate - interval end date >= start date, must not be null

clearSelection

public void clearSelection()
Clears any selection from the selection model. Fires an Event of type SELECTION_CLEARED if there had been a selection, does nothing otherwise.


getSelection

public SortedSet<Date> getSelection()
Returns the current selection.

Returns:
sorted set of selected dates, guaranteed to be never null.

getFirstSelectionDate

public Date getFirstSelectionDate()
Returns the earliest date in the selection or null if the selection is empty.

Returns:
the earliest date in the selection, or null if isSelectionEmpty.
See Also:
DateSelectionModel.getLastSelectionDate(), DateSelectionModel.getSelection(), DateSelectionModel.isSelectionEmpty()

getLastSelectionDate

public Date getLastSelectionDate()
Returns the latest date in the selection or null if the selection is empty.

Returns:
the lastest date in the selection, or null if isSelectionEmpty.
See Also:
DateSelectionModel.getFirstSelectionDate(), DateSelectionModel.getSelection(), DateSelectionModel.isSelectionEmpty()

isSelected

public boolean isSelected(Date date)
Returns true if the date specified is selected, false otherwise.

Note: it is up to implementations to define the exact notion of selected. It does not imply the exact date as given is contained the set returned from getSelection().

Parameters:
date - date to check for selection, must not be null
Returns:
true if the date is selected, false otherwise

getNormalizedDate

public Date getNormalizedDate(Date date)
Returns a normalized Date as used by the implementation, if any. F.i. DaySelectionModel returns the start of the day in the model's calendar. If no normalization is applied, a clone of the Date itself is returned. The given Date is never changed.

The overall contract:


 if ((date != null) && isSelectable(date)) {
     setSelectionInterval(date, date);
     assertEquals(getNormalized(date), getFirstSelectionDate();
 }
 

Returns:
the date as it would be normalized before used in the model, must not be null.

isSelectionEmpty

public boolean isSelectionEmpty()
Returns true if the selection is empty, false otherwise.

Returns:
true if the selection is empty, false otherwise

getUnselectableDates

public SortedSet<Date> getUnselectableDates()
Returns a SortedSet of Dates that are unselectable.

Returns:
sorted set of dates

setUnselectableDates

public void setUnselectableDates(SortedSet<Date> unselectableDates)
Sets a collection of dates which are not selectable.

Note: it is up to implementations to define the exact notion of unselectableDate. It does not imply the only the exact date as given is unselectable, it might have a period like "all dates on the same day". PENDING JW: any collection would do - why insist on a SortedSet?

Parameters:
unselectableDates - dates that are unselectable, must not be null and must not contain null dates.

isUnselectableDate

public boolean isUnselectableDate(Date date)
Returns true is the specified date is unselectable.

Parameters:
date - the date to check for unselectability, must not be null.
Returns:
true is the date is unselectable, false otherwise