Package org.jdesktop.swingx.plaf.basic
Class BasicDatePickerUI
java.lang.Object
javax.swing.plaf.ComponentUI
org.jdesktop.swingx.plaf.DatePickerUI
org.jdesktop.swingx.plaf.basic.BasicDatePickerUI
The basic implementation of a
DatePickerUI.- Author:
- Joshua Outwater, Jeanette Winzenburg
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classPopup component that shows a JXMonthView component along with controlling buttons to allow traversal of the months.classThe wrapper for the editor cancel action.classimplements PropertyChangeListener -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected JXDatePickerdatePickerprotected MouseListenerlistener's for the arrow button, MouseListenerprotected MouseMotionListenerMouseMotionListener for the arrow buttonprotected PropertyChangeListenershared listeners -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcancel()protected voidcommit()protected JFormattedTextFieldCreates the editor used to edit the date selection.protected ActionListenerCreates and returns the ActionListener for the picker's editor.protected PropertyChangeListenerprotected FocusListenerCreates and returns the focuslistener for picker and editor.protected LayoutManagercreate LayoutManagerprotected ActionListenerCreates and returns the ActionListener for the picker's monthView.protected PropertyChangeListenerCreates and returns the property change listener for the picker's monthViewprotected DateSelectionListenerReturns the listener for the dateSelection.protected MouseListenercreate Listenerprotected MouseMotionListenercreate Listenerprotected JButtoncreate Popup Buttonprotected PopupMenuListenerCreates and returns a PopupMenuListener.protected PropertyChangeListenercreate ListenerCreates and returns the action which toggles the visibility of the popup.static ComponentUIfactory methodintgetBaseline(int width, int height) Get the baseline for the specified component, or a value less than 0 if the baseline can not be determined.protected PopupMenuListenerReturns the PopupMenuListener for the MonthView popup.getSelectableDate(Date date) Checks the given date for validity for selection.voidPENDING: widened access for debugging - need api to control popup visibility?protected voidhome(boolean commit) Navigates to linkDate.protected voidinstall all components needed: picker, popupButton, ...protected voidInstalls DatePicker default properties.protected voidinstall picker's actionsprotected voidInstalls actions and key bindings on the datePicker's linkPanel.protected voidCreates and installs all listeners to all components.protected voidCreates the popup and registers the popup listener.voidbooleanvoidToggles the popups visibility after preparing internal state.protected voiduninstall allprotected voiddoes nothing, can be overridden by subclassprotected voidUninstalls actions and key bindings from linkPanel.protected voidUninstalls actions and key bindings from linkPanel.protected voidUninstalls and nulls all listeners which had been installed by this delegate.protected voidRemoves the popup listener from the popup and null it, if it was not null.voidprotected voidupdateEditorListeners(JFormattedTextField oldEditor) Wires the picker's editor related listening and actions.protected voidUpdates the picker's formats to the given TimeZone.protected voidUpdates internals after picker's date property changed.protected voidUpdates properties which depend on the picker's editable.protected voidupdateFromEditorChanged(JFormattedTextField oldEditor, boolean updateListeners) Updates internals after the picker's editor property has changed.protected voidUpdate properties which depend on the picker's enabled.protected voidupdateFromMonthViewChanged(JXMonthView oldMonthView) Updates internals after the picker's monthView has changed.protected voidupdateFromSelectionChanged(DateSelectionEvent.EventType eventType, boolean adjusting) Updates date related properties picker/editor after a change in the monthView's selection.protected voidUpdates internals after the selection model changed.protected voidupdateFromValueChanged(Date oldDate, Date newDate) Updates date related properties in picker/monthView after a change in the editor's value.protected voidUpdates the picker's linkDate to be in synch with monthView's today.protected voidupdateLinkPanel(JComponent oldLinkPanel) protected voidCalled form property listener, updates all components locale, formats etc.protected voidupdateMonthViewListeners(JXMonthView oldMonthView) Wires the picker's monthView related listening.protected voidWires monthView's selection model listening.protected voidupdateTimeZone(TimeZone old) Updates picker's timezone dependent properties on change notification from the associated monthView.Methods inherited from class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, getMaximumSize, paint, update
-
Field Details
-
datePicker
datePicker -
propertyChangeListener
shared listeners -
mouseListener
listener's for the arrow button, MouseListener -
mouseMotionListener
MouseMotionListener for the arrow button
-
-
Constructor Details
-
BasicDatePickerUI
public BasicDatePickerUI()
-
-
Method Details
-
createUI
factory method- Parameters:
c- JComponent not used- Returns:
- instance of BasicDatePickerUI
-
installUI
overrides empty method defined in javax.swing.plaf.ComponentUI
- Overrides:
installUIin classComponentUI
-
uninstallUI
overrides empty method defined in javax.swing.plaf.ComponentUI
- Overrides:
uninstallUIin classComponentUI
-
installComponents
protected void installComponents()install all components needed: picker, popupButton, ... -
uninstallComponents
protected void uninstallComponents()uninstall all -
installDefaults
protected void installDefaults()Installs DatePicker default properties. -
uninstallDefaults
protected void uninstallDefaults()does nothing, can be overridden by subclass -
installKeyboardActions
protected void installKeyboardActions()install picker's actions -
uninstallKeyboardActions
protected void uninstallKeyboardActions()Uninstalls actions and key bindings from linkPanel. Does nothing if the linkPanel is null. -
installLinkPanelKeyboardActions
protected void installLinkPanelKeyboardActions()Installs actions and key bindings on the datePicker's linkPanel. Does nothing if the linkPanel is null. PRE: keybindings installed on picker. -
uninstallLinkPanelKeyboardActions
Uninstalls actions and key bindings from linkPanel. Does nothing if the linkPanel is null.- Parameters:
panel- the component to uninstall
-
installListeners
protected void installListeners()Creates and installs all listeners to all components. -
uninstallListeners
protected void uninstallListeners()Uninstalls and nulls all listeners which had been installed by this delegate. -
updateMonthViewListeners
Wires the picker's monthView related listening. Removes all listeners from the given old view and adds the listeners to the current monthView.- Parameters:
oldMonthView- emoves all listeners from the given old view
-
updateEditorListeners
Wires the picker's editor related listening and actions. Removes listeners/actions from the old editor and adds them to the new editor.- Parameters:
oldEditor- the pickers editor before the change
-
updateSelectionModelListeners
Wires monthView's selection model listening. Removes the selection listener from the old model and add to the new model.- Parameters:
oldModel- the dateSelectionModel before the change, may be null.
-
createEditor
Creates the editor used to edit the date selection. The editor is configured with the default DatePickerFormatter marked as UIResource.- Returns:
- an instance of a JFormattedTextField
-
createPopupButton
create Popup Button- Returns:
- buttom
-
getMinimumSize
- Overrides:
getMinimumSizein classComponentUI
-
getPreferredSize
- Overrides:
getPreferredSizein classComponentUI
-
getBaseline
public int getBaseline(int width, int height) Description copied from class:DatePickerUIGet the baseline for the specified component, or a value less than 0 if the baseline can not be determined. The baseline is measured from the top of the component.- Overrides:
getBaselinein classDatePickerUI- Parameters:
width- Width of the component to determine baseline for.height- Height of the component to determine baseline for.- Returns:
- baseline for the specified component
-
getSelectableDate
Checks the given date for validity for selection. If valid, returns the date as appropriate in the picker's context, otherwise throws a propertyVetoException. Note that the returned date might be different from the input date, f.i. the time fields might be cleared. The input date is guaranteed to be unchanged.- Specified by:
getSelectableDatein classDatePickerUI- Parameters:
date- date to check- Returns:
- the date as allowed in the context of the picker.
- Throws:
PropertyVetoException- if the given date is not valid for selection
-
updateFromDateChanged
protected void updateFromDateChanged()Updates internals after picker's date property changed. -
updateFromValueChanged
Updates date related properties in picker/monthView after a change in the editor's value. Reverts the value if the new date is unselectable.- Parameters:
oldDate- the editor value before the changenewDate- the editor value after the change
-
updateFromSelectionChanged
protected void updateFromSelectionChanged(DateSelectionEvent.EventType eventType, boolean adjusting) Updates date related properties picker/editor after a change in the monthView's selection. Here: does nothing if the change is intermediate. PENDNG JW: shouldn't we listen to actionEvents then?- Parameters:
eventType- the type of the selection changeadjusting- flag to indicate whether the the selection change is intermediate
-
updateFromMonthViewChanged
Updates internals after the picker's monthView has changed.Cleans to popup. Wires the listeners. Updates date. Updates formats' timezone.
- Parameters:
oldMonthView- the picker's monthView before the change, may be null.
-
updateFromEditorChanged
Updates internals after the picker's editor property has changed.Updates the picker's children. Removes the old editor and adds the new editor. Wires the editor listeners, it the flag set. Typically, this method is called during installing the componentUI with the flag set to false and true at all other moments.
- Parameters:
oldEditor- the picker's editor before the change, may be null.updateListeners- a flag to indicate whether the listeners are ready for usage.
-
updateFromSelectionModelChanged
Updates internals after the selection model changed.- Parameters:
oldModel- the model before the change.
-
updateFromEditableChanged
protected void updateFromEditableChanged()Updates properties which depend on the picker's editable. -
updateFromEnabledChanged
protected void updateFromEnabledChanged()Update properties which depend on the picker's enabled. -
updateFormatsFromTimeZone
Updates the picker's formats to the given TimeZone.- Parameters:
zone- the timezone to set on the formats.
-
updateTimeZone
Updates picker's timezone dependent properties on change notification from the associated monthView. PENDING JW: DatePicker needs to send notification on timezone change?- Parameters:
old- the timezone before the change.
-
updateLinkDate
protected void updateLinkDate()Updates the picker's linkDate to be in synch with monthView's today. -
updateLocale
protected void updateLocale()Called form property listener, updates all components locale, formats etc. -
updateLinkPanel
- Parameters:
oldLinkPanel- JComponent to uninstall
-
commit
protected void commit() -
cancel
protected void cancel() -
hidePopup
public void hidePopup()PENDING: widened access for debugging - need api to control popup visibility? -
isPopupVisible
public boolean isPopupVisible()- Returns:
- true if popup is visible
-
home
protected void home(boolean commit) Navigates to linkDate. If commit, the linkDate is selected and committed. If not commit, the linkDate is scrolled to visible, if the monthview is open, does nothing for invisible monthView.- Parameters:
commit- boolean to indicate whether the linkDate should be selected and committed
-
createTogglePopupAction
protected org.jdesktop.swingx.plaf.basic.BasicDatePickerUI.TogglePopupAction createTogglePopupAction()Creates and returns the action which toggles the visibility of the popup.- Returns:
- the action which toggles the visibility of the popup.
-
toggleShowPopup
public void toggleShowPopup()Toggles the popups visibility after preparing internal state. -
installPopup
protected void installPopup()Creates the popup and registers the popup listener. All internal methods must use this method instead of calling createPopup directly. -
uninstallPopup
protected void uninstallPopup()Removes the popup listener from the popup and null it, if it was not null. All internal popup removal/replacement must use this method instead of nulling directly. -
getPopupMenuListener
Returns the PopupMenuListener for the MonthView popup. Lazily created.- Returns:
- the popupuMenuListener to install on the popup
-
createPopupMenuListener
Creates and returns a PopupMenuListener. PENDING JW: the listener management assumes a stateless implementation relative to the popup/picker. Custom implementations should take care to not keep any references.- Returns:
- listener
-
createMonthViewPropertyListener
Creates and returns the property change listener for the picker's monthView- Returns:
- the listener for monthView properties
-
createFocusListener
Creates and returns the focuslistener for picker and editor.- Returns:
- the focusListener
-
createEditorActionListener
Creates and returns the ActionListener for the picker's editor.- Returns:
- the Actionlistener for the editor.
-
createMonthViewActionListener
Creates and returns the ActionListener for the picker's monthView.- Returns:
- the Actionlistener for the monthView.
-
createMonthViewSelectionListener
Returns the listener for the dateSelection.- Returns:
- the date selection listener
-
createEditorPropertyListener
- Returns:
- a propertyChangeListener listening to editor property changes
-
createPropertyChangeListener
create Listener- Returns:
- PropertyChangeListener
-
createLayoutManager
create LayoutManager- Returns:
- LayoutManager
-
createMouseListener
create Listener- Returns:
- MouseListener
-
createMouseMotionListener
create Listener- Returns:
- MouseMotionListener
-