Package docking.widgets

# Class AbstractGCellRenderer

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JLabel
docking.widgets.label.AbstractHtmlLabel
docking.widgets.label.GDHtmlLabel
docking.widgets.AbstractGCellRenderer

All Implemented Interfaces:
  `GComponent`, `FontChangeListener`, `ImageObserver`, `MenuContainer`, `PropertyChangeListener`, `Serializable`, `EventListener`, `Accessible`, `SwingConstants`

Direct Known Subclasses:
  `GListCellRenderer`, `GTableCellRenderer`

public abstract class AbstractGCellRenderer extends GDHtmlLabel implements FontChangeListener
A common base class for list and table renderer objects, unifying the Ghidra look and feel.

It allows (but default-disables) HTML content, automatically paints alternating row background colors, and highlights the drop target in a drag-n-drop operation.

The preferred method to change the font used by this renderer is `setBaseFontId(String)`. If you would like this renderer to use a monospaced font, then, as an alternative to creating a font ID, you can instead override `getDefaultFont()` to return this class's `fixedWidthFont`. Also, the fixed width font of this class is based on the default font set when calling `setBaseFontId(String)`, so it stays up-to-date with theme changes.

See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class javax.swing.JLabel

  `JLabel.AccessibleJLabel`

  ## Nested classes/interfaces inherited from class javax.swing.JComponent

  `JComponent.AccessibleJComponent`

  ## 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

  Fields
  Modifier and Type
  Field
  Description
  `protected String`
  `baseFontId`
  `protected Font`
  `boldFont`
  `protected Font`
  `defaultFont`
  `protected int`
  `dropRow`
  `protected Font`
  `fixedWidthFont`
  `protected String`
  `fixedWidthFontId`
  `protected Border`
  `focusBorder`
  `protected Font`
  `italicFont`
  `protected Border`
  `noFocusBorder`
  `protected static boolean`
  `systemAlternateRowColors`

  ### 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 docking.widgets.GComponent

  `HTML_DISABLE_STRING`

  ### 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`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractGCellRenderer()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `checkForInvalidSetFont(Font f)`
  `void`
  `firePropertyChange(String propertyName, boolean oldValue, boolean newValue)`
  See `DefaultTableCellRenderer` class header javadoc for more info.
  `protected void`
  `firePropertyChange(String property, Object oldValue, Object newValue)`
  See `DefaultTableCellRenderer` class header javadoc for more info.
  `void`
  `fontChanged(String fontId, Font f)`
  Called when the client should update its font to the given font.
  `protected Color`
  `getAlternatingBackgroundColor(JComponent parent, int row)`
  Returns the background color appropriate for the given component.
  `protected Color`
  `getBackgroundColorForRow(int row)`
  `Font`
  `getBoldFont()`
  `protected Color`
  `getDefaultBackgroundColor()`
  `protected Font`
  `getDefaultFont()`
  `protected Color`
  `getErrorForegroundColor(boolean isSelected)`
  `Font`
  `getFixedWidthFont()`
  `Font`
  `getItalicFont()`
  `protected Border`
  `getNoFocusBorder()`
  `protected Color`
  `getUneditableForegroundColor(boolean isSelected)`
  `void`
  `invalidate()`
  See `DefaultTableCellRenderer` class header javadoc for more info.
  `void`
  `repaint()`
  See `DefaultTableCellRenderer` class header javadoc for more info.
  `void`
  `repaint(long tm, int x, int y, int width, int height)`
  See `DefaultTableCellRenderer` class header javadoc for more info.
  `void`
  `repaint(Rectangle r)`
  See `DefaultTableCellRenderer` class header javadoc for more info.
  `void`
  `revalidate()`
  See `DefaultTableCellRenderer` class header javadoc for more info.
  `void`
  `setBackground(Color bg)`
  Overrides this method to ensure that the new background color is not a `GColorUIResource`.
  `void`
  `setBaseFontId(String fontId)`
  Sets this renderer's theme font id.
  `protected void`
  `setBold()`
  Sets the font of this renderer to be bold until the next time that getTableCellRenderer() is called, as it resets the font to the default font on each pass.
  `void`
  `setDropRow(int dropRow)`
  Sets the row where DnD would perform drop operation.
  `void`
  `setFixedWidthFontId(String fontId)`
  Sets this renderer's fixed width theme font id.
  `void`
  `setFont(Font f)`
  `void`
  `setForeground(Color fg)`
  Overrides this method to ensure that the new foreground color is not a `GColorUIResource`.
  `protected void`
  `setItalic()`
  Sets the font of this renderer to be italic until the next time that getTableCellRenderer() is called, as it resets the font to the default font on each pass.
  `void`
  `setShouldAlternateRowBackgroundColors(boolean alternate)`
  `void`
  `setUI(LabelUI ui)`
  `boolean`
  `shouldAlternateRowBackgroundColor()`
  Return whether or not the renderer should alternate row background colors.
  `protected void`
  `superValidate()`
  `void`
  `validate()`
  See `DefaultTableCellRenderer` class header javadoc for more info.

  ### Methods inherited from class docking.widgets.label.AbstractHtmlLabel

  `getOriginalText, propertyChange, setText, updateUI`

  ### 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, setVerticalAlignment, setVerticalTextPosition`

  ### Methods inherited from class javax.swing.JComponent

  `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, 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, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, 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, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, 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, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, 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`

  ### Methods inherited from interface docking.widgets.GComponent

  `isHTMLRenderingEnabled, setHTMLRenderingEnabled`

- ## Field Details

  - ### systemAlternateRowColors

    protected static boolean systemAlternateRowColors

  - ### focusBorder

    protected Border focusBorder

  - ### noFocusBorder

    protected Border noFocusBorder

  - ### baseFontId

    protected String baseFontId

  - ### fixedWidthFontId

    protected String fixedWidthFontId

  - ### defaultFont

    protected Font defaultFont

  - ### fixedWidthFont

    protected Font fixedWidthFont

  - ### boldFont

    protected Font boldFont

  - ### italicFont

    protected Font italicFont

  - ### dropRow

    protected int dropRow

- ## Constructor Details

  - ### AbstractGCellRenderer

    public AbstractGCellRenderer()

- ## Method Details

  - ### setShouldAlternateRowBackgroundColors

    public void setShouldAlternateRowBackgroundColors(boolean alternate)

  - ### shouldAlternateRowBackgroundColor

    public boolean shouldAlternateRowBackgroundColor()
    Return whether or not the renderer should alternate row background colors.

    A renderer is unable to override an enforcing DISABLE_ALTERNATING_ROW_COLORS_PROPERTY system property -- if the property has disabled alternating colors (i.e., set to 'true'), this method returns false. If the property is false, individual renderers may assert control over alternating row colors.

    Returns:
      True if the rows may be painted in alternate background colors, false otherwise
    See Also:
      - `DISABLE_ALTERNATING_ROW_COLORS_PROPERTY`

  - ### getAlternatingBackgroundColor

    protected Color getAlternatingBackgroundColor(JComponent parent, int row)
    Returns the background color appropriate for the given component. This may vary depending upon the current OS.
    Parameters:
      `parent` - The parent being rendered -- likely a list or table.
      `row` - The row being rendered.
    Returns:
      the color

  - ### setBaseFontId

    public void setBaseFontId(String fontId)
    Sets this renderer's theme font id. This will be used to load the base font and to create the derived fonts, such as bold and fixed width.
    Parameters:
      `fontId` - the font id
    See Also:
      - `Gui.registerFont(Component, String)`

  - ### setFixedWidthFontId

    public void setFixedWidthFontId(String fontId)
    Sets this renderer's fixed width theme font id.
    Parameters:
      `fontId` - the font id
    See Also:
      - `Gui.registerFont(Component, String)`

  - ### setUI

    public void setUI(LabelUI ui)
    Overrides:
      `setUI` in class `JLabel`

  - ### fontChanged

    public void fontChanged(String fontId, Font f)
    Description copied from interface: `FontChangeListener`
    Called when the client should update its font to the given font.
    Specified by:
      `fontChanged` in interface `FontChangeListener`
    Parameters:
      `fontId` - the theme font id being updated
      `f` - the font

  - ### setFont

    public void setFont(Font f)
    Overrides:
      `setFont` in class `JComponent`

  - ### checkForInvalidSetFont

    protected void checkForInvalidSetFont(Font f)

  - ### setBold

    protected void setBold()
    Sets the font of this renderer to be bold until the next time that getTableCellRenderer() is called, as it resets the font to the default font on each pass.
    See Also:
      - `getDefaultFont()`

  - ### setItalic

    protected void setItalic()
    Sets the font of this renderer to be italic until the next time that getTableCellRenderer() is called, as it resets the font to the default font on each pass.
    See Also:
      - `getDefaultFont()`

  - ### getDefaultFont

    protected Font getDefaultFont()

  - ### getFixedWidthFont

    public Font getFixedWidthFont()

  - ### getBoldFont

    public Font getBoldFont()

  - ### getItalicFont

    public Font getItalicFont()

  - ### setDropRow

    public void setDropRow(int dropRow)
    Sets the row where DnD would perform drop operation.
    Parameters:
      `dropRow` - the drop row

  - ### getNoFocusBorder

    protected Border getNoFocusBorder()

  - ### getDefaultBackgroundColor

    protected Color getDefaultBackgroundColor()

  - ### getBackgroundColorForRow

    protected Color getBackgroundColorForRow(int row)

  - ### getErrorForegroundColor

    protected Color getErrorForegroundColor(boolean isSelected)

  - ### getUneditableForegroundColor

    protected Color getUneditableForegroundColor(boolean isSelected)

  - ### invalidate

    public void invalidate()
    See `DefaultTableCellRenderer` class header javadoc for more info.
    Overrides:
      `invalidate` in class `Container`

  - ### superValidate

    protected void superValidate()

  - ### validate

    public void validate()
    See `DefaultTableCellRenderer` class header javadoc for more info.
    Overrides:
      `validate` in class `Container`

  - ### revalidate

    public void revalidate()
    See `DefaultTableCellRenderer` class header javadoc for more info.
    Overrides:
      `revalidate` in class `JComponent`

  - ### repaint

    public void repaint(long tm, int x, int y, int width, int height)
    See `DefaultTableCellRenderer` class header javadoc for more info.
    Overrides:
      `repaint` in class `JComponent`

  - ### repaint

    public void repaint(Rectangle r)
    See `DefaultTableCellRenderer` class header javadoc for more info.
    Overrides:
      `repaint` in class `JComponent`

  - ### repaint

    public void repaint()
    See `DefaultTableCellRenderer` class header javadoc for more info.
    Overrides:
      `repaint` in class `Component`

  - ### firePropertyChange

    protected void firePropertyChange(String property, Object oldValue, Object newValue)
    See `DefaultTableCellRenderer` class header javadoc for more info.
    Overrides:
      `firePropertyChange` in class `Component`

  - ### firePropertyChange

    public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
    See `DefaultTableCellRenderer` class header javadoc for more info.
    Overrides:
      `firePropertyChange` in class `JComponent`

  - ### setForeground

    public void setForeground(Color fg)
    Overrides this method to ensure that the new foreground color is not a `GColorUIResource`. Some Look and Feels will ignore color values that extend `UIResource`, choosing instead their own custom painting behavior. By not using a UIResource, we prevent the Look and Feel from overriding this renderer's color value.
    Overrides:
      `setForeground` in class `JComponent`
    Parameters:
      `fg` - the new foreground color

  - ### setBackground

    public void setBackground(Color bg)
    Overrides this method to ensure that the new background color is not a `GColorUIResource`. Some Look and Feels will ignore color values that extend `UIResource`, choosing instead their own custom painting behavior. By not using a UIResource, we prevent the Look and Feel from overriding this renderer's color value.
    Overrides:
      `setBackground` in class `JComponent`
    Parameters:
      `bg` - the new background color