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:
DockingActionProviderIf
,KeyStrokeConsumer
,java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
,javax.swing.event.CellEditorListener
,javax.swing.event.ListSelectionListener
,javax.swing.event.RowSorterListener
,javax.swing.event.TableColumnModelListener
,javax.swing.event.TableModelListener
,javax.swing.Scrollable
public class GhidraTable extends GTable
Navigation is only supported if the underlying table model implementsProgramTableModel
and thesetGoToService()
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 callsetNavigateOnSelectionEnabled(boolean)
with a value of false.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JTable
javax.swing.JTable.AccessibleJTable, javax.swing.JTable.DropLocation, javax.swing.JTable.PrintMode
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
-
Fields inherited from class docking.widgets.table.GTable
defaultGTableRendererList, KEY_TIMEOUT
-
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
-
-
Constructor Summary
Constructors Constructor Description GhidraTable()
GhidraTable(java.lang.Object[][] rowData, java.lang.Object[] columnNames)
Constructs aGhidraTable
to display the values in the two dimensional array,rowData
, with column names,columnNames
.GhidraTable(java.lang.Object[][] rowData, java.lang.Object[] columnNames, boolean allowAutoEdit)
Constructs aGhidraTable
to display the values in the two dimensional array,rowData
, with column names,columnNames
.GhidraTable(javax.swing.table.TableModel model)
GhidraTable(javax.swing.table.TableModel dm, boolean allowAutoEdit)
Constructs a new GhidraTable using the specified table model.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
dispose()
Call this when the table will no longer be usedProgramSelection
getProgramSelection()
Returns the program selection equivalent to the rows currently selected in the table.protected void
initDefaultRenderers()
Installs the defaultTableCellRenderer
s for known Ghidra table cell data classes.void
installNavigation(GoToService goToService, Navigatable nav)
Sets the GoTo service to use when navigation is enabled on this table.void
navigate(int row, int column)
Does nothing if noGoToService
has been installed from#setGoToService(GoToService)
.void
removeNavigation()
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.-
Methods inherited from class docking.widgets.table.GTable
columnAdded, columnRemoved, createDefaultColumnModel, createDefaultColumnsFromModel, createSelectionManager, editCellAt, getCellRenderer, getCellRendererOverride, getConfigurableColumnTableModel, getDefaultDockingActions, getDefaultRenderer, getDockingActions, getPreferenceKey, getPreferredScrollableViewportSize, getSelectionManager, getTableColumnPopupMenu, getToolTipText, getUnwrappedTableModel, getValueAt, isColumnHeaderPopupEnabled, isKeyConsumed, notifyTableChanged, processKeyBinding, savePreferences, scrollToSelectedRow, selectRow, setActionsEnabled, setAutoLookupColumn, setColumnHeaderPopupEnabled, setColumnModel, setHTMLRenderingEnabled, setModel, setPreferenceKey, setRowHeight, setSelectionModel, setUserSortingEnabled, setVisibleRowCount, 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, setUI, setUpdateSelectionOnSort, setValueAt, 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
-
-
-
-
Constructor Detail
-
GhidraTable
public GhidraTable()
-
GhidraTable
public GhidraTable(javax.swing.table.TableModel model)
-
GhidraTable
public GhidraTable(javax.swing.table.TableModel dm, boolean allowAutoEdit)
Constructs a new GhidraTable using the specified table model. IfallowAutoEdit
is true, then automatic editing is enabled. Auto-editing implies that typing in an editable cell will automatically force the cell into edit mode. IfallowAutoEdit
is false, thenF2
must be hit before editing may commence.- Parameters:
dm
- the table modelallowAutoEdit
- true if auto-editing is allowed
-
GhidraTable
public GhidraTable(java.lang.Object[][] rowData, java.lang.Object[] columnNames)
Constructs aGhidraTable
to display the values in the two dimensional array,rowData
, with column names,columnNames
.rowData
is an array of rows, so the value of the cell at row 1, column 5 can be obtained with the following code:rowData[1][5];
All rows must be of the same length as
columnNames
.- Parameters:
rowData
- the data for the new tablecolumnNames
- names of each column
-
GhidraTable
public GhidraTable(java.lang.Object[][] rowData, java.lang.Object[] columnNames, boolean allowAutoEdit)
Constructs aGhidraTable
to display the values in the two dimensional array,rowData
, with column names,columnNames
.rowData
is an array of rows, so the value of the cell at row 1, column 5 can be obtained with the following code:rowData[1][5];
All rows must be of the same length as
columnNames
.If
allowAutoEdit
is true, then automatic editing is enabled. Auto-editing implies that typing in an editable cell will automatically force the cell into edit mode. IfallowAutoEdit
is false, thenF2
must be hit before editing may commence.- Parameters:
rowData
- the data for the new tablecolumnNames
- names of each columnallowAutoEdit
- true if auto-editing is allowed
-
-
Method Detail
-
initDefaultRenderers
protected void initDefaultRenderers()
Installs the defaultTableCellRenderer
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 classGTable
-
installNavigation
public void installNavigation(GoToService goToService, Navigatable nav)
Sets the GoTo service to use when navigation is enabled on this table.- Parameters:
goToService
- the GoTo service.nav
- the navigable
-
removeNavigation
public void removeNavigation()
-
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 implementsProgramTableModel
. Returns null if no rows are selected or the underlying model does not implementProgramTableModel
.- Returns:
- the program selection or null.
-
navigate
public void navigate(int row, int column)
Does nothing if noGoToService
has been installed from#setGoToService(GoToService)
. Also, this method will do nothing if this table's TableModel is not an instance ofProgramTableModel
. Otherwise, this method will attempt to go to the program location denoted by the given row and column.
-
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.
-
selectRow
public void selectRow(int row)
Selects the given row and performs a goto, if applicable.
-
-