Class SpinningCalendarHeaderHandler


  • public class SpinningCalendarHeaderHandler
    extends CalendarHeaderHandler
    Custom CalendarHeaderHandler which supports year-wise navigation.

    The custom component used as header component of this implementation contains month-navigation buttons, a label with localized month text and a spinner for .. well ... spinning the years. There is minimal configuration control via the UIManager:

    • control the position of the nextMonth button: the default is at the trailing edge of the header. Option is to insert it directly after the month text, to enable set a Boolean.TRUE as value for key ARROWS_SURROUNDS_MONTH.
    • control the focusability of the spinner's text field: the default is false. To enable set a Boolean.TRUE as value for key FOCUSABLE_SPINNER_TEXT.
    Note: this header is not used by default. To make it the per-application default register it with the UIManager, like
    
     UIManager.put(CalendarHeaderHandler.uiControllerID, 
          "org.jdesktop.swingx.plaf.basic.SpinningCalendarHeaderHandler");
     
     
    PENDING JW: implement and bind actions for keyboard navigation. These are potentially different from navigation by mouse: need to move the selection along with the scrolling?
    • Field Detail

      • ARROWS_SURROUND_MONTH

        public static final String ARROWS_SURROUND_MONTH
        Key for use in UIManager to control the position of the nextMonth arrow.
        See Also:
        Constant Field Values
      • FOCUSABLE_SPINNER_TEXT

        public static final String FOCUSABLE_SPINNER_TEXT
        Key for use in UIManager to control the focusable property of the year spinner.
        See Also:
        Constant Field Values
    • Constructor Detail

      • SpinningCalendarHeaderHandler

        public SpinningCalendarHeaderHandler()
    • Method Detail

      • install

        public void install​(JXMonthView monthView)
        Installs this handler to the given month view.

        Overridden to configure header specifics component after calling super.

        Overrides:
        install in class CalendarHeaderHandler
        Parameters:
        monthView - the target month view to install to.
      • uninstall

        public void uninstall​(JXMonthView monthView)
        Uninstalls this handler from the given target month view.

        Overridden to cleanup the specifics before calling super.

        Overrides:
        uninstall in class CalendarHeaderHandler
        Parameters:
        monthView - the target month view to install from.
      • installListeners

        protected void installListeners()
        Creates and registered listeners on the monthView as appropriate. This implementation registers a PropertyChangeListener which synchronizes internal state on changes of componentOrientation, font and monthStringBackground.

        Overrides:
        installListeners in class CalendarHeaderHandler
      • updateFormatters

        protected void updateFormatters()
        Updates the formatter of the month text to the JXMonthView's Locale.
      • firstDisplayedDayChanged

        protected void firstDisplayedDayChanged()
        Updates internal state to monthView's firstDisplayedDay.
      • localeChanged

        protected void localeChanged()
        Updates internal state to monthView's locale.