Class BasicDatePickerUI


public class BasicDatePickerUI extends DatePickerUI
The basic implementation of a DatePickerUI.
Author:
Joshua Outwater, Jeanette Winzenburg
  • Field Details

    • datePicker

      protected JXDatePicker datePicker
      datePicker
    • propertyChangeListener

      protected PropertyChangeListener propertyChangeListener
      shared listeners
    • mouseListener

      protected MouseListener mouseListener
      listener's for the arrow button, MouseListener
    • mouseMotionListener

      protected MouseMotionListener mouseMotionListener
      MouseMotionListener for the arrow button
  • Constructor Details

    • BasicDatePickerUI

      public BasicDatePickerUI()
  • Method Details

    • createUI

      public static ComponentUI createUI(JComponent c)
      factory method
      Parameters:
      c - JComponent not used
      Returns:
      instance of BasicDatePickerUI
    • installUI

      public void installUI(JComponent c)

      overrides empty method defined in javax.swing.plaf.ComponentUI

      Overrides:
      installUI in class ComponentUI
    • uninstallUI

      public void uninstallUI(JComponent c)

      overrides empty method defined in javax.swing.plaf.ComponentUI

      Overrides:
      uninstallUI in class ComponentUI
    • 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

      protected void uninstallLinkPanelKeyboardActions(JComponent panel)
      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

      protected void updateMonthViewListeners(JXMonthView oldMonthView)
      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

      protected void updateEditorListeners(JFormattedTextField oldEditor)
      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

      protected void updateSelectionModelListeners(DateSelectionModel oldModel)
      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

      protected JFormattedTextField 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

      protected JButton createPopupButton()
      create Popup Button
      Returns:
      buttom
    • getMinimumSize

      public Dimension getMinimumSize(JComponent c)
      Overrides:
      getMinimumSize in class ComponentUI
    • getPreferredSize

      public Dimension getPreferredSize(JComponent c)
      Overrides:
      getPreferredSize in class ComponentUI
    • getBaseline

      public int getBaseline(int width, int height)
      Description copied from class: DatePickerUI
      Get 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:
      getBaseline in class DatePickerUI
      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

      public Date getSelectableDate(Date date) throws PropertyVetoException
      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:
      getSelectableDate in class DatePickerUI
      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

      protected void updateFromValueChanged(Date oldDate, Date newDate)
      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 change
      newDate - 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 change
      adjusting - flag to indicate whether the the selection change is intermediate
    • updateFromMonthViewChanged

      protected void updateFromMonthViewChanged(JXMonthView oldMonthView)
      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

      protected void updateFromEditorChanged(JFormattedTextField oldEditor, boolean updateListeners)
      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

      protected void updateFromSelectionModelChanged(DateSelectionModel oldModel)
      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

      protected void updateFormatsFromTimeZone(TimeZone zone)
      Updates the picker's formats to the given TimeZone.
      Parameters:
      zone - the timezone to set on the formats.
    • updateTimeZone

      protected void updateTimeZone(TimeZone old)
      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

      protected void updateLinkPanel(JComponent oldLinkPanel)
      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

      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

      protected PopupMenuListener getPopupMenuListener()
      Returns the PopupMenuListener for the MonthView popup. Lazily created.
      Returns:
      the popupuMenuListener to install on the popup
    • createPopupMenuListener

      protected PopupMenuListener 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

      protected PropertyChangeListener createMonthViewPropertyListener()
      Creates and returns the property change listener for the picker's monthView
      Returns:
      the listener for monthView properties
    • createFocusListener

      protected FocusListener createFocusListener()
      Creates and returns the focuslistener for picker and editor.
      Returns:
      the focusListener
    • createEditorActionListener

      protected ActionListener createEditorActionListener()
      Creates and returns the ActionListener for the picker's editor.
      Returns:
      the Actionlistener for the editor.
    • createMonthViewActionListener

      protected ActionListener createMonthViewActionListener()
      Creates and returns the ActionListener for the picker's monthView.
      Returns:
      the Actionlistener for the monthView.
    • createMonthViewSelectionListener

      protected DateSelectionListener createMonthViewSelectionListener()
      Returns the listener for the dateSelection.
      Returns:
      the date selection listener
    • createEditorPropertyListener

      protected PropertyChangeListener createEditorPropertyListener()
      Returns:
      a propertyChangeListener listening to editor property changes
    • createPropertyChangeListener

      protected PropertyChangeListener createPropertyChangeListener()
      create Listener
      Returns:
      PropertyChangeListener
    • createLayoutManager

      protected LayoutManager createLayoutManager()
      create LayoutManager
      Returns:
      LayoutManager
    • createMouseListener

      protected MouseListener createMouseListener()
      create Listener
      Returns:
      MouseListener
    • createMouseMotionListener

      protected MouseMotionListener createMouseMotionListener()
      create Listener
      Returns:
      MouseMotionListener