Class OpenCloseField

java.lang.Object
ghidra.app.util.viewer.field.OpenCloseField
All Implemented Interfaces:
Field, ListingField

public class OpenCloseField extends Object implements ListingField
FactoryField class for displaying the open/close field.
  • Constructor Summary

    Constructors
    Constructor
    Description
    OpenCloseField(FieldFactory factory, ProxyObj<?> proxy, int indentLevel, FontMetrics metrics, int x, int width, boolean isLast)
    Constructor
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    contains(int x, int y)
    Returns true if the given point is in this field
    Returns the object that was clicked on a Field for the given FieldLocation.
    int
    getCol(int row, int x)
    Returns the cursor column position for the given x coordinate on the given row
    getCursorBounds(int row, int col)
    Returns a bounding rectangle for the cursor at the given position
    Returns the FieldFactory that generated this Field
    int
    Returns the height of this field when populated with the given data
    int
    Returns the height above the baseLine
    int
    Returns the height below the baseLine
    int
    getNumCols(int row)
    Returns the number of columns in the given row
    int
    Returns the number of data model rows represented by this field.
    int
    Returns the number of rows in this field
    int
    The minimum required width to paint the contents of this field
    Returns the object that the fieldFactory used to generate the information in this field.
    int
    getRow(int y)
    Returns the row containing the given y coordinate
    int
    getScrollableUnitIncrement(int topOfScreen, int direction, int max)
    Returns the amount to scroll to the next or previous line
    int
    Returns the horizontal position of this field
    int
    Returns the vertical position of this field.
    Returns a string containing all the text in the field
    Returns a string containing all the text in the field with extra newlines
    int
    Returns the current width of this field
    int
    getX(int row, int col)
    Returns the x coordinate for the given cursor position
    int
    getY(int row)
    Returns the y coordinate for the given row
    boolean
    Returns true if this field is "primary" (the most important) field; used to determine the "primary" line in the layout
    boolean
    isValid(int row, int col)
    Returns true if the given row and column represent a valid location for this field with the given data
    void
    paint(JComponent c, Graphics g, PaintContext context, Rectangle clip, FieldBackgroundColorManager map, RowColLocation cursorLoc, int rowHeight)
    Paints this field
    void
    rowHeightChanged(int newHeightAbove, int newHeightBelow)
    notifies field that the rowHeight changed
    int
    screenLocationToTextOffset(int row, int col)
    Returns the text offset in the overall field text string for the given row and column
    void
    setStartY(int startY)
    Sets the starting vertical position of this field.
    void
    setYPos(int yPos, int heightAbove, int heightBelow)
    Sets the yPos relative to the overall layout.
    Returns the row, column position for an offset into the string returned by getText()
    void
    Toggles the open state of this field.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • OpenCloseField

      public OpenCloseField(FieldFactory factory, ProxyObj<?> proxy, int indentLevel, FontMetrics metrics, int x, int width, boolean isLast)
      Constructor
      Parameters:
      factory - the FieldFactory that created this field.
      proxy - the object associated with this field.
      indentLevel - the indentation level of the data object.
      metrics - the FontMetrics used to render this field.
      x - the starting x position of this field.
      width - the width of this field.
      isLast - true if the data object is the last subcomponent at its level.
  • Method Details

    • getFieldFactory

      public FieldFactory getFieldFactory()
      Description copied from interface: ListingField
      Returns the FieldFactory that generated this Field
      Specified by:
      getFieldFactory in interface ListingField
      Returns:
      the FieldFactory that generated this Field
    • getProxy

      public ProxyObj<?> getProxy()
      Description copied from interface: ListingField
      Returns the object that the fieldFactory used to generate the information in this field.
      Specified by:
      getProxy in interface ListingField
      Returns:
      the object that the fieldFactory used to generate the information in this field.
    • getHeightAbove

      public int getHeightAbove()
      Description copied from interface: Field
      Returns the height above the baseLine
      Specified by:
      getHeightAbove in interface Field
      Returns:
      the height above
    • getHeightBelow

      public int getHeightBelow()
      Description copied from interface: Field
      Returns the height below the baseLine
      Specified by:
      getHeightBelow in interface Field
      Returns:
      the height below
    • setYPos

      public void setYPos(int yPos, int heightAbove, int heightBelow)
      Sets the yPos relative to the overall layout.
      Parameters:
      yPos - the starting Y position of the layout row.
      heightAbove - the heightAbove the alignment line in the layout row.
      heightBelow - the heightBelow the alignment line in the layout row.
    • getWidth

      public int getWidth()
      Description copied from interface: Field
      Returns the current width of this field
      Specified by:
      getWidth in interface Field
      Returns:
      the current width of this field
    • getPreferredWidth

      public int getPreferredWidth()
      Description copied from interface: Field
      The minimum required width to paint the contents of this field
      Specified by:
      getPreferredWidth in interface Field
      Returns:
      the minimum required width to paint the contents of this field
    • getHeight

      public int getHeight()
      Description copied from interface: Field
      Returns the height of this field when populated with the given data
      Specified by:
      getHeight in interface Field
      Returns:
      the height
    • getStartX

      public int getStartX()
      Description copied from interface: Field
      Returns the horizontal position of this field
      Specified by:
      getStartX in interface Field
      Returns:
      the position
    • getStartY

      public int getStartY()
      Returns the vertical position of this field.
      Returns:
      the position
    • setStartY

      public void setStartY(int startY)
      Sets the starting vertical position of this field.
      Parameters:
      startY - the starting vertical position.
    • paint

      public void paint(JComponent c, Graphics g, PaintContext context, Rectangle clip, FieldBackgroundColorManager map, RowColLocation cursorLoc, int rowHeight)
      Description copied from interface: Field
      Paints this field
      Specified by:
      paint in interface Field
      Parameters:
      c - the component to paint onto
      g - the graphics context
      context - common paint parameters
      clip - the clipping region to paint into
      map - contains background color information for the field
      cursorLoc - the row,column cursor location within the field or null if the field does not contain the cursor
      rowHeight - the number of pixels in each row of text in the field
    • contains

      public boolean contains(int x, int y)
      Description copied from interface: Field
      Returns true if the given point is in this field
      Specified by:
      contains in interface Field
      Parameters:
      x - the horizontal coordinate of the point
      y - the relative y position in this layout
      Returns:
      true if the given point is in this field
    • getNumDataRows

      public int getNumDataRows()
      Description copied from interface: Field
      Returns the number of data model rows represented by this field. Some fields may change the row count by wrapping or truncating. The value returned here will be the original data row count before any transformations were applied.
      Specified by:
      getNumDataRows in interface Field
      Returns:
      the number of data rows
    • getNumRows

      public int getNumRows()
      Description copied from interface: Field
      Returns the number of rows in this field
      Specified by:
      getNumRows in interface Field
      Returns:
      the number of rows in this field
    • getNumCols

      public int getNumCols(int row)
      Description copied from interface: Field
      Returns the number of columns in the given row
      Specified by:
      getNumCols in interface Field
      Parameters:
      row - the row from which to get the number of columns; this is the screen row
      Returns:
      the number of columns
    • getX

      public int getX(int row, int col)
      Description copied from interface: Field
      Returns the x coordinate for the given cursor position
      Specified by:
      getX in interface Field
      Parameters:
      row - the text row of interest
      col - the character column
      Returns:
      the x value
    • getY

      public int getY(int row)
      Description copied from interface: Field
      Returns the y coordinate for the given row
      Specified by:
      getY in interface Field
      Parameters:
      row - the text row of interest
      Returns:
      the y value
    • getRow

      public int getRow(int y)
      Description copied from interface: Field
      Returns the row containing the given y coordinate
      Specified by:
      getRow in interface Field
      Parameters:
      y - vertical pixel coordinate relative to the top of the screen
      Returns:
      the row
    • getCol

      public int getCol(int row, int x)
      Description copied from interface: Field
      Returns the cursor column position for the given x coordinate on the given row
      Specified by:
      getCol in interface Field
      Parameters:
      row - the text row to find the column on
      x - the horizontal pixel coordinate for which to find the character position
      Returns:
      the column
    • isValid

      public boolean isValid(int row, int col)
      Description copied from interface: Field
      Returns true if the given row and column represent a valid location for this field with the given data
      Specified by:
      isValid in interface Field
      Parameters:
      row - the text row
      col - the character position
      Returns:
      true if valid
    • getCursorBounds

      public Rectangle getCursorBounds(int row, int col)
      Description copied from interface: Field
      Returns a bounding rectangle for the cursor at the given position
      Specified by:
      getCursorBounds in interface Field
      Parameters:
      row - the text row
      col - the character position
      Returns:
      the rectangle
    • getScrollableUnitIncrement

      public int getScrollableUnitIncrement(int topOfScreen, int direction, int max)
      Description copied from interface: Field
      Returns the amount to scroll to the next or previous line
      Specified by:
      getScrollableUnitIncrement in interface Field
      Parameters:
      topOfScreen - the current y position of the top of the screen
      direction - the direction of the scroll (1 down, -1 up)
      max - the maximum amount to scroll for the entire row - will be positive for down, and negative for up)
      Returns:
      the scroll amount
    • isPrimary

      public boolean isPrimary()
      Description copied from interface: Field
      Returns true if this field is "primary" (the most important) field; used to determine the "primary" line in the layout
      Specified by:
      isPrimary in interface Field
      Returns:
      true if this field is "primary"
    • rowHeightChanged

      public void rowHeightChanged(int newHeightAbove, int newHeightBelow)
      Description copied from interface: Field
      notifies field that the rowHeight changed
      Specified by:
      rowHeightChanged in interface Field
      Parameters:
      newHeightAbove - the height above the baseline
      newHeightBelow - the height below the baseline
    • getText

      public String getText()
      Description copied from interface: Field
      Returns a string containing all the text in the field
      Specified by:
      getText in interface Field
      Returns:
      the string
    • getTextWithLineSeparators

      public String getTextWithLineSeparators()
      Description copied from interface: Field
      Returns a string containing all the text in the field with extra newlines
      Specified by:
      getTextWithLineSeparators in interface Field
      Returns:
      a string containing all the text in the field with extra newlines
    • textOffsetToScreenLocation

      public RowColLocation textOffsetToScreenLocation(int textOffset)
      Description copied from interface: Field
      Returns the row, column position for an offset into the string returned by getText()
      Specified by:
      textOffsetToScreenLocation in interface Field
      Parameters:
      textOffset - the offset into the entire text string for this field
      Returns:
      a RowColLocation that contains the row,column location in the field for a position in the overall field text
    • screenLocationToTextOffset

      public int screenLocationToTextOffset(int row, int col)
      Description copied from interface: Field
      Returns the text offset in the overall field text string for the given row and column
      Specified by:
      screenLocationToTextOffset in interface Field
      Parameters:
      row - the row
      col - the column
      Returns:
      the offset
    • getClickedObject

      public Object getClickedObject(FieldLocation fieldLocation)
      Description copied from interface: ListingField
      Returns the object that was clicked on a Field for the given FieldLocation. This may be the field itself or a lower-level entity, such as a FieldElement.
      Specified by:
      getClickedObject in interface ListingField
      Parameters:
      fieldLocation - The location that was clicked.
      Returns:
      the object that was clicked
    • toggleOpenCloseState

      public void toggleOpenCloseState()
      Toggles the open state of this field.