Package org.fife.ui.autocomplete
Class CompletionCellRenderer
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JLabel
-
- javax.swing.DefaultListCellRenderer
-
- org.fife.ui.autocomplete.CompletionCellRenderer
-
- All Implemented Interfaces:
java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable,javax.accessibility.Accessible,javax.swing.ListCellRenderer<java.lang.Object>,javax.swing.SwingConstants
public class CompletionCellRenderer extends javax.swing.DefaultListCellRendererA cell renderer that adds some pizazz when rendering the standardCompletiontypes, like Eclipse and NetBeans do. Specifically, this renderer handles:- Version:
- 1.0
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.DefaultListCellRenderer
javax.swing.DefaultListCellRenderer.UIResource
-
Nested classes/interfaces inherited from class javax.swing.JLabel
javax.swing.JLabel.AccessibleJLabel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private static java.awt.ColoraltBGThe alternating background color, ornullif alternating row colors should not be used.private javax.swing.DefaultListCellRendererdelegateAn optional delegate renderer (primarily for Substance).private javax.swing.IconemptyIconAn icon to use when no appropriate icon is found.private java.awt.FontfontThe font to use when rendering items, ornullif the list's default font should be used.private java.awt.RectanglepaintTextRUsed in rendering calculations.private java.lang.StringparamColorThe color to use for function arguments.private static java.lang.StringPREFIXKeeps the HTML descriptions from "wrapping" in the list, which cuts off words.private java.awt.ColorrealBGDuring rendering, this is the "real" background color of the item being rendered (i.e., what its background color is if it isn't selected).private booleanselectedDuring rendering, whether the item being rendered is selected.private booleanshowTypesWhether to display the types of fields and return types of functions in the completion text.private static java.lang.StringSUBSTANCE_RENDERER_CLASS_NAMEprivate java.lang.StringtypeColorThe color to use when rendering types in completion text.-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
-
Constructor Summary
Constructors Constructor Description CompletionCellRenderer()Constructor.CompletionCellRenderer(javax.swing.DefaultListCellRenderer delegate)Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidappendShortDescription(java.lang.StringBuilder sb, java.lang.String definition)Utility function to append a short description to a string buffer.protected voidappendTypeIfNecessary(java.lang.StringBuilder sb, VariableCompletion varOrFunctionCompletion)Utility function that appends a variable or function completion's type to a string buffer ifgetShowTypes()istrue.protected javax.swing.IconcreateEmptyIcon()Creates the icon to use if no icon is found for a specific completion.private java.lang.StringcreateParamColor()Returns a decent "parameter" color based on the current default foreground color.private java.lang.StringcreateTypeColor()Returns a decent "type" color based on the current default foreground color.voiddelegateToSubstanceRenderer()Attempts to delegate rendering to a Substance cell renderer.static java.awt.ColorgetAlternateBackground()Returns the background color to use on alternating lines.javax.swing.DefaultListCellRenderergetDelegateRenderer()Returns the delegate renderer, ornullif there is none.java.awt.FontgetDisplayFont()Returns the font used when rendering completions.protected javax.swing.IcongetEmptyIcon()Returns the icon to use if no icon is found for a specific completion.protected javax.swing.IcongetIcon(java.lang.String resource)Returns an icon.java.awt.ComponentgetListCellRendererComponent(javax.swing.JList list, java.lang.Object value, int index, boolean selected, boolean hasFocus)Returns the renderer.booleangetShowTypes()Returns whether the types of fields and return types of methods are shown in the completion text.private voidinit()protected voidpaintComponent(java.awt.Graphics g)protected voidprepareForFunctionCompletion(javax.swing.JList<?> list, FunctionCompletion fc, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a function completion.protected voidprepareForMarkupTagCompletion(javax.swing.JList<?> list, MarkupTagCompletion mc, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a markup tag completion.protected voidprepareForOtherCompletion(javax.swing.JList<?> list, Completion c, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a completion not specifically handled elsewhere.protected voidprepareForTemplateCompletion(javax.swing.JList<?> list, TemplateCompletion tc, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a template completion.protected voidprepareForVariableCompletion(javax.swing.JList<?> list, VariableCompletion vc, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a variable completion.static voidsetAlternateBackground(java.awt.Color altBG)Sets the background color to use on alternating lines.voidsetDelegateRenderer(javax.swing.DefaultListCellRenderer delegate)Sets the delegate renderer.voidsetDisplayFont(java.awt.Font font)Sets the font to use when rendering completion items.protected voidsetIconWithDefault(Completion completion)Sets the icon to display based off of a completion, falling back to the empty icon if the completion has no icon.protected voidsetIconWithDefault(Completion completion, javax.swing.Icon defaultIcon)Sets the icon to display based off of a completion, falling back to a default icon if the completion has no icon.voidsetParamColor(java.awt.Color color)Sets the color to use for function arguments.voidsetShowTypes(boolean show)Sets whether the types of fields and return types of methods are shown in the completion text.voidsetTypeColor(java.awt.Color color)Sets the color to use for function/field types.voidupdateUI()Overridden to update our delegate, if necessary.-
Methods inherited from class javax.swing.DefaultListCellRenderer
firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, invalidate, isOpaque, repaint, repaint, repaint, revalidate, validate
-
Methods inherited from class javax.swing.JLabel
checkHorizontalKey, checkVerticalKey, getAccessibleContext, getDisabledIcon, getDisplayedMnemonic, getDisplayedMnemonicIndex, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getLabelFor, getText, getUI, getUIClassID, getVerticalAlignment, getVerticalTextPosition, imageUpdate, paramString, setDisabledIcon, setDisplayedMnemonic, setDisplayedMnemonic, setDisplayedMnemonicIndex, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabelFor, setText, setUI, setVerticalAlignment, setVerticalTextPosition
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
altBG
private static java.awt.Color altBG
The alternating background color, ornullif alternating row colors should not be used.
-
font
private java.awt.Font font
The font to use when rendering items, ornullif the list's default font should be used.
-
showTypes
private boolean showTypes
Whether to display the types of fields and return types of functions in the completion text.
-
typeColor
private java.lang.String typeColor
The color to use when rendering types in completion text.
-
selected
private boolean selected
During rendering, whether the item being rendered is selected.
-
realBG
private java.awt.Color realBG
During rendering, this is the "real" background color of the item being rendered (i.e., what its background color is if it isn't selected).
-
paramColor
private java.lang.String paramColor
The color to use for function arguments.
-
emptyIcon
private javax.swing.Icon emptyIcon
An icon to use when no appropriate icon is found.
-
paintTextR
private java.awt.Rectangle paintTextR
Used in rendering calculations.
-
delegate
private javax.swing.DefaultListCellRenderer delegate
An optional delegate renderer (primarily for Substance).
-
SUBSTANCE_RENDERER_CLASS_NAME
private static final java.lang.String SUBSTANCE_RENDERER_CLASS_NAME
- See Also:
- Constant Field Values
-
PREFIX
private static final java.lang.String PREFIX
Keeps the HTML descriptions from "wrapping" in the list, which cuts off words.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
CompletionCellRenderer
public CompletionCellRenderer()
Constructor.
-
CompletionCellRenderer
public CompletionCellRenderer(javax.swing.DefaultListCellRenderer delegate)
Constructor. This is primarily a hook for Substance, or any other Look and Feel whose renderers look drastically different from standardDefaultListCellRenderers. Everything except for the text rendering will be done by the delegate. In almost all scenarios, you will want to use the no-argument constructor instead of this one.- Parameters:
delegate- The delegate renderer.- See Also:
delegateToSubstanceRenderer()
-
-
Method Detail
-
appendShortDescription
protected void appendShortDescription(java.lang.StringBuilder sb, java.lang.String definition)Utility function to append a short description to a string buffer. Useful to ensure consistency when rendering completions that display a trailing description of the completion.- Parameters:
sb- The string buffer to append to.definition- The text to append.- See Also:
prepareForOtherCompletion(JList, Completion, int, boolean, boolean),prepareForTemplateCompletion(JList, TemplateCompletion, int, boolean, boolean)
-
appendTypeIfNecessary
protected void appendTypeIfNecessary(java.lang.StringBuilder sb, VariableCompletion varOrFunctionCompletion)Utility function that appends a variable or function completion's type to a string buffer ifgetShowTypes()istrue.- Parameters:
sb- The string buffer to possibly append to.varOrFunctionCompletion- The completion to examine.- See Also:
prepareForFunctionCompletion(JList, FunctionCompletion, int, boolean, boolean),prepareForVariableCompletion(JList, VariableCompletion, int, boolean, boolean)
-
createEmptyIcon
protected javax.swing.Icon createEmptyIcon()
Creates the icon to use if no icon is found for a specific completion. The default implementation returns a 16x16 empty icon.- Returns:
- The icon.
- See Also:
getEmptyIcon()
-
createParamColor
private java.lang.String createParamColor()
Returns a decent "parameter" color based on the current default foreground color.- Returns:
- The parameter color to use.
-
createTypeColor
private java.lang.String createTypeColor()
Returns a decent "type" color based on the current default foreground color.- Returns:
- The type color to use.
-
delegateToSubstanceRenderer
public void delegateToSubstanceRenderer() throws java.lang.ExceptionAttempts to delegate rendering to a Substance cell renderer. This should only be called if Substance is known to be on the classpath.- Throws:
java.lang.Exception- If Substance is not on the classpath, or some other error occurs creating the Substance cell renderer.- See Also:
Util.getUseSubstanceRenderers(),setDelegateRenderer(DefaultListCellRenderer)
-
getAlternateBackground
public static java.awt.Color getAlternateBackground()
Returns the background color to use on alternating lines.- Returns:
- The alternate background color. If this is
null, alternating colors are not used. - See Also:
setAlternateBackground(Color)
-
getDelegateRenderer
public javax.swing.DefaultListCellRenderer getDelegateRenderer()
Returns the delegate renderer, ornullif there is none.- Returns:
- The delegate renderer.
- See Also:
setDelegateRenderer(DefaultListCellRenderer)
-
getDisplayFont
public java.awt.Font getDisplayFont()
Returns the font used when rendering completions.- Returns:
- The font. If this is
null, then the default list font is used. - See Also:
setDisplayFont(Font)
-
getEmptyIcon
protected javax.swing.Icon getEmptyIcon()
Returns the icon to use if no icon is found for a specific completion. This icon is lazily created if necessary.- Returns:
- The icon.
- See Also:
createEmptyIcon()
-
getIcon
protected javax.swing.Icon getIcon(java.lang.String resource)
Returns an icon.- Parameters:
resource- The icon to retrieve. This should either be a file, or a resource loadable by the current ClassLoader.- Returns:
- The icon.
-
getListCellRendererComponent
public java.awt.Component getListCellRendererComponent(javax.swing.JList list, java.lang.Object value, int index, boolean selected, boolean hasFocus)Returns the renderer.- Specified by:
getListCellRendererComponentin interfacejavax.swing.ListCellRenderer<java.lang.Object>- Overrides:
getListCellRendererComponentin classjavax.swing.DefaultListCellRenderer- Parameters:
list- The list of choices being rendered.value- TheCompletionbeing rendered.index- The index intolistbeing rendered.selected- Whether the item is selected.hasFocus- Whether the item has focus.
-
getShowTypes
public boolean getShowTypes()
Returns whether the types of fields and return types of methods are shown in the completion text.- Returns:
- Whether to show the types.
- See Also:
setShowTypes(boolean)
-
init
private void init()
-
paintComponent
protected void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponentin classjavax.swing.JComponent
-
prepareForFunctionCompletion
protected void prepareForFunctionCompletion(javax.swing.JList<?> list, FunctionCompletion fc, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a function completion.- Parameters:
list- The list of choices being rendered.fc- The completion to render.index- The index intolistbeing rendered.selected- Whether the item is selected.hasFocus- Whether the item has focus.
-
prepareForMarkupTagCompletion
protected void prepareForMarkupTagCompletion(javax.swing.JList<?> list, MarkupTagCompletion mc, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a markup tag completion.- Parameters:
list- The list of choices being rendered.mc- The completion to render.index- The index intolistbeing rendered.selected- Whether the item is selected.hasFocus- Whether the item has focus.
-
prepareForOtherCompletion
protected void prepareForOtherCompletion(javax.swing.JList<?> list, Completion c, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a completion not specifically handled elsewhere.- Parameters:
list- The list of choices being rendered.c- The completion to render.index- The index intolistbeing rendered.selected- Whether the item is selected.hasFocus- Whether the item has focus.
-
prepareForTemplateCompletion
protected void prepareForTemplateCompletion(javax.swing.JList<?> list, TemplateCompletion tc, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a template completion.- Parameters:
list- The list of choices being rendered.tc- The completion to render.index- The index intolistbeing rendered.selected- Whether the item is selected.hasFocus- Whether the item has focus.
-
prepareForVariableCompletion
protected void prepareForVariableCompletion(javax.swing.JList<?> list, VariableCompletion vc, int index, boolean selected, boolean hasFocus)Prepares this renderer to display a variable completion.- Parameters:
list- The list of choices being rendered.vc- The completion to render.index- The index intolistbeing rendered.selected- Whether the item is selected.hasFocus- Whether the item has focus.
-
setAlternateBackground
public static void setAlternateBackground(java.awt.Color altBG)
Sets the background color to use on alternating lines.- Parameters:
altBG- The new alternate background color. If this isnull, alternating lines will not use different background colors.- See Also:
getAlternateBackground()
-
setDelegateRenderer
public void setDelegateRenderer(javax.swing.DefaultListCellRenderer delegate)
Sets the delegate renderer. Most users will never use this method; it is primarily a hook for Substance and other Look and Feels whose renderers look drastically different from the standardDefaultListCellRenderer.- Parameters:
delegate- The new delegate renderer. If this isnull, the default rendering of this component is used.- See Also:
getDelegateRenderer(),delegateToSubstanceRenderer()
-
setDisplayFont
public void setDisplayFont(java.awt.Font font)
Sets the font to use when rendering completion items.- Parameters:
font- The font to use. If this isnull, then the default list font is used.- See Also:
getDisplayFont()
-
setIconWithDefault
protected void setIconWithDefault(Completion completion)
Sets the icon to display based off of a completion, falling back to the empty icon if the completion has no icon.- Parameters:
completion- The completion to check.- See Also:
setIconWithDefault(Completion, Icon)
-
setIconWithDefault
protected void setIconWithDefault(Completion completion, javax.swing.Icon defaultIcon)
Sets the icon to display based off of a completion, falling back to a default icon if the completion has no icon.- Parameters:
completion- The completion to check.defaultIcon- The icon to use ifcompletiondoes not specify an icon.- See Also:
setIconWithDefault(Completion)
-
setParamColor
public void setParamColor(java.awt.Color color)
Sets the color to use for function arguments.- Parameters:
color- The color to use. This is ignored ifnull.- See Also:
setTypeColor(Color)
-
setShowTypes
public void setShowTypes(boolean show)
Sets whether the types of fields and return types of methods are shown in the completion text.- Parameters:
show- Whether to show the types.- See Also:
getShowTypes()
-
setTypeColor
public void setTypeColor(java.awt.Color color)
Sets the color to use for function/field types. Note that ifgetShowTypes()returnsfalse, this property effectively does nothing.- Parameters:
color- The color to use for types. This is ignored ifnull.- See Also:
setShowTypes(boolean),setParamColor(Color)
-
updateUI
public void updateUI()
Overridden to update our delegate, if necessary.- Overrides:
updateUIin classjavax.swing.JLabel
-
-