Class DaySelectionModel

  • All Implemented Interfaces:
    DateSelectionModel

    public class DaySelectionModel
    extends AbstractDateSelectionModel
    DaySelectionModel is a (temporary?) implementation of DateSelectionModel which normalizes all dates to the start of the day, that is zeroes all time fields. Responsibility extracted from JXMonthView (which must respect rules of model instead of trying to be clever itself).
    Author:
    Joshua Outwater
    • Constructor Detail

      • DaySelectionModel

        public DaySelectionModel()
      • DaySelectionModel

        public DaySelectionModel​(java.util.Locale locale)
    • Method Detail

      • addSelectionInterval

        public void addSelectionInterval​(java.util.Date startDate,
                                         java.util.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​(java.util.Date startDate,
                                         java.util.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​(java.util.Date startDate,
                                            java.util.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 java.util.SortedSet<java.util.Date> getSelection()
        Returns the current selection.
        Returns:
        sorted set of selected dates, guaranteed to be never null.
      • isSelected

        public boolean isSelected​(java.util.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
      • isSelectionEmpty

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

        public java.util.SortedSet<java.util.Date> getUnselectableDates()
        Returns a SortedSet of Dates that are unselectable.
        Returns:
        sorted set of dates
      • setUnselectableDates

        public void setUnselectableDates​(java.util.SortedSet<java.util.Date> unselectables)
        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:
        unselectables - dates that are unselectable, must not be null and must not contain null dates.
      • isUnselectableDate

        public boolean isUnselectableDate​(java.util.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
      • getNormalizedDate

        public java.util.Date getNormalizedDate​(java.util.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();
         }
         

        Implemented to return the start of the day which contains the date.

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