Class AbstractDateSelectionModel

java.lang.Object
org.jdesktop.swingx.calendar.AbstractDateSelectionModel
All Implemented Interfaces:
DateSelectionModel
Direct Known Subclasses:
DaySelectionModel, DefaultDateSelectionModel, SingleDaySelectionModel

public abstract class AbstractDateSelectionModel extends Object implements DateSelectionModel
Abstract base implementation of DateSelectionModel. Implements notification, Calendar related properties and lower/upper bounds.
Author:
Jeanette Winzenburg
  • Field Details

    • EMPTY_DATES

      public static final SortedSet<Date> EMPTY_DATES
      empty dates
    • listenerMap

      protected EventListenerMap listenerMap
      the Listeners collection
    • adjusting

      protected boolean adjusting
      TODO doc
    • calendar

      protected Calendar calendar
      java.util.Calendar
    • upperBound

      protected Date upperBound
      upper bound for the model
    • lowerBound

      protected Date lowerBound
      lower bound for the model
    • locale

      protected Locale locale
      the locale used by the calendar.

      NOTE: need to keep separately as a Calendar has no getter.

  • Constructor Details

    • AbstractDateSelectionModel

      public AbstractDateSelectionModel()
      Instantiates a DateSelectionModel with default locale.
    • AbstractDateSelectionModel

      public AbstractDateSelectionModel(Locale locale)
      Instantiates a DateSelectionModel with the given locale. If the locale is null, the Locale's default is used. PENDING JW: fall back to JComponent.getDefaultLocale instead? We use this with components anyway?
      Parameters:
      locale - the Locale to use with this model, defaults to Locale.default() if null.
  • Method Details

    • getCalendar

      public Calendar getCalendar()
      Returns a clone of the calendar used by this model. It's date is unspecified.
      Specified by:
      getCalendar in interface DateSelectionModel
      Returns:
      a clone of the calendar used by this model.
    • getFirstDayOfWeek

      public int getFirstDayOfWeek()
      Gets what the first day of the week is; e.g., Calendar.SUNDAY in the U.S., Calendar.MONDAY in France. This is needed when the model selection mode is WEEK_INTERVAL_SELECTION. PENDING JW: move week-interval selection from JXMonthView into the model.
      Specified by:
      getFirstDayOfWeek in interface DateSelectionModel
      Returns:
      int The first day of the week.
      See Also:
    • setFirstDayOfWeek

      public void setFirstDayOfWeek(int firstDayOfWeek)
      Sets what the first day of the week is. E.g., Calendar.SUNDAY in US, Calendar.MONDAY in France. Fires a DateSelectionEvent of type CALENDAR_CHANGED, if the value is different from the old.

      The default value depends on the Calendar's default. PENDING JW: actually, it's a bound property. Use a propertyChangeListener?

      Specified by:
      setFirstDayOfWeek in interface DateSelectionModel
      Parameters:
      firstDayOfWeek - The first day of the week.
      See Also:
    • getMinimalDaysInFirstWeek

      public int getMinimalDaysInFirstWeek()
      Gets the minimal number of days in the first week of the year.
      Specified by:
      getMinimalDaysInFirstWeek in interface DateSelectionModel
      Returns:
      int the minimal number of days in the first week of the year.
    • setMinimalDaysInFirstWeek

      public void setMinimalDaysInFirstWeek(int minimalDays)
      Sets the minimal number of days in the first week of the year. Fires a DateSelectionEvent of type CALENDAR_CHANGED, if the value is different from the old. The default value depends on the Calendar's default. PENDING JW: actually, it's a bound property. Use a propertyChangeListener?
      Specified by:
      setMinimalDaysInFirstWeek in interface DateSelectionModel
      Parameters:
      minimalDays - the minimal number of days in the first week of the year.
      See Also:
    • getTimeZone

      public TimeZone getTimeZone()
      Returns the TimeZone of this model.
      Specified by:
      getTimeZone in interface DateSelectionModel
      Returns:
      the TimeZone of this model.
      See Also:
    • setTimeZone

      public void setTimeZone(TimeZone timeZone)
      Sets the TimeZone of this model. Fires a DateSelectionEvent of type CALENDAR_CHANGED if the new value is different from the old. The default value depends on the Calendar's default. PENDING JW: actually, it's a bound property. Use a propertyChangeListener?
      Specified by:
      setTimeZone in interface DateSelectionModel
      Parameters:
      timeZone - the TimeZone to use in this model, must not be null.
      See Also:
    • adjustDatesToTimeZone

      protected void adjustDatesToTimeZone(TimeZone oldTimeZone)
      Adjusts all stored dates to a new time zone. This method is called after the change had been made.

      This implementation resets all dates to null, clears everything. Subclasses may override to really map to the new time zone.

      Parameters:
      oldTimeZone - the old time zone
    • getLocale

      public Locale getLocale()
      Returns the Locale of this model's calendar.
      Specified by:
      getLocale in interface DateSelectionModel
      Returns:
      the Locale of this model's calendar.
    • setLocale

      public void setLocale(Locale locale)
      Sets the Locale of this model's calendar. Fires a DateSelectionEvent of type CALENDAR_CHANGED if the new value is different from the old.

      The default value is Locale.default().

      PENDING JW: fall back to JComponent.getDefaultLocale instead? We use this with components anyway?

      PENDING JW: actually, it's a bound property. Use a propertyChangeListener?

      Specified by:
      setLocale in interface DateSelectionModel
      Parameters:
      locale - the Locale to use. If null, the default Locale is used.
    • startOfDay

      protected Date startOfDay(Date date)
      Returns the start of the day of the given date in this model's calendar. NOTE: the calendar is changed by this operation.
      Parameters:
      date - the Date to get the start for.
      Returns:
      the Date representing the start of the day of the input date.
    • endOfDay

      protected Date endOfDay(Date date)
      Returns the end of the day of the given date in this model's calendar. NOTE: the calendar is changed by this operation.
      Parameters:
      date - the Date to get the start for.
      Returns:
      the Date representing the end of the day of the input date.
    • isSameDay

      protected boolean isSameDay(Date selected, Date compare)
      Returns a boolean indicating whether the given dates are on the same day in the coordinates of the model's calendar.
      Parameters:
      selected - one of the dates to check, must not be null.
      compare - the other of the dates to check, must not be null.
      Returns:
      true if both dates represent the same day in this model's calendar.
    • getUpperBound

      public Date getUpperBound()
      Return the upper bound date that is allowed to be selected for this model.
      Specified by:
      getUpperBound in interface DateSelectionModel
      Returns:
      upper bound date or null if not set
    • setUpperBound

      public void setUpperBound(Date upperBound)
      Set the upper bound date that is allowed to be selected for this model.
      Specified by:
      setUpperBound in interface DateSelectionModel
      Parameters:
      upperBound - upper bound
    • getLowerBound

      public Date getLowerBound()
      Return the lower bound date that is allowed to be selected for this model.
      Specified by:
      getLowerBound in interface DateSelectionModel
      Returns:
      lower bound date or null if not set
    • setLowerBound

      public void setLowerBound(Date lowerBound)
      Set the lower bound date that is allowed to be selected for this model.
      Specified by:
      setLowerBound in interface DateSelectionModel
      Parameters:
      lowerBound - lower bound date or null if not set
    • isAdjusting

      public boolean isAdjusting()
      Returns the property to decide whether the selection is intermediate or final.
      Specified by:
      isAdjusting in interface DateSelectionModel
      Returns:
      the adjusting property.
    • setAdjusting

      public void setAdjusting(boolean adjusting)
      Set the property to mark upcoming selections as intermediate/ final. This will fire a event of type adjusting_start/stop. The default value is false. Note: Client code marking as intermediate must take care of finalizing again.
      Specified by:
      setAdjusting in interface DateSelectionModel
      Parameters:
      adjusting - a flag to turn the adjusting property on/off.
    • addDateSelectionListener

      public void addDateSelectionListener(DateSelectionListener l)
      Add the specified listener to this model.
      Specified by:
      addDateSelectionListener in interface DateSelectionModel
      Parameters:
      l - listener to add to this model
    • removeDateSelectionListener

      public void removeDateSelectionListener(DateSelectionListener l)
      Remove the specified listener to this model.
      Specified by:
      removeDateSelectionListener in interface DateSelectionModel
      Parameters:
      l - listener to remove from this model
    • getDateSelectionListeners

      public List<DateSelectionListener> getDateSelectionListeners()
      get all registered listener to this model.
      Returns:
      a List of listeners
    • fireValueChanged

      protected void fireValueChanged(DateSelectionEvent.EventType eventType)
      Notifies all listeners that have registered interest for notification on value change.
      Parameters:
      eventType - DateSelectionEvent type