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) classCopies text.(package private) classSelects the next item.(package private) classSelects the previous item.(package private) classInserts the selected completion.(package private) classHides this popup window.(package private) classSelects the first item.private static classA mapping from a key (an Object) to an Action.(package private) classMoves the caret to the left and updates the completion list accordingly.(package private) classMoves down one page in the completion list.(package private) classMoves up one page in the completion list.private classThe actual list of completion choices in this popup window.(package private) classMoves the caret to the right and updates the completion list accordingly.(package private) classMoves up in the completion list.Nested classes/interfaces inherited from class javax.swing.JWindow
JWindow.AccessibleJWindowNested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow, Window.TypeNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanWhether 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 AutoCompletionThe parent AutoCompletion instance.private AutoCompleteDescWindowOptional popup window containing a description of the currently selected completion.private ColorThe background color of the description window.private booleanprivate intprivate CompletionA 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 CompletionListModelThe contents ofComponent.list().private DimensionThe preferred size of the optional description window.private static final StringThe class name of the Substance List UI.private static final intThe space between the caret and the completion popup.Fields inherited from class javax.swing.JWindow
accessibleContext, rootPane, rootPaneCheckingEnabledFields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidprivate AutoCompleteDescWindowCreates the description window.private voidCreates the mappings from keys to Actions we'll be putting into the text component's ActionMap and InputMap.protected voidprivate static KeyStrokeReturns 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, ornullif nothing is selected.private voidInserts the currently selected completion.private voidRegisters keyboard actions to listen for in the text component and intercept.voidvoidvoidvoidvoidprivate voidPositions the description window relative to the completion choices window.private voidputBackAction(InputMap im, ActionMap am, int key, AutoCompletePopupWindow.KeyActionPair kap) "Puts back" the original key/Action pair for a keystroke.private voidreplaceAction(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 voidSelects the first item in the completion list.private voidSelects the last item in the completion list.private voidSelects the next item in the completion list.private voidSelects the completion item one "page down" from the currently selected one.private voidSelects the completion item one "page up" from the currently selected one.private voidSelects the previous item in the completion list.voidsetCompletions(List<Completion> completions) Sets the completions to display in the choices list.voidsetDescriptionWindowColor(Color color) Sets the color of the description window.voidSets the size of the description window.voidsetListCellRenderer(ListCellRenderer<Object> renderer) Sets the default list cell renderer to use when a completion provider does not supply its own.voidSets the location of this window to be "good" relative to the specified rectangle.voidsetVisible(boolean visible) Toggles the visibility of this popup window.private voidStops intercepting certain keystrokes from the text component.voidupdateUI()Updates theLookAndFeelof this window and the description window.voidCalled 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, windowInitMethods 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, toFrontMethods 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, validateTreeMethods 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:
caretUpdatein 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
nullif 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, ornullif 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:
mouseClickedin interfaceMouseListener
-
mouseEntered
- Specified by:
mouseEnteredin interfaceMouseListener
-
mouseExited
- Specified by:
mouseExitedin interfaceMouseListener
-
mousePressed
- Specified by:
mousePressedin interfaceMouseListener
-
mouseReleased
- Specified by:
mouseReleasedin 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:
setVisiblein 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 theLookAndFeelof this window and the description window. -
valueChanged
Called when a new item is selected in the popup list.- Specified by:
valueChangedin interfaceListSelectionListener- Parameters:
e- The event.
-