Package ghidra.util.table

# Class GhidraTable

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JTable
docking.widgets.table.GTable
ghidra.util.table.GhidraTable

All Implemented Interfaces:
  `ImageObserver`, `MenuContainer`, `Serializable`, `EventListener`, `Accessible`, `CellEditorListener`, `ListSelectionListener`, `RowSorterListener`, `TableColumnModelListener`, `TableModelListener`, `Scrollable`

public class GhidraTable extends GTable
Navigation is only supported if the underlying table model implements `ProgramTableModel` and the `setGoToService()` method has been called with a valid reference. When both of these conditions are met, then the table will navigate on a user's double-click or on an `Enter` key press. Also, if selection navigation is enabled, then this table will navigate any time the selection of the table changes. To prevent this feature call `setNavigateOnSelectionEnabled(boolean)` with a value of false.

See Also:
  - Serialized Form

- ## Nested Class Summary

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

  `JTable.AccessibleJTable, JTable.DropLocation, JTable.PrintMode`

  ## 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 inherited from class javax.swing.JTable

  `AUTO_RESIZE_ALL_COLUMNS, AUTO_RESIZE_LAST_COLUMN, AUTO_RESIZE_NEXT_COLUMN, AUTO_RESIZE_OFF, AUTO_RESIZE_SUBSEQUENT_COLUMNS, autoCreateColumnsFromModel, autoResizeMode, cellEditor, cellSelectionEnabled, columnModel, dataModel, defaultEditorsByColumnClass, defaultRenderersByColumnClass, editingColumn, editingRow, editorComp, gridColor, preferredViewportSize, rowHeight, rowMargin, rowSelectionAllowed, selectionBackground, selectionForeground, selectionModel, showHorizontalLines, showVerticalLines, tableHeader`

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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GhidraTable()`
  `GhidraTable(TableModel model)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `dispose()`
  Call this when the table will no longer be used
  `Program`
  `getProgram()`
  Returns the program being used by this table; null if the underlying model does not implement `ProgramTableModel`
  `ProgramSelection`
  `getProgramSelection()`
  Returns the program selection equivalent to the rows currently selected in the table.
  `protected void`
  `initDefaultRenderers()`
  Installs the default `TableCellRenderer`s for known Ghidra table cell data classes.
  `void`
  `installNavigation(GoToService goToService, Navigatable nav)`
  Deprecated.
  use `installNavigation(ServiceProvider)` or `installNavigation(ServiceProvider,Navigatable)`
  `void`
  `installNavigation(ServiceProvider sp)`
  Sets the service provider to use when navigation is enabled on this table.
  `void`
  `installNavigation(ServiceProvider sp, Navigatable nav)`
  Sets the service provider to use when navigation is enabled on this table.
  `void`
  `navigate(int row, int column)`
  Navigate to the program location denoted by the given row and column
  `protected void`
  `navigateOnCurrentSelection(int row, int column)`
  Navigate to the program location denoted by the given row and column
  `void`
  `removeNavigation()`
  Removes any installed navigation components, such as listeners, a navigatable and the service provider.
  `void`
  `selectRow(int row)`
  Selects the given row and performs a goto, if applicable.
  `void`
  `setNavigateOnSelectionEnabled(boolean enabled)`
  Allows the user to enable and disable the table's feature that triggers navigation on certain selection events, like mouse clicking and pressing the 'Enter' key.
  `void`
  `setValueAt(Object aValue, int row, int column)`

  ### Methods inherited from class docking.widgets.table.GTable

  `areActionsEnabled, columnAdded, columnRemoved, createAutoLookup, createDefaultColumnModel, createDefaultColumnsFromModel, createSelectionManager, createSharedActions, editCellAt, getAutoLookup, getCellRenderer, getCellRendererOverride, getConfigurableColumnTableModel, getDefaultRenderer, getHeaderRendererOverride, getPreferenceKey, getPreferredScrollableViewportSize, getSelectionManager, getTableColumnPopupMenu, getTableFilterPanel, getToolTipText, getUnwrappedTableModel, getValueAt, installEditKeyBinding, isColumnHeaderPopupEnabled, notifyTableChanged, processKeyBinding, requestTableEditorFocus, savePreferences, scrollToSelectedRow, selectRow, setAccessibleNamePrefix, setActionsEnabled, setAutoEditEnabled, setAutoLookupColumn, setAutoLookupTimeout, setColumnHeaderPopupEnabled, setColumnModel, setHTMLRenderingEnabled, setModel, setPreferenceKey, setRowHeight, setSelectionModel, setTableFilterPanel, setUI, setUserSortingEnabled, setVisibleRowCount, supportsPopupActions, tableChanged, wrapDefaultTableCellRenderer`

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

  `addColumn, addColumnSelectionInterval, addNotify, addRowSelectionInterval, changeSelection, clearSelection, columnAtPoint, columnMarginChanged, columnMoved, columnSelectionChanged, configureEnclosingScrollPane, convertColumnIndexToModel, convertColumnIndexToView, convertRowIndexToModel, convertRowIndexToView, createDefaultDataModel, createDefaultEditors, createDefaultRenderers, createDefaultSelectionModel, createDefaultTableHeader, createScrollPaneForTable, doLayout, editCellAt, editingCanceled, editingStopped, getAccessibleContext, getAutoCreateColumnsFromModel, getAutoCreateRowSorter, getAutoResizeMode, getCellEditor, getCellEditor, getCellRect, getCellSelectionEnabled, getColumn, getColumnClass, getColumnCount, getColumnModel, getColumnName, getColumnSelectionAllowed, getDefaultEditor, getDragEnabled, getDropLocation, getDropMode, getEditingColumn, getEditingRow, getEditorComponent, getFillsViewportHeight, getGridColor, getIntercellSpacing, getModel, getPrintable, getRowCount, getRowHeight, getRowHeight, getRowMargin, getRowSelectionAllowed, getRowSorter, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedColumn, getSelectedColumnCount, getSelectedColumns, getSelectedRow, getSelectedRowCount, getSelectedRows, getSelectionBackground, getSelectionForeground, getSelectionModel, getShowHorizontalLines, getShowVerticalLines, getSurrendersFocusOnKeystroke, getTableHeader, getUI, getUIClassID, getUpdateSelectionOnSort, initializeLocalVars, isCellEditable, isCellSelected, isColumnSelected, isEditing, isRowSelected, moveColumn, paramString, prepareEditor, prepareRenderer, print, print, print, print, print, removeColumn, removeColumnSelectionInterval, removeEditor, removeNotify, removeRowSelectionInterval, resizeAndRepaint, rowAtPoint, selectAll, setAutoCreateColumnsFromModel, setAutoCreateRowSorter, setAutoResizeMode, setCellEditor, setCellSelectionEnabled, setColumnSelectionAllowed, setColumnSelectionInterval, setDefaultEditor, setDefaultRenderer, setDragEnabled, setDropMode, setEditingColumn, setEditingRow, setFillsViewportHeight, setGridColor, setIntercellSpacing, setPreferredScrollableViewportSize, setRowHeight, setRowMargin, setRowSelectionAllowed, setRowSelectionInterval, setRowSorter, setSelectionBackground, setSelectionForeground, setSelectionMode, setShowGrid, setShowHorizontalLines, setShowVerticalLines, setSurrendersFocusOnKeystroke, setTableHeader, setUpdateSelectionOnSort, sizeColumnsToFit, sizeColumnsToFit, sorterChanged, unconfigureEnclosingScrollPane, updateUI, valueChanged`

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

  `addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, 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, 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, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, 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, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, 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, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, 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, imageUpdate, 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, 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`

- ## Constructor Details

  - ### GhidraTable

    public GhidraTable()

  - ### GhidraTable

    public GhidraTable(TableModel model)

- ## Method Details

  - ### initDefaultRenderers

    protected void initDefaultRenderers()
    Installs the default `TableCellRenderer`s for known Ghidra table cell data classes.

    Subclasses can override this method to add additional types or to change the default associations.

    Overrides:
      `initDefaultRenderers` in class `GTable`

  - ### installNavigation

    @Deprecated public void installNavigation(GoToService goToService, Navigatable nav)
    Deprecated.
    use `installNavigation(ServiceProvider)` or `installNavigation(ServiceProvider,Navigatable)`
    Sets the GoTo service to use when navigation is enabled on this table.
    Parameters:
      `goToService` - the GoTo service
      `nav` - the navigable

  - ### installNavigation

    public void installNavigation(ServiceProvider sp, Navigatable nav)
    Sets the service provider to use when navigation is enabled on this table.

    The service provider will be used to retrieve the `GoToService`, as needed after the system has been initialized. If you do not have a `Navigatable` preferences, then call `installNavigation(ServiceProvider)` instead.

    Parameters:
      `sp` - the service provider
      `nav` - the navigable

  - ### installNavigation

    public void installNavigation(ServiceProvider sp)
    Sets the service provider to use when navigation is enabled on this table.

    The service provider will be used to retrieve the `GoToService`, as needed after the system has been initialized.

    Parameters:
      `sp` - the service provider

  - ### removeNavigation

    public void removeNavigation()
    Removes any installed navigation components, such as listeners, a navigatable and the service provider.

  - ### getProgramSelection

    public ProgramSelection getProgramSelection()
    Returns the program selection equivalent to the rows currently selected in the table.

    This method is only valid when the underlying table model implements `ProgramTableModel`.

    Returns null if no rows are selected or the underlying model does not implement `ProgramTableModel`.

    Returns:
      the program selection or null.

  - ### getProgram

    public Program getProgram()
    Returns the program being used by this table; null if the underlying model does not implement `ProgramTableModel`
    Returns:
      the table's program

  - ### navigate

    public void navigate(int row, int column)
    Navigate to the program location denoted by the given row and column

    Does nothing if no `GoToService` has been installed from `installNavigation(GoToService, Navigatable)`. Also, this method will do nothing if this table's `TableModel` is not an instance of `ProgramTableModel`.

    Parameters:
      `row` - the row
      `column` - the column

  - ### navigateOnCurrentSelection

    protected void navigateOnCurrentSelection(int row, int column)
    Navigate to the program location denoted by the given row and column

    Does nothing if no `GoToService` has been installed from `installNavigation(GoToService, Navigatable)`.

    This method differs from `navigate(int, int)` in that this method will not navigate if `navigateOnSelection` is `false`.

  - ### setNavigateOnSelectionEnabled

    public void setNavigateOnSelectionEnabled(boolean enabled)
    Allows the user to enable and disable the table's feature that triggers navigation on certain selection events, like mouse clicking and pressing the 'Enter' key.
    Parameters:
      `enabled` - true enables the navigation on selection feature.

  - ### setValueAt

    public void setValueAt(Object aValue, int row, int column)
    Overrides:
      `setValueAt` in class `JTable`

  - ### selectRow

    public void selectRow(int row)
    Selects the given row and performs a goto, if applicable.
    Overrides:
      `selectRow` in class `GTable`
    Parameters:
      `row` - The row to select

  - ### dispose

    public void dispose()
    Description copied from class: `GTable`
    Call this when the table will no longer be used
    Overrides:
      `dispose` in class `GTable`