Class CompletionCellRenderer

    • 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
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.awt.Color altBG
      The alternating background color, or null if alternating row colors should not be used.
      private javax.swing.DefaultListCellRenderer delegate
      An optional delegate renderer (primarily for Substance).
      private javax.swing.Icon emptyIcon
      An icon to use when no appropriate icon is found.
      private java.awt.Font font
      The font to use when rendering items, or null if the list's default font should be used.
      private java.awt.Rectangle paintTextR
      Used in rendering calculations.
      private java.lang.String paramColor
      The color to use for function arguments.
      private static java.lang.String PREFIX
      Keeps the HTML descriptions from "wrapping" in the list, which cuts off words.
      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).
      private boolean selected
      During rendering, whether the item being rendered is selected.
      private boolean showTypes
      Whether to display the types of fields and return types of functions in the completion text.
      private static java.lang.String SUBSTANCE_RENDERER_CLASS_NAME  
      private java.lang.String typeColor
      The color to use when rendering types in completion text.
      • Fields inherited from class javax.swing.DefaultListCellRenderer

        noFocusBorder
      • Fields inherited from class javax.swing.JLabel

        labelFor
      • 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
      • Fields inherited from interface java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
      • Fields inherited from interface javax.swing.SwingConstants

        BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void appendShortDescription​(java.lang.StringBuilder sb, java.lang.String definition)
      Utility function to append a short description to a string buffer.
      protected void appendTypeIfNecessary​(java.lang.StringBuilder sb, VariableCompletion varOrFunctionCompletion)
      Utility function that appends a variable or function completion's type to a string buffer if getShowTypes() is true.
      protected javax.swing.Icon createEmptyIcon()
      Creates the icon to use if no icon is found for a specific completion.
      private java.lang.String createParamColor()
      Returns a decent "parameter" color based on the current default foreground color.
      private java.lang.String createTypeColor()
      Returns a decent "type" color based on the current default foreground color.
      void delegateToSubstanceRenderer()
      Attempts to delegate rendering to a Substance cell renderer.
      static java.awt.Color getAlternateBackground()
      Returns the background color to use on alternating lines.
      javax.swing.DefaultListCellRenderer getDelegateRenderer()
      Returns the delegate renderer, or null if there is none.
      java.awt.Font getDisplayFont()
      Returns the font used when rendering completions.
      protected javax.swing.Icon getEmptyIcon()
      Returns the icon to use if no icon is found for a specific completion.
      protected javax.swing.Icon getIcon​(java.lang.String resource)
      Returns an icon.
      java.awt.Component getListCellRendererComponent​(javax.swing.JList list, java.lang.Object value, int index, boolean selected, boolean hasFocus)
      Returns the renderer.
      boolean getShowTypes()
      Returns whether the types of fields and return types of methods are shown in the completion text.
      private void init()  
      protected void paintComponent​(java.awt.Graphics g)  
      protected void prepareForFunctionCompletion​(javax.swing.JList<?> list, FunctionCompletion fc, int index, boolean selected, boolean hasFocus)
      Prepares this renderer to display a function completion.
      protected void prepareForMarkupTagCompletion​(javax.swing.JList<?> list, MarkupTagCompletion mc, int index, boolean selected, boolean hasFocus)
      Prepares this renderer to display a markup tag completion.
      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.
      protected void prepareForTemplateCompletion​(javax.swing.JList<?> list, TemplateCompletion tc, int index, boolean selected, boolean hasFocus)
      Prepares this renderer to display a template completion.
      protected void prepareForVariableCompletion​(javax.swing.JList<?> list, VariableCompletion vc, int index, boolean selected, boolean hasFocus)
      Prepares this renderer to display a variable completion.
      static void setAlternateBackground​(java.awt.Color altBG)
      Sets the background color to use on alternating lines.
      void setDelegateRenderer​(javax.swing.DefaultListCellRenderer delegate)
      Sets the delegate renderer.
      void setDisplayFont​(java.awt.Font font)
      Sets the font to use when rendering completion items.
      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.
      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.
      void setParamColor​(java.awt.Color color)
      Sets the color to use for function arguments.
      void setShowTypes​(boolean show)
      Sets whether the types of fields and return types of methods are shown in the completion text.
      void setTypeColor​(java.awt.Color color)
      Sets the color to use for function/field types.
      void updateUI()
      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
      • Methods inherited from class java.lang.Object

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

      • altBG

        private static java.awt.Color altBG
        The alternating background color, or null if alternating row colors should not be used.
      • font

        private java.awt.Font font
        The font to use when rendering items, or null if 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 standard DefaultListCellRenderers. 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

      • 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.Exception
        Attempts 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, or null if 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:
        getListCellRendererComponent in interface javax.swing.ListCellRenderer<java.lang.Object>
        Overrides:
        getListCellRendererComponent in class javax.swing.DefaultListCellRenderer
        Parameters:
        list - The list of choices being rendered.
        value - The Completion being rendered.
        index - The index into list being 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:
        paintComponent in class javax.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 into list being 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 into list being 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 into list being 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 into list being 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 into list being 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 is null, 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 standard DefaultListCellRenderer.
        Parameters:
        delegate - The new delegate renderer. If this is null, 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 is null, 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 if completion does 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 if null.
        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 if getShowTypes() returns false, this property effectively does nothing.
        Parameters:
        color - The color to use for types. This is ignored if null.
        See Also:
        setShowTypes(boolean), setParamColor(Color)
      • updateUI

        public void updateUI()
        Overridden to update our delegate, if necessary.
        Overrides:
        updateUI in class javax.swing.JLabel