Module java.desktop

Class BasicComboPopup

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, MenuElement, ComboPopup
Direct Known Subclasses:
MetalComboBoxUI.MetalComboPopup

public class BasicComboPopup
extends JPopupMenu
implements ComboPopup
This is a basic implementation of the ComboPopup interface. This class represents the ui for the popup portion of the combo box.

All event handling is handled by listener classes created with the createxxxListener() methods and internal classes. You can change the behavior of this class by overriding the createxxxListener() methods and supplying your own event listeners or subclassing from the ones supplied in this class.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the java.beans package. Please see XMLEncoder.

  • Field Details

    • comboBox

      protected JComboBox<Object> comboBox
      The instance of JComboBox.
    • list

      protected JList<Object> list
      This protected field is implementation specific. Do not access directly or override. Use the accessor methods instead.
      See Also:
      getList(), createList()
    • scroller

      protected JScrollPane scroller
      This protected field is implementation specific. Do not access directly or override. Use the create method instead
      See Also:
      createScroller()
    • valueIsAdjusting

      protected boolean valueIsAdjusting
      As of Java 2 platform v1.4 this previously undocumented field is no longer used.
    • mouseMotionListener

      protected MouseMotionListener mouseMotionListener
      This protected field is implementation specific. Do not access directly or override. Use the accessor or create methods instead.
      See Also:
      getMouseMotionListener(), createMouseMotionListener()
    • mouseListener

      protected MouseListener mouseListener
      This protected field is implementation specific. Do not access directly or override. Use the accessor or create methods instead.
      See Also:
      getMouseListener(), createMouseListener()
    • keyListener

      protected KeyListener keyListener
      This protected field is implementation specific. Do not access directly or override. Use the accessor or create methods instead.
      See Also:
      getKeyListener(), createKeyListener()
    • listSelectionListener

      protected ListSelectionListener listSelectionListener
      This protected field is implementation specific. Do not access directly or override. Use the create method instead.
      See Also:
      createListSelectionListener()
    • listMouseListener

      protected MouseListener listMouseListener
      This protected field is implementation specific. Do not access directly or override. Use the create method instead.
      See Also:
      createListMouseListener()
    • listMouseMotionListener

      protected MouseMotionListener listMouseMotionListener
      This protected field is implementation specific. Do not access directly or override. Use the create method instead
      See Also:
      createListMouseMotionListener()
    • propertyChangeListener

      protected PropertyChangeListener propertyChangeListener
      This protected field is implementation specific. Do not access directly or override. Use the create method instead
      See Also:
      createPropertyChangeListener()
    • listDataListener

      protected ListDataListener listDataListener
      This protected field is implementation specific. Do not access directly or override. Use the create method instead
      See Also:
      createListDataListener()
    • itemListener

      protected ItemListener itemListener
      This protected field is implementation specific. Do not access directly or override. Use the create method instead
      See Also:
      createItemListener()
    • autoscrollTimer

      protected Timer autoscrollTimer
      This protected field is implementation specific. Do not access directly or override.
    • hasEntered

      protected boolean hasEntered
      true if the mouse cursor is in the popup.
    • isAutoScrolling

      protected boolean isAutoScrolling
      If true the auto-scrolling is enabled.
    • scrollDirection

      protected int scrollDirection
      The direction of scrolling.
    • SCROLL_UP

      protected static final int SCROLL_UP
      The direction of scrolling up.
      See Also:
      Constant Field Values
    • SCROLL_DOWN

      protected static final int SCROLL_DOWN
      The direction of scrolling down.
      See Also:
      Constant Field Values
  • Constructor Details

    • BasicComboPopup

      public BasicComboPopup​(JComboBox<Object> combo)
      Constructs a new instance of BasicComboPopup.
      Parameters:
      combo - an instance of JComboBox
  • Method Details

    • show

      public void show()
      Implementation of ComboPopup.show().
      Specified by:
      show in interface ComboPopup
      Overrides:
      show in class Component
    • hide

      public void hide()
      Implementation of ComboPopup.hide().
      Specified by:
      hide in interface ComboPopup
      Overrides:
      hide in class JComponent
    • getList

      public JList<Object> getList()
      Implementation of ComboPopup.getList().
      Specified by:
      getList in interface ComboPopup
      Returns:
      the list that is being used to draw the items in the combo box
    • getMouseListener

      public MouseListener getMouseListener()
      Implementation of ComboPopup.getMouseListener().
      Specified by:
      getMouseListener in interface ComboPopup
      Returns:
      a MouseListener or null
      See Also:
      ComboPopup.getMouseListener()
    • getMouseMotionListener

      public MouseMotionListener getMouseMotionListener()
      Implementation of ComboPopup.getMouseMotionListener().
      Specified by:
      getMouseMotionListener in interface ComboPopup
      Returns:
      a MouseMotionListener or null
      See Also:
      ComboPopup.getMouseMotionListener()
    • getKeyListener

      public KeyListener getKeyListener()
      Implementation of ComboPopup.getKeyListener().
      Specified by:
      getKeyListener in interface ComboPopup
      Returns:
      a KeyListener or null
      See Also:
      ComboPopup.getKeyListener()
    • uninstallingUI

      public void uninstallingUI()
      Called when the UI is uninstalling. Since this popup isn't in the component tree, it won't get it's uninstallUI() called. It removes the listeners that were added in addComboBoxListeners().
      Specified by:
      uninstallingUI in interface ComboPopup
    • uninstallComboBoxModelListeners

      protected void uninstallComboBoxModelListeners​(ComboBoxModel<?> model)
      Removes the listeners from the combo box model
      Parameters:
      model - The combo box model to install listeners
      See Also:
      installComboBoxModelListeners(javax.swing.ComboBoxModel<?>)
    • uninstallKeyboardActions

      protected void uninstallKeyboardActions()
      Unregisters keyboard actions.
    • createMouseListener

      protected MouseListener createMouseListener()
      Creates a listener that will watch for mouse-press and release events on the combo box. Warning: When overriding this method, make sure to maintain the existing behavior.
      Returns:
      a MouseListener which will be added to the combo box or null
    • createMouseMotionListener

      protected MouseMotionListener createMouseMotionListener()
      Creates the mouse motion listener which will be added to the combo box. Warning: When overriding this method, make sure to maintain the existing behavior.
      Returns:
      a MouseMotionListener which will be added to the combo box or null
    • createKeyListener

      protected KeyListener createKeyListener()
      Creates the key listener that will be added to the combo box. If this method returns null then it will not be added to the combo box.
      Returns:
      a KeyListener or null
    • createListSelectionListener

      protected ListSelectionListener createListSelectionListener()
      Creates a list selection listener that watches for selection changes in the popup's list. If this method returns null then it will not be added to the popup list.
      Returns:
      an instance of a ListSelectionListener or null
    • createListDataListener

      protected ListDataListener createListDataListener()
      Creates a list data listener which will be added to the ComboBoxModel. If this method returns null then it will not be added to the combo box model.
      Returns:
      an instance of a ListDataListener or null
    • createListMouseListener

      protected MouseListener createListMouseListener()
      Creates a mouse listener that watches for mouse events in the popup's list. If this method returns null then it will not be added to the combo box.
      Returns:
      an instance of a MouseListener or null
    • createListMouseMotionListener

      protected MouseMotionListener createListMouseMotionListener()
      Creates a mouse motion listener that watches for mouse motion events in the popup's list. If this method returns null then it will not be added to the combo box.
      Returns:
      an instance of a MouseMotionListener or null
    • createPropertyChangeListener

      protected PropertyChangeListener createPropertyChangeListener()
      Creates a PropertyChangeListener which will be added to the combo box. If this method returns null then it will not be added to the combo box.
      Returns:
      an instance of a PropertyChangeListener or null
    • createItemListener

      protected ItemListener createItemListener()
      Creates an ItemListener which will be added to the combo box. If this method returns null then it will not be added to the combo box.

      Subclasses may override this method to return instances of their own ItemEvent handlers.

      Returns:
      an instance of an ItemListener or null
    • createList

      protected JList<Object> createList()
      Creates the JList used in the popup to display the items in the combo box model. This method is called when the UI class is created.
      Returns:
      a JList used to display the combo box items
    • configureList

      protected void configureList()
      Configures the list which is used to hold the combo box items in the popup. This method is called when the UI class is created.
      See Also:
      createList()
    • installListListeners

      protected void installListListeners()
      Adds the listeners to the list control.
    • createScroller

      protected JScrollPane createScroller()
      Creates the scroll pane which houses the scrollable list.
      Returns:
      the scroll pane which houses the scrollable list
    • configureScroller

      protected void configureScroller()
      Configures the scrollable portion which holds the list within the combo box popup. This method is called when the UI class is created.
    • configurePopup

      protected void configurePopup()
      Configures the popup portion of the combo box. This method is called when the UI class is created.
    • installComboBoxListeners

      protected void installComboBoxListeners()
      This method adds the necessary listeners to the JComboBox.
    • installComboBoxModelListeners

      protected void installComboBoxModelListeners​(ComboBoxModel<?> model)
      Installs the listeners on the combo box model. Any listeners installed on the combo box model should be removed in uninstallComboBoxModelListeners.
      Parameters:
      model - The combo box model to install listeners
      See Also:
      uninstallComboBoxModelListeners(javax.swing.ComboBoxModel<?>)
    • installKeyboardActions

      protected void installKeyboardActions()
      Registers keyboard actions.
    • isFocusTraversable

      public boolean isFocusTraversable()
      Overridden to unconditionally return false.
      Overrides:
      isFocusTraversable in class Component
      Returns:
      true if this Component is focusable; false otherwise
      See Also:
      Component.setFocusable(boolean)
    • startAutoScrolling

      protected void startAutoScrolling​(int direction)
      This protected method is implementation specific and should be private. do not call or override.
      Parameters:
      direction - the direction of scrolling
    • stopAutoScrolling

      protected void stopAutoScrolling()
      This protected method is implementation specific and should be private. do not call or override.
    • autoScrollUp

      protected void autoScrollUp()
      This protected method is implementation specific and should be private. do not call or override.
    • autoScrollDown

      protected void autoScrollDown()
      This protected method is implementation specific and should be private. do not call or override.
    • getAccessibleContext

      public AccessibleContext getAccessibleContext()
      Gets the AccessibleContext associated with this BasicComboPopup. The AccessibleContext will have its parent set to the ComboBox.
      Specified by:
      getAccessibleContext in interface Accessible
      Overrides:
      getAccessibleContext in class JPopupMenu
      Returns:
      an AccessibleContext for the BasicComboPopup
      Since:
      1.5
    • delegateFocus

      protected void delegateFocus​(MouseEvent e)
      This is a utility method that helps event handlers figure out where to send the focus when the popup is brought up. The standard implementation delegates the focus to the editor (if the combo box is editable) or to the JComboBox if it is not editable.
      Parameters:
      e - a mouse event
    • togglePopup

      protected void togglePopup()
      Makes the popup visible if it is hidden and makes it hidden if it is visible.
    • convertMouseEvent

      protected MouseEvent convertMouseEvent​(MouseEvent e)
      Converts mouse event.
      Parameters:
      e - a mouse event
      Returns:
      converted mouse event
    • getPopupHeightForRowCount

      protected int getPopupHeightForRowCount​(int maxRowCount)
      Retrieves the height of the popup based on the current ListCellRenderer and the maximum row count.
      Parameters:
      maxRowCount - the row count
      Returns:
      the height of the popup
    • computePopupBounds

      protected Rectangle computePopupBounds​(int px, int py, int pw, int ph)
      Calculate the placement and size of the popup portion of the combo box based on the combo box location and the enclosing screen bounds. If no transformations are required, then the returned rectangle will have the same values as the parameters.
      Parameters:
      px - starting x location
      py - starting y location
      pw - starting width
      ph - starting height
      Returns:
      a rectangle which represents the placement and size of the popup
    • updateListBoxSelectionForEvent

      protected void updateListBoxSelectionForEvent​(MouseEvent anEvent, boolean shouldScroll)
      A utility method used by the event listeners. Given a mouse event, it changes the list selection to the list item below the mouse.
      Parameters:
      anEvent - a mouse event
      shouldScroll - if true list should be scrolled.