Package org.fife.ui.autocomplete
Class AutoCompletePopupWindow
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
javax.swing.JWindow
org.fife.ui.autocomplete.AutoCompletePopupWindow
- All Implemented Interfaces:
MouseListener
,ImageObserver
,MenuContainer
,Serializable
,EventListener
,Accessible
,CaretListener
,ListSelectionListener
,RootPaneContainer
class AutoCompletePopupWindow
extends JWindow
implements CaretListener, ListSelectionListener, 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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) class
Copies text.(package private) class
Selects the next item.(package private) class
Selects the previous item.(package private) class
Inserts the selected completion.(package private) class
Hides this popup window.(package private) class
Selects the first item.private static class
A mapping from a key (an Object) to an Action.(package private) class
Moves the caret to the left and updates the completion list accordingly.(package private) class
Moves down one page in the completion list.(package private) class
Moves up one page in the completion list.private class
The actual list of completion choices in this popup window.(package private) class
Moves the caret to the right and updates the completion list accordingly.(package private) class
Moves up in the completion list.Nested classes/interfaces inherited from class javax.swing.JWindow
JWindow.AccessibleJWindow
Nested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow, Window.Type
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
Whether the completion window and the optional description window should be displayed above the current caret position (as opposed to underneath it, which is preferred unless there is not enough space).private AutoCompletion
The parent AutoCompletion instance.private AutoCompleteDescWindow
Optional popup window containing a description of the currently selected completion.private Color
The background color of the description window.private boolean
private int
private Completion
A hack to work around the fact that we clear our completion model (and our selection) when hiding the completion window.The list of completion choices.private CompletionListModel
The contents ofComponent.list()
.private Dimension
The preferred size of the optional description window.private static final String
The class name of the Substance List UI.private static final int
The space between the caret and the completion popup.Fields inherited from class javax.swing.JWindow
accessibleContext, rootPane, rootPaneCheckingEnabled
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
private AutoCompleteDescWindow
Creates the description window.private void
Creates the mappings from keys to Actions we'll be putting into the text component's ActionMap and InputMap.protected void
private static KeyStroke
Returns the copy keystroke to use for this platform.Returns the background color of the description window.Returns the default list cell renderer used when a completion provider does not supply its own.Returns the selected value, ornull
if nothing is selected.private void
Inserts the currently selected completion.private void
Registers keyboard actions to listen for in the text component and intercept.void
void
void
void
void
private void
Positions the description window relative to the completion choices window.private void
putBackAction
(InputMap im, ActionMap am, int key, AutoCompletePopupWindow.KeyActionPair kap) "Puts back" the original key/Action pair for a keystroke.private void
replaceAction
(InputMap im, 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
Selects the first item in the completion list.private void
Selects the last item in the completion list.private void
Selects the next item in the completion list.private void
Selects the completion item one "page down" from the currently selected one.private void
Selects the completion item one "page up" from the currently selected one.private void
Selects the previous item in the completion list.void
setCompletions
(List<Completion> completions) Sets the completions to display in the choices list.void
setDescriptionWindowColor
(Color color) Sets the color of the description window.void
Sets the size of the description window.void
setListCellRenderer
(ListCellRenderer<Object> renderer) Sets the default list cell renderer to use when a completion provider does not supply its own.void
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
Stops intercepting certain keystrokes from the text component.void
updateUI()
Updates theLookAndFeel
of this window and the description window.void
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
-
Field Details
-
ac
The parent AutoCompletion instance. -
list
The list of completion choices. -
model
The contents ofComponent.list()
. -
lastSelection
A hack to work around the fact that we clear our completion model (and our selection) when hiding the completion window. This allows us to still know what the user selected after the popup is hidden. -
descWindow
Optional popup window containing a description of the currently selected completion. -
preferredDescWindowSize
The preferred size of the optional description window. This field only exists because the user may (and usually will) set the size of the description window before it exists (it must be parented to a Window). -
aboveCaret
private boolean aboveCaretWhether the completion window and the optional description window should be displayed above the current caret position (as opposed to underneath it, which is preferred unless there is not enough space). -
descWindowColor
The background color of the description window. -
lastLine
private int lastLine -
keyBindingsInstalled
private boolean keyBindingsInstalled -
escapeKap
-
upKap
-
downKap
-
leftKap
-
rightKap
-
enterKap
-
tabKap
-
homeKap
-
endKap
-
pageUpKap
-
pageDownKap
-
ctrlCKap
-
oldEscape
-
oldUp
-
oldDown
-
oldLeft
-
oldRight
-
oldEnter
-
oldTab
-
oldHome
-
oldEnd
-
oldPageUp
-
oldPageDown
-
oldCtrlC
-
VERTICAL_SPACE
private static final int VERTICAL_SPACEThe space between the caret and the completion popup.- See Also:
-
SUBSTANCE_LIST_UI
The class name of the Substance List UI.- See Also:
-
-
Constructor Details
-
AutoCompletePopupWindow
AutoCompletePopupWindow(Window parent, AutoCompletion ac) Constructor.- Parameters:
parent
- The parent window (hosting the text component).ac
- The auto-completion instance.
-
-
Method Details
-
caretUpdate
- Specified by:
caretUpdate
in interfaceCaretListener
-
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
Returns the copy keystroke to use for this platform.- Returns:
- The copy keystroke.
-
getDescriptionWindowColor
Returns the background color of the description window.- Returns:
- The background color, or
null
if it has not been created yet. - See Also:
-
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:
-
getSelection
Returns the selected value, ornull
if nothing is selected.- Returns:
- The selected value.
-
insertSelectedCompletion
private void insertSelectedCompletion()Inserts the currently selected completion.- See Also:
-
installKeyBindings
private void installKeyBindings()Registers keyboard actions to listen for in the text component and intercept.- See Also:
-
mouseClicked
- Specified by:
mouseClicked
in interfaceMouseListener
-
mouseEntered
- Specified by:
mouseEntered
in interfaceMouseListener
-
mouseExited
- Specified by:
mouseExited
in interfaceMouseListener
-
mousePressed
- Specified by:
mousePressed
in interfaceMouseListener
-
mouseReleased
- Specified by:
mouseReleased
in interfaceMouseListener
-
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. -
putBackAction
private void putBackAction(InputMap im, ActionMap am, int key, AutoCompletePopupWindow.KeyActionPair kap) "Puts back" the original key/Action pair for a keystroke. This is used when this popup is hidden.- Parameters:
im
- The input map.am
- The action map.key
- The keystroke whose key/Action pair to change.kap
- The (original) key/Action pair.- See Also:
-
replaceAction
private void replaceAction(InputMap im, ActionMap am, int key, AutoCompletePopupWindow.KeyActionPair kap, AutoCompletePopupWindow.KeyActionPair old) Replaces a key/Action pair in an InputMap and ActionMap with a new pair.- Parameters:
im
- The input map.am
- The action map.key
- The keystroke whose information to replace.kap
- The new key/Action pair forkey
.old
- A buffer in which to place the old key/Action pair.- See Also:
-
selectFirstItem
private void selectFirstItem()Selects the first item in the completion list.- See Also:
-
selectLastItem
private void selectLastItem()Selects the last item in the completion list.- See Also:
-
selectNextItem
private void selectNextItem()Selects the next item in the completion list.- See Also:
-
selectPageDownItem
private void selectPageDownItem()Selects the completion item one "page down" from the currently selected one.- See Also:
-
selectPageUpItem
private void selectPageUpItem()Selects the completion item one "page up" from the currently selected one.- See Also:
-
selectPreviousItem
private void selectPreviousItem()Selects the previous item in the completion list.- See Also:
-
setCompletions
Sets the completions to display in the choices list. The first completion is selected.- Parameters:
completions
- The completions to display.
-
setDescriptionWindowSize
Sets the size of the description window.- Parameters:
size
- The new size. This cannot benull
.
-
setDescriptionWindowColor
Sets the color of the description window.- Parameters:
color
- The new color. This cannot benull
.- See Also:
-
setListCellRenderer
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 isnull
, a default renderer is used.- See Also:
-
setLocationRelativeTo
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 classWindow
- Parameters:
visible
- Whether this window should be visible.
-
uninstallKeyBindings
private void uninstallKeyBindings()Stops intercepting certain keystrokes from the text component.- See Also:
-
updateUI
public void updateUI()Updates theLookAndFeel
of this window and the description window. -
valueChanged
Called when a new item is selected in the popup list.- Specified by:
valueChanged
in interfaceListSelectionListener
- Parameters:
e
- The event.
-