Class AutoCompletePopupWindow

  • All Implemented Interfaces:
    java.awt.event.MouseListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.CaretListener, javax.swing.event.ListSelectionListener, javax.swing.RootPaneContainer

    class AutoCompletePopupWindow
    extends javax.swing.JWindow
    implements javax.swing.event.CaretListener, javax.swing.event.ListSelectionListener, java.awt.event.MouseListener
    The actual popup window of choices. When visible, this window intercepts certain keystrokes in the parent text component and uses them to navigate the completion choices instead. If Enter or Escape is pressed, the window hides itself and notifies the AutoCompletion to insert the selected text.
    Version:
    1.0
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void caretUpdate​(javax.swing.event.CaretEvent e)  
      private AutoCompleteDescWindow createDescriptionWindow()
      Creates the description window.
      private void createKeyActionPairs()
      Creates the mappings from keys to Actions we'll be putting into the text component's ActionMap and InputMap.
      protected void doAutocomplete()  
      private static javax.swing.KeyStroke getCopyKeyStroke()
      Returns the copy keystroke to use for this platform.
      java.awt.Color getDescriptionWindowColor()
      Returns the background color of the description window.
      javax.swing.ListCellRenderer getListCellRenderer()
      Returns the default list cell renderer used when a completion provider does not supply its own.
      Completion getSelection()
      Returns the selected value, or null if nothing is selected.
      private void insertSelectedCompletion()
      Inserts the currently selected completion.
      private void installKeyBindings()
      Registers keyboard actions to listen for in the text component and intercept.
      void mouseClicked​(java.awt.event.MouseEvent e)  
      void mouseEntered​(java.awt.event.MouseEvent e)  
      void mouseExited​(java.awt.event.MouseEvent e)  
      void mousePressed​(java.awt.event.MouseEvent e)  
      void mouseReleased​(java.awt.event.MouseEvent e)  
      private void positionDescWindow()
      Positions the description window relative to the completion choices window.
      private void putBackAction​(javax.swing.InputMap im, javax.swing.ActionMap am, int key, AutoCompletePopupWindow.KeyActionPair kap)
      "Puts back" the original key/Action pair for a keystroke.
      private void replaceAction​(javax.swing.InputMap im, javax.swing.ActionMap am, int key, AutoCompletePopupWindow.KeyActionPair kap, AutoCompletePopupWindow.KeyActionPair old)
      Replaces a key/Action pair in an InputMap and ActionMap with a new pair.
      private void selectFirstItem()
      Selects the first item in the completion list.
      private void selectLastItem()
      Selects the last item in the completion list.
      private void selectNextItem()
      Selects the next item in the completion list.
      private void selectPageDownItem()
      Selects the completion item one "page down" from the currently selected one.
      private void selectPageUpItem()
      Selects the completion item one "page up" from the currently selected one.
      private void selectPreviousItem()
      Selects the previous item in the completion list.
      void setCompletions​(java.util.List<Completion> completions)
      Sets the completions to display in the choices list.
      void setDescriptionWindowColor​(java.awt.Color color)
      Sets the color of the description window.
      void setDescriptionWindowSize​(java.awt.Dimension size)
      Sets the size of the description window.
      void setListCellRenderer​(javax.swing.ListCellRenderer<java.lang.Object> renderer)
      Sets the default list cell renderer to use when a completion provider does not supply its own.
      void setLocationRelativeTo​(java.awt.Rectangle r)
      Sets the location of this window to be "good" relative to the specified rectangle.
      void setVisible​(boolean visible)
      Toggles the visibility of this popup window.
      private void uninstallKeyBindings()
      Stops intercepting certain keystrokes from the text component.
      void updateUI()
      Updates the LookAndFeel of this window and the description window.
      void valueChanged​(javax.swing.event.ListSelectionEvent e)
      Called when a new item is selected in the popup list.
      • Methods inherited from class javax.swing.JWindow

        addImpl, createRootPane, getAccessibleContext, getContentPane, getGlassPane, getGraphics, getLayeredPane, getRootPane, getTransferHandler, isRootPaneCheckingEnabled, paramString, remove, repaint, setContentPane, setGlassPane, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update, windowInit
      • Methods inherited from class java.awt.Window

        addNotify, addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBackground, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setOpacity, setShape, setSize, setSize, setType, show, toBack, toFront
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class java.awt.Component

        action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • AutoCompletePopupWindow

        AutoCompletePopupWindow​(java.awt.Window parent,
                                AutoCompletion ac)
        Constructor.
        Parameters:
        parent - The parent window (hosting the text component).
        ac - The auto-completion instance.
    • Method Detail

      • caretUpdate

        public void caretUpdate​(javax.swing.event.CaretEvent e)
        Specified by:
        caretUpdate in interface javax.swing.event.CaretListener
      • createDescriptionWindow

        private AutoCompleteDescWindow createDescriptionWindow()
        Creates the description window.
        Returns:
        The description window.
      • createKeyActionPairs

        private void createKeyActionPairs()
        Creates the mappings from keys to Actions we'll be putting into the text component's ActionMap and InputMap.
      • doAutocomplete

        protected void doAutocomplete()
      • getCopyKeyStroke

        private static javax.swing.KeyStroke getCopyKeyStroke()
        Returns the copy keystroke to use for this platform.
        Returns:
        The copy keystroke.
      • getDescriptionWindowColor

        public java.awt.Color getDescriptionWindowColor()
        Returns the background color of the description window.
        Returns:
        The background color, or null if it has not been created yet.
        See Also:
        setDescriptionWindowColor(Color)
      • getListCellRenderer

        public javax.swing.ListCellRenderer getListCellRenderer()
        Returns the default list cell renderer used when a completion provider does not supply its own.
        Returns:
        The default list cell renderer.
        See Also:
        setListCellRenderer(ListCellRenderer)
      • getSelection

        public Completion getSelection()
        Returns the selected value, or null if nothing is selected.
        Returns:
        The selected value.
      • insertSelectedCompletion

        private void insertSelectedCompletion()
        Inserts the currently selected completion.
        See Also:
        getSelection()
      • installKeyBindings

        private void installKeyBindings()
        Registers keyboard actions to listen for in the text component and intercept.
        See Also:
        uninstallKeyBindings()
      • mouseClicked

        public void mouseClicked​(java.awt.event.MouseEvent e)
        Specified by:
        mouseClicked in interface java.awt.event.MouseListener
      • mouseEntered

        public void mouseEntered​(java.awt.event.MouseEvent e)
        Specified by:
        mouseEntered in interface java.awt.event.MouseListener
      • mouseExited

        public void mouseExited​(java.awt.event.MouseEvent e)
        Specified by:
        mouseExited in interface java.awt.event.MouseListener
      • mousePressed

        public void mousePressed​(java.awt.event.MouseEvent e)
        Specified by:
        mousePressed in interface java.awt.event.MouseListener
      • mouseReleased

        public void mouseReleased​(java.awt.event.MouseEvent e)
        Specified by:
        mouseReleased in interface java.awt.event.MouseListener
      • positionDescWindow

        private void positionDescWindow()
        Positions the description window relative to the completion choices window. We assume there is room on one side of the other for this entire window to fit.
      • selectFirstItem

        private void selectFirstItem()
        Selects the first item in the completion list.
        See Also:
        selectLastItem()
      • selectLastItem

        private void selectLastItem()
        Selects the last item in the completion list.
        See Also:
        selectFirstItem()
      • selectNextItem

        private void selectNextItem()
        Selects the next item in the completion list.
        See Also:
        selectPreviousItem()
      • selectPageDownItem

        private void selectPageDownItem()
        Selects the completion item one "page down" from the currently selected one.
        See Also:
        selectPageUpItem()
      • selectPageUpItem

        private void selectPageUpItem()
        Selects the completion item one "page up" from the currently selected one.
        See Also:
        selectPageDownItem()
      • selectPreviousItem

        private void selectPreviousItem()
        Selects the previous item in the completion list.
        See Also:
        selectNextItem()
      • setCompletions

        public void setCompletions​(java.util.List<Completion> completions)
        Sets the completions to display in the choices list. The first completion is selected.
        Parameters:
        completions - The completions to display.
      • setDescriptionWindowSize

        public void setDescriptionWindowSize​(java.awt.Dimension size)
        Sets the size of the description window.
        Parameters:
        size - The new size. This cannot be null.
      • setDescriptionWindowColor

        public void setDescriptionWindowColor​(java.awt.Color color)
        Sets the color of the description window.
        Parameters:
        color - The new color. This cannot be null.
        See Also:
        getDescriptionWindowColor()
      • setListCellRenderer

        public void setListCellRenderer​(javax.swing.ListCellRenderer<java.lang.Object> renderer)
        Sets the default list cell renderer to use when a completion provider does not supply its own.
        Parameters:
        renderer - The renderer to use. If this is null, a default renderer is used.
        See Also:
        getListCellRenderer()
      • setLocationRelativeTo

        public void setLocationRelativeTo​(java.awt.Rectangle r)
        Sets the location of this window to be "good" relative to the specified rectangle. That rectangle should be the location of the text component's caret, in screen coordinates.
        Parameters:
        r - The text component's caret position, in screen coordinates.
      • setVisible

        public void setVisible​(boolean visible)
        Toggles the visibility of this popup window.
        Overrides:
        setVisible in class java.awt.Window
        Parameters:
        visible - Whether this window should be visible.
      • uninstallKeyBindings

        private void uninstallKeyBindings()
        Stops intercepting certain keystrokes from the text component.
        See Also:
        installKeyBindings()
      • updateUI

        public void updateUI()
        Updates the LookAndFeel of this window and the description window.
      • valueChanged

        public void valueChanged​(javax.swing.event.ListSelectionEvent e)
        Called when a new item is selected in the popup list.
        Specified by:
        valueChanged in interface javax.swing.event.ListSelectionListener
        Parameters:
        e - The event.