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.AccessibleJPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested 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_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidaddHighlights(Set<PcodeOp> ops, Color hlColor) voidaddHighlights(Set<Varnode> varnodes, ColorProvider colorProvider) voidaddHoverService(DecompilerHoverService hoverService) voidaddMarginProvider(DecompilerMarginProvider provider) voidaddSecondaryHighlight(ClangToken token) voidaddSecondaryHighlight(ClangToken token, Color color) voidbuttonPressed(FieldLocation location, Field field, MouseEvent ev) Called whenever the mouse button is pressed.voidvoidcloneHighlights(DecompilerPanel sourcePanel) Called by the provider to clone all highlights in the source panel and apply them to this panelbooleancontainsLocation(ProgramLocation location) createHighlighter(String id, Function f, CTokenHighlightMatcher tm) voiddispose()voidfieldLocationChanged(FieldLocation location, Field field, EventTrigger trigger) Called whenever the cursor position changes.findTokensByName(String name) getHighlighter(String id) getHighlights(DecompilerHighlighter highligter) intgetLineNumber(int y) Get the line number for the given y position, relative to the scroll panelgetLines()ghidra.app.plugin.core.decompile.actions.DecompilerSearchLocationgetSecondaryHighlight(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.voidgoToToken(ClangToken token) booleanhasSecondaryHighlight(ClangToken token) booleanhasSecondaryHighlights(Function function) booleanvoidlayoutsChanged(List<AnchoredLayout> layouts) voidoptionsChanged(DecompileOptions decompilerOptions) voidvoidremoveHoverService(DecompilerHoverService hoverService) voidremoveMarginProvider(DecompilerMarginProvider provider) voidvoidremoveSecondaryHighlights(Function function) Removes all secondary highlights for the current functionvoidvoidselectAll(EventTrigger trigger) voidselectionChanged(FieldSelection selection, EventTrigger trigger) Called whenever the FieldViewer selection changes.voidsetBackground(Color bg) voidsetCursorPosition(FieldLocation fieldLocation) voidvoidsetHighlightController(ClangHighlightController highlightController) voidsetHoverMode(boolean enabled) voidsetLocation(ProgramLocation location, ViewerPosition viewerPosition) voidsetSearchResults(SearchLocation searchLocation) voidsetViewerPosition(ViewerPosition viewerPosition) voidMethod to invoke whenever the decompiler token highlights have changed.voidtokenRenamed(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, updateUIMethods 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, updateMethods 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, validateTreeMethods 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
-
getController
-
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:ClangHighlightListenerMethod to invoke whenever the decompiler token highlights have changed.- Specified by:
tokenHighlightsChangedin interfaceClangHighlightListener
-
tokenRenamed
This function is used to alert the panel that a token was renamed. If the token being renamed had a middle-mouse or secondary highlight, we must re-apply the highlights 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:
setBackgroundin classJComponent
-
getLayoutController
-
containsLocation
-
setLocation
-
goToToken
-
setDecompilerHoverProvider
-
dispose
public void dispose() -
getFontMetrics
-
buttonPressed
Description copied from interface:FieldMouseListenerCalled whenever the mouse button is pressed.- Specified by:
buttonPressedin 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:FieldLocationListenerCalled whenever the cursor position changes.- Specified by:
fieldLocationChangedin 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:FieldSelectionListenerCalled whenever the FieldViewer selection changes.- Specified by:
selectionChangedin interfaceFieldSelectionListener- Parameters:
selection- the new selection.trigger- indicates the cause of the selection changing
-
layoutsChanged
- Specified by:
layoutsChangedin 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:
requestFocusin classJComponent
-
selectAll
-
optionsChanged
-
addMarginProvider
-
removeMarginProvider
-
addFocusListener
- Overrides:
addFocusListenerin classComponent
-
removeFocusListener
- Overrides:
removeFocusListenerin classComponent
-