Package ghidra.app.decompiler.component
Class DecompilerPanel
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
ghidra.app.decompiler.component.DecompilerPanel
- All Implemented Interfaces:
FieldLocationListener
,FieldMouseListener
,FieldSelectionListener
,LayoutListener
,ClangHighlightListener
,ImageObserver
,MenuContainer
,Serializable
,Accessible
public class DecompilerPanel
extends JPanel
implements FieldMouseListener, FieldLocationListener, FieldSelectionListener, ClangHighlightListener, LayoutListener
Class to handle the display of a decompiled function
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
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.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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
void
addHighlights
(Set<PcodeOp> ops, Color hlColor) void
addHighlights
(Set<Varnode> varnodes, ColorProvider colorProvider) void
addHoverService
(DecompilerHoverService hoverService) void
addMarginProvider
(DecompilerMarginProvider provider) void
addSecondaryHighlight
(ClangToken token) void
addSecondaryHighlight
(ClangToken token, Color color) void
buttonPressed
(FieldLocation location, Field field, MouseEvent ev) Called whenever the mouse button is pressed.void
void
cloneHighlights
(DecompilerPanel sourcePanel) Called by the provider to clone all highlights in the source panel and apply them to this panelboolean
containsLocation
(ProgramLocation location) void
dispose()
void
fieldLocationChanged
(FieldLocation location, Field field, EventTrigger trigger) Called whenever the cursor position changes.findTokensByName
(String name) getHighlighter
(String id) getHighlights
(DecompilerHighlighter highligter) int
getLineNumber
(int y) Get the line number for the given y position, relative to the scroll panelgetLines()
ghidra.app.plugin.core.decompile.actions.DecompilerSearchLocation
getSecondaryHighlight
(ClangToken token) Returns a single selected token; null if there is no selection or multiple tokens selected.The color used in a primary highlight to mark the token that was clicked.void
goToToken
(ClangToken token) boolean
hasSecondaryHighlight
(ClangToken token) boolean
hasSecondaryHighlights
(Function function) boolean
void
layoutsChanged
(List<AnchoredLayout> layouts) void
optionsChanged
(DecompileOptions decompilerOptions) void
void
removeHoverService
(DecompilerHoverService hoverService) void
removeMarginProvider
(DecompilerMarginProvider provider) void
void
removeSecondaryHighlights
(Function function) Removes all secondary highlights for the current functionvoid
void
selectAll
(EventTrigger trigger) void
selectionChanged
(FieldSelection selection, EventTrigger trigger) Called whenever the FieldViewer selection changes.void
setBackground
(Color bg) void
setCursorPosition
(FieldLocation fieldLocation) void
void
setHighlightController
(ClangHighlightController highlightController) void
setHoverMode
(boolean enabled) void
setLocation
(ProgramLocation location, ViewerPosition viewerPosition) void
setSearchResults
(SearchLocation searchLocation) void
setViewerPosition
(ViewerPosition viewerPosition) void
Method to invoke whenever the decompiler token highlights have changed.void
tokenRenamed
(ClangToken token, String newName) This function is used to alert the panel that a token was renamed.Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, 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, 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, repaint, repaint, requestDefaultFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, 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, 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, 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, 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
-
Method Details
-
getLines
-
getFields
-
getFieldPanel
-
getSecondaryHighlightColors
-
hasSecondaryHighlights
-
hasSecondaryHighlight
-
getSecondaryHighlight
-
getHighlights
-
getMiddleMouseHighlights
-
removeSecondaryHighlights
Removes all secondary highlights for the current function- Parameters:
function
- the function containing the secondary highlights
-
removeSecondaryHighlight
-
addSecondaryHighlight
-
addSecondaryHighlight
-
createHighlighter
-
createHighlighter
-
getHighlighter
-
clearPrimaryHighlights
public void clearPrimaryHighlights() -
addHighlights
-
addHighlights
-
setHighlightController
-
getHighlightController
-
tokenHighlightsChanged
public void tokenHighlightsChanged()Description copied from interface:ClangHighlightListener
Method to invoke whenever the decompiler token highlights have changed.- Specified by:
tokenHighlightsChanged
in interfaceClangHighlightListener
-
tokenRenamed
This function is used to alert the panel that a token was renamed. If the token being renamed had a secondary highlight, we must re-apply the highlight to the new token.This is not needed for highlighter service highlights, since they get called again to re-apply highlights. It is up to that highlighter to determine if highlighting still applies to the new token name. Alternatively, for secondary highlights, we know the user chose the highlight based upon name. Thus, when the name changes, we need to take action to update the secondary highlight.
- Parameters:
token
- the token being renamednewName
- the new name of the token
-
cloneHighlights
Called by the provider to clone all highlights in the source panel and apply them to this panel- Parameters:
sourcePanel
- the panel that was cloned
-
setBackground
- Overrides:
setBackground
in classJComponent
-
getLayoutController
-
containsLocation
-
setLocation
-
goToToken
-
setDecompilerHoverProvider
-
dispose
public void dispose() -
getFontMetrics
-
buttonPressed
Description copied from interface:FieldMouseListener
Called whenever the mouse button is pressed.- Specified by:
buttonPressed
in interfaceFieldMouseListener
- Parameters:
location
- the field location of the mouse pointerfield
- the Field object that was clicked onev
- the mouse event that generated this call.
-
getCurrentLocation
-
fieldLocationChanged
Description copied from interface:FieldLocationListener
Called whenever the cursor position changes.- Specified by:
fieldLocationChanged
in interfaceFieldLocationListener
- Parameters:
location
- the new field location.field
- the Field object containing the location.trigger
- the type of the location change
-
selectionChanged
Description copied from interface:FieldSelectionListener
Called whenever the FieldViewer selection changes.- Specified by:
selectionChanged
in interfaceFieldSelectionListener
- Parameters:
selection
- the new selection.trigger
- indicates the cause of the selection changing
-
layoutsChanged
- Specified by:
layoutsChanged
in interfaceLayoutListener
-
setSearchResults
-
getSearchResults
public ghidra.app.plugin.core.decompile.actions.DecompilerSearchLocation getSearchResults() -
getCurrentVariableHighlightColor
-
getMiddleMouseHighlightColor
-
getSpecialHighlightColor
The color used in a primary highlight to mark the token that was clicked. This is used in 'slice' actions to mark the source of the slice.- Returns:
- the color
-
getHighlightedText
-
getTextUnderCursor
-
getSelectedText
-
getCursorPosition
-
setCursorPosition
-
getSelectedToken
Returns a single selected token; null if there is no selection or multiple tokens selected.- Returns:
- a single selected token; null if there is no selection or multiple tokens selected.
-
getTokenAtCursor
-
getLineNumber
public int getLineNumber(int y) Get the line number for the given y position, relative to the scroll panelIf the y position is below all the lines, the last line is returned.
- Parameters:
y
- the y position- Returns:
- the line number, or 0 if not applicable
-
getOptions
-
addHoverService
-
removeHoverService
-
setHoverMode
public void setHoverMode(boolean enabled) -
isHoverShowing
public boolean isHoverShowing() -
findTokensByName
-
getViewerPosition
-
setViewerPosition
-
requestFocus
public void requestFocus()- Overrides:
requestFocus
in classJComponent
-
selectAll
-
optionsChanged
-
addMarginProvider
-
removeMarginProvider
-
addFocusListener
- Overrides:
addFocusListener
in classComponent
-
removeFocusListener
- Overrides:
removeFocusListener
in classComponent
-