Class CalendarHeaderHandler

java.lang.Object
org.jdesktop.swingx.plaf.basic.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
  • Field Details

  • Constructor Details

    • CalendarHeaderHandler

      public CalendarHeaderHandler()
  • Method Details

    • 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.
      Returns:
      font