Class DecompilerPanel

All Implemented Interfaces:
FieldLocationListener, FieldMouseListener, FieldSelectionListener, LayoutListener, ClangHighlightListener, ImageObserver, MenuContainer, Serializable, Accessible

Class to handle the display of a decompiled function
See Also:
  • Method Details

    • getLines

      public List<ClangLine> getLines()
    • getFields

      public List<Field> getFields()
    • getFieldPanel

      public FieldPanel getFieldPanel()
    • getSecondaryHighlightColors

      public TokenHighlightColors getSecondaryHighlightColors()
    • hasSecondaryHighlights

      public boolean hasSecondaryHighlights(Function function)
    • hasSecondaryHighlight

      public boolean hasSecondaryHighlight(ClangToken token)
    • getSecondaryHighlight

      public Color getSecondaryHighlight(ClangToken token)
    • getHighlights

      public TokenHighlights getHighlights(DecompilerHighlighter highligter)
    • removeSecondaryHighlights

      public void removeSecondaryHighlights(Function function)
      Removes all secondary highlights for the current function
      Parameters:
      function - the function containing the secondary highlights
    • removeSecondaryHighlight

      public void removeSecondaryHighlight(ClangToken token)
    • addSecondaryHighlight

      public void addSecondaryHighlight(ClangToken token)
    • addSecondaryHighlight

      public void addSecondaryHighlight(ClangToken token, Color color)
    • createHighlighter

      public ghidra.app.decompiler.component.ClangDecompilerHighlighter createHighlighter(CTokenHighlightMatcher tm)
    • createHighlighter

      public ghidra.app.decompiler.component.ClangDecompilerHighlighter createHighlighter(String id, CTokenHighlightMatcher tm)
    • getHighlighter

      public DecompilerHighlighter getHighlighter(String id)
    • clearPrimaryHighlights

      public void clearPrimaryHighlights()
    • addHighlights

      public void addHighlights(Set<Varnode> varnodes, ColorProvider colorProvider)
    • addHighlights

      public void addHighlights(Set<PcodeOp> ops, Color hlColor)
    • setHighlightController

      public void setHighlightController(ClangHighlightController highlightController)
    • getHighlightController

      public ClangHighlightController getHighlightController()
    • tokenHighlightsChanged

      public void tokenHighlightsChanged()
      Description copied from interface: ClangHighlightListener
      Method to invoke whenever the decompiler token highlights have changed.
      Specified by:
      tokenHighlightsChanged in interface ClangHighlightListener
    • tokenRenamed

      public void tokenRenamed(ClangToken token, String newName)
      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 renamed
      newName - the new name of the token
    • cloneHighlights

      public void cloneHighlights(DecompilerPanel sourcePanel)
      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

      public void setBackground(Color bg)
      Overrides:
      setBackground in class JComponent
    • getLayoutController

      public ClangLayoutController getLayoutController()
    • containsLocation

      public boolean containsLocation(ProgramLocation location)
    • setLocation

      public void setLocation(ProgramLocation location, ViewerPosition viewerPosition)
    • goToToken

      public void goToToken(ClangToken token)
    • setDecompilerHoverProvider

      public void setDecompilerHoverProvider(DecompilerHoverProvider provider)
    • dispose

      public void dispose()
    • getFontMetrics

      public FontMetrics getFontMetrics()
    • buttonPressed

      public void buttonPressed(FieldLocation location, Field field, MouseEvent ev)
      Description copied from interface: FieldMouseListener
      Called whenever the mouse button is pressed.
      Specified by:
      buttonPressed in interface FieldMouseListener
      Parameters:
      location - the field location of the mouse pointer
      field - the Field object that was clicked on
      ev - 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 interface FieldLocationListener
      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 interface FieldSelectionListener
      Parameters:
      selection - the new selection.
      trigger - indicates the cause of the selection changing
    • layoutsChanged

      public void layoutsChanged(List<AnchoredLayout> layouts)
      Specified by:
      layoutsChanged in interface LayoutListener
    • searchText

      public SearchLocation searchText(String text, FieldLocation startLocation, boolean forwardDirection)
    • searchTextRegex

      public SearchLocation searchTextRegex(String text, FieldLocation startLocation, boolean forwardDirection)
    • setSearchResults

      public void setSearchResults(SearchLocation searchLocation)
    • getSearchResults

      public ghidra.app.plugin.core.decompile.actions.FieldBasedSearchLocation getSearchResults()
    • getCurrentVariableHighlightColor

      public Color getCurrentVariableHighlightColor()
    • getMiddleMouseHighlightColor

      public Color getMiddleMouseHighlightColor()
    • getSpecialHighlightColor

      public 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 String getHighlightedText()
    • getTextUnderCursor

      public String getTextUnderCursor()
    • getSelectedText

      public String getSelectedText()
    • 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.
    • getTokenAtCursor

      public ClangToken getTokenAtCursor()
    • getLineNumber

      public int getLineNumber(int y)
      Get the line number for the given y position, relative to the scroll panel

      If 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

      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()
    • findTokensByName

      public List<ClangToken> findTokensByName(String name)
    • getViewerPosition

      public ViewerPosition getViewerPosition()
    • setViewerPosition

      public void setViewerPosition(ViewerPosition viewerPosition)
    • requestFocus

      public void requestFocus()
      Overrides:
      requestFocus in class JComponent
    • selectAll

      public void selectAll(EventTrigger trigger)
    • optionsChanged

      public void optionsChanged(DecompileOptions decompilerOptions)
    • addMarginProvider

      public void addMarginProvider(DecompilerMarginProvider provider)
    • removeMarginProvider

      public void removeMarginProvider(DecompilerMarginProvider provider)