Class CalendarHeaderHandler

  • Direct Known Subclasses:
    BasicCalendarHeaderHandler, SpinningCalendarHeaderHandler

    public abstract class CalendarHeaderHandler
    extends Object
    Provides and wires a component appropriate as a calendar navigation header. The design idea is to support a pluggable header for a zoomable (PENDING JW: naming!) JXMonthView. Then custom implementations can be tailored to exactly fit their needs.

    To install a custom implementation, register the class name of the custom header handler with the key CalendarHeaderHandler.uiControllerID , example:

     
      UIManager.put(CalendarHeaderHandler.uiControllerID, "com.foo.bar.MagicHeaderHandler")
     
     
    Basic navigation action should (will) be defined by the ui delegate itself (PENDING JW: still incomplete in BasicMonthViewUI). This handler can modify/enhance them as appropriate for its context.

    PENDING JW: those icons ... who's responsible? Shouldn't we use any of the default arrows as defined in the laf anyway (are there any?)

    Note: this is work-in-progress, be prepared to change if subclassing for custom requirements!

    Author:
    Jeanette Winzenburg
    • Constructor Detail

      • CalendarHeaderHandler

        public CalendarHeaderHandler()
    • Method Detail

      • install

        public void install​(JXMonthView monthView)
        Installs this handler to the given month view.
        Parameters:
        monthView - the target month view to install to.
      • uninstall

        public void uninstall​(JXMonthView monthView)
        Uninstalls this handler from the given target month view.
        Parameters:
        monthView - the target month view to install from.
      • getHeaderComponent

        public JComponent getHeaderComponent()
        Returns a component to be used as header in a zoomable month view, guaranteed to be not null.
        Returns:
        a component to be used as header in a zoomable JXMonthView
      • 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.
      • uninstallListeners

        protected void uninstallListeners()
        Unregisters listeners which had been installed to the monthView.
      • monthStringBackgroundChanged

        protected void monthStringBackgroundChanged()
        Synchronizes internal state which depends on the month view's monthStringBackground.
      • fontChanged

        protected void fontChanged()
        Synchronizes internal state which depends on the month view's font.
      • componentOrientationChanged

        protected void componentOrientationChanged()
        Synchronizes internal state which depends on the month view's componentOrientation. This implementation updates the month navigation icons and the header component's orientation.
      • createCalendarHeader

        protected abstract JComponent createCalendarHeader()
        Creates and returns the component used as header in a zoomable monthView.
        Returns:
        the component used as header in a zoomable monthView, guaranteed to be not null.
      • installNavigationActions

        protected void installNavigationActions()
        Installs and configures navigational actions.

        This implementation creates and installs wrappers around the scrollToPrevious/-NextMonth actions installed by the ui and configures them with the appropriate next/previous icons.

      • createDerivedFont

        protected Font createDerivedFont()
        Create a derived font used to when painting various pieces of the month view component. This method will be called whenever the font on the component is set so a new derived font can be created.