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
,ClangHighlightListener
,java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
public class DecompilerPanel extends javax.swing.JPanel implements FieldMouseListener, FieldLocationListener, FieldSelectionListener, ClangHighlightListener
Class to handle the display of a decompiled function- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
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
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addHoverService(DecompilerHoverService hoverService)
void
addPcodeOpHighlights(java.util.Set<PcodeOp> ops, java.awt.Color hlColor)
void
addSecondaryHighlight(ClangToken token)
void
addSecondaryHighlight(ClangToken token, java.awt.Color color)
void
addVarnodeHighlights(java.util.Set<Varnode> varnodes, ghidra.app.plugin.core.decompile.actions.TokenHighlightColorProvider colorProvider)
void
applySecondaryHighlights(java.util.Map<java.lang.String,java.awt.Color> highlightsByName)
void
buttonPressed(FieldLocation location, Field field, java.awt.event.MouseEvent ev)
Called whenever the mouse button is pressed.void
clearPrimaryHighlights()
boolean
containsLocation(ProgramLocation location)
void
dispose()
void
fieldLocationChanged(FieldLocation location, Field field, EventTrigger trigger)
Called whenever the cursor position changes.java.util.List<ClangToken>
findTokensByName(java.lang.String name)
ProgramLocation
getCurrentLocation()
java.awt.Color
getCurrentVariableHighlightColor()
FieldLocation
getCursorPosition()
FieldPanel
getFieldPanel()
java.util.List<Field>
getFields()
ClangHighlightController
getHighlightController()
java.lang.String
getHighlightedText()
LayoutModel
getLayoutModel()
java.util.List<ClangLine>
getLines()
java.awt.Color
getMiddleMouseHighlightColor()
DecompileOptions
getOptions()
TokenHighlightColors
getSecondaryHighlightColors()
TokenHighlights
getSecondaryHighlightedTokens()
ClangToken
getSelectedToken()
Returns a single selected token; null if there is no selection or multiple tokens selected.java.awt.Color
getSpecialHighlightColor()
The color used in a primary highlight to mark the token that was clicked.java.lang.String
getTextSelection()
ClangToken
getTokenAtCursor()
ViewerPosition
getViewerPosition()
boolean
isHoverShowing()
void
optionsChanged(DecompileOptions decompilerOptions)
void
removeHoverService(DecompilerHoverService hoverService)
void
removeSecondaryHighlight(ClangToken token)
void
removeSecondaryHighlights()
void
requestFocus()
SearchLocation
searchText(java.lang.String text, FieldLocation startLocation, boolean forwardDirection)
SearchLocation
searchTextRegex(java.lang.String text, FieldLocation startLocation, boolean forwardDirection)
void
selectAll()
void
selectionChanged(FieldSelection selection, EventTrigger trigger)
Called whenever the FieldViewer selection changes.void
setBackground(java.awt.Color bg)
void
setCursorPosition(FieldLocation fieldLocation)
void
setDecompilerHoverProvider(DecompilerHoverProvider provider)
void
setHighlightController(ClangHighlightController highlightController)
void
setHoverMode(boolean enabled)
void
setLocation(ProgramLocation location, ViewerPosition viewerPosition)
void
setSearchResults(SearchLocation searchLocation)
void
setViewerPosition(ViewerPosition viewerPosition)
void
tokenHighlightsChanged()
Method to invoke whenever the decompiler token highlights have changed.void
tokenRenamed(ClangToken token, java.lang.String newName)
This is 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, 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
-
-
-
-
Method Detail
-
getLines
public java.util.List<ClangLine> getLines()
-
getFields
public java.util.List<Field> getFields()
-
getFieldPanel
public FieldPanel getFieldPanel()
-
applySecondaryHighlights
public void applySecondaryHighlights(java.util.Map<java.lang.String,java.awt.Color> highlightsByName)
-
getSecondaryHighlightColors
public TokenHighlightColors getSecondaryHighlightColors()
-
getSecondaryHighlightedTokens
public TokenHighlights getSecondaryHighlightedTokens()
-
removeSecondaryHighlights
public void removeSecondaryHighlights()
-
removeSecondaryHighlight
public void removeSecondaryHighlight(ClangToken token)
-
addSecondaryHighlight
public void addSecondaryHighlight(ClangToken token)
-
addSecondaryHighlight
public void addSecondaryHighlight(ClangToken token, java.awt.Color color)
-
setBackground
public void setBackground(java.awt.Color bg)
- Overrides:
setBackground
in classjavax.swing.JComponent
-
getLayoutModel
public LayoutModel getLayoutModel()
-
containsLocation
public boolean containsLocation(ProgramLocation location)
-
setLocation
public void setLocation(ProgramLocation location, ViewerPosition viewerPosition)
-
setDecompilerHoverProvider
public void setDecompilerHoverProvider(DecompilerHoverProvider provider)
-
dispose
public void dispose()
-
buttonPressed
public void buttonPressed(FieldLocation location, Field field, java.awt.event.MouseEvent ev)
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
public ProgramLocation getCurrentLocation()
-
fieldLocationChanged
public void fieldLocationChanged(FieldLocation location, Field field, EventTrigger trigger)
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
public void selectionChanged(FieldSelection selection, EventTrigger trigger)
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
-
searchText
public SearchLocation searchText(java.lang.String text, FieldLocation startLocation, boolean forwardDirection)
-
searchTextRegex
public SearchLocation searchTextRegex(java.lang.String text, FieldLocation startLocation, boolean forwardDirection)
-
setSearchResults
public void setSearchResults(SearchLocation searchLocation)
-
getCurrentVariableHighlightColor
public java.awt.Color getCurrentVariableHighlightColor()
-
getMiddleMouseHighlightColor
public java.awt.Color getMiddleMouseHighlightColor()
-
getSpecialHighlightColor
public java.awt.Color 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
public java.lang.String getHighlightedText()
-
getCursorPosition
public FieldLocation getCursorPosition()
-
setCursorPosition
public void setCursorPosition(FieldLocation fieldLocation)
-
getSelectedToken
public ClangToken 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.
-
getTextSelection
public java.lang.String getTextSelection()
-
getTokenAtCursor
public ClangToken getTokenAtCursor()
-
getOptions
public DecompileOptions getOptions()
-
addHoverService
public void addHoverService(DecompilerHoverService hoverService)
-
removeHoverService
public void removeHoverService(DecompilerHoverService hoverService)
-
setHoverMode
public void setHoverMode(boolean enabled)
-
isHoverShowing
public boolean isHoverShowing()
-
clearPrimaryHighlights
public void clearPrimaryHighlights()
-
addVarnodeHighlights
public void addVarnodeHighlights(java.util.Set<Varnode> varnodes, ghidra.app.plugin.core.decompile.actions.TokenHighlightColorProvider colorProvider)
-
addPcodeOpHighlights
public void addPcodeOpHighlights(java.util.Set<PcodeOp> ops, java.awt.Color hlColor)
-
findTokensByName
public java.util.List<ClangToken> findTokensByName(java.lang.String name)
-
getViewerPosition
public ViewerPosition getViewerPosition()
-
setViewerPosition
public void setViewerPosition(ViewerPosition viewerPosition)
-
requestFocus
public void requestFocus()
- Overrides:
requestFocus
in classjavax.swing.JComponent
-
selectAll
public void selectAll()
-
optionsChanged
public void optionsChanged(DecompileOptions decompilerOptions)
-
setHighlightController
public void setHighlightController(ClangHighlightController highlightController)
-
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
public void tokenRenamed(ClangToken token, java.lang.String newName)
This is function is used to alert the panel that a token was renamed. If the token that is being renamed had a secondary highlight, we must re-apply the highlight to the new token.- Parameters:
token
- the token being renamednewName
- the new name of the token
-
getHighlightController
public ClangHighlightController getHighlightController()
-
-