Class SpinningCalendarHeaderHandler
java.lang.Object
org.jdesktop.swingx.plaf.basic.CalendarHeaderHandler
org.jdesktop.swingx.plaf.basic.SpinningCalendarHeaderHandler
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.
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?-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classThe custom header component controlled and configured by this handler.private classThin-layer implementation of a SpinnerModel which is actually backed by this controller. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringKey for use in UIManager to control the position of the nextMonth arrow.static final StringKey for use in UIManager to control the focusable property of the year spinner.private static final Loggerprivate PropertyChangeListenerlistener for property changes of the JXMonthView.private FormatStringValueconverter for month text.private SpinnerModelthe spinner model for year-wise navigation.Fields inherited from class CalendarHeaderHandler
monthDownImage, monthUpImage, monthView, uiControllerID -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionCreates and returns the component used as header in a zoomable monthView.protected voidUpdates internal state to monthView's firstDisplayedDay.Returns a component to be used as header in a zoomable month view, guaranteed to be not null.private intReturns the next year of the monthView.private intReturns the previous year of the monthView.private PropertyChangeListenerReturns the property change listener for use on the monthView.private intgetYear()Returns the current year of the monthView.private SpinnerModelvoidinstall(JXMonthView monthView) Installs this handler to the given month view.protected voidCreates and registered listeners on the monthView as appropriate.protected voidUpdates internal state to monthView's locale.private booleanSets the current year of the monthView to the given value.voiduninstall(JXMonthView monthView) Uninstalls this handler from the given target month view.protected voidUnregisters listeners which had been installed to the monthView.protected voidUpdates the formatter of the month text to the JXMonthView's Locale.Methods inherited from class CalendarHeaderHandler
componentOrientationChanged, createDerivedFont, fontChanged, installNavigationActions, monthStringBackgroundChanged
-
Field Details
-
ARROWS_SURROUND_MONTH
Key for use in UIManager to control the position of the nextMonth arrow.- See Also:
-
FOCUSABLE_SPINNER_TEXT
Key for use in UIManager to control the focusable property of the year spinner.- See Also:
-
LOG
-
yearSpinnerModel
the spinner model for year-wise navigation. -
monthPropertyListener
listener for property changes of the JXMonthView. -
monthStringValue
converter for month text.
-
-
Constructor Details
-
SpinningCalendarHeaderHandler
public SpinningCalendarHeaderHandler()
-
-
Method Details
-
install
Installs this handler to the given month view.Overridden to configure header specifics component after calling super.
- Overrides:
installin classCalendarHeaderHandler- Parameters:
monthView- the target month view to install to.
-
uninstall
Uninstalls this handler from the given target month view.Overridden to cleanup the specifics before calling super.
- Overrides:
uninstallin classCalendarHeaderHandler- Parameters:
monthView- the target month view to install from.
-
getHeaderComponent
Returns a component to be used as header in a zoomable month view, guaranteed to be not null.Convenience override to the type created.
- Overrides:
getHeaderComponentin classCalendarHeaderHandler- Returns:
- a component to be used as header in a zoomable JXMonthView
-
createCalendarHeader
Creates and returns the component used as header in a zoomable monthView.Implemented to create and configure the custom header component.
- Specified by:
createCalendarHeaderin classCalendarHeaderHandler- Returns:
- the component used as header in a zoomable monthView, guaranteed to be not null.
-
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:
installListenersin classCalendarHeaderHandler
-
uninstallListeners
protected void uninstallListeners()Unregisters listeners which had been installed to the monthView.- Overrides:
uninstallListenersin classCalendarHeaderHandler
-
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. -
getPropertyChangeListener
Returns the property change listener for use on the monthView. This is lazyly created if not yet done. This implementation listens to changes of firstDisplayedDay and locale property and updates internal state accordingly.- Returns:
- the property change listener for the monthView, never null.
-
getYear
private int getYear()Returns the current year of the monthView. Callback for spinner model. return the current year of the monthView. -
getPreviousYear
private int getPreviousYear()Returns the previous year of the monthView. Callback for spinner model.PENDING JW: check against lower bound. return the previous year of the monthView.
-
getNextYear
private int getNextYear()Returns the next year of the monthView. Callback for spinner model.PENDING JW: check against upper bound. return the next year of the monthView.
-
setYear
Sets the current year of the monthView to the given value. Callback for spinner model.- Parameters:
value- the new value of the year.- Returns:
- a boolean indicating if a change actually happened.
-
getYearSpinnerModel
-