Package ghidra.app.util.viewer.field

# Class AbstractOpenCloseField

java.lang.Object
ghidra.app.util.viewer.field.AbstractOpenCloseField

All Implemented Interfaces:
  `Field`, `ListingField`

Direct Known Subclasses:
  `OpenCloseField`, `VariableOpenCloseField`

public abstract class AbstractOpenCloseField extends Object implements ListingField
FactoryField class for displaying the open/close field.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static final GIcon`
  `CLOSED_ICON`
  `protected int`
  `fieldWidth`
  `protected int`
  `heightAbove`
  `protected int`
  `heightBelow`
  `protected boolean`
  `isOpen`
  `protected static final GIcon`
  `OPEN_ICON`
  `protected ProxyObj<?>`
  `proxy`
  `protected int`
  `startX`
  `protected int`
  `startY`
  `protected int`
  `toggleHandleSize`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractOpenCloseField(FieldFactory factory, ProxyObj<?> proxy, FontMetrics metrics, int x, int width)`
  Constructor

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `contains(int x, int y)`
  Returns true if the given point is in this field
  `Object`
  `getClickedObject(FieldLocation fieldLocation)`
  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
  `Rectangle`
  `getCursorBounds(int row, int col)`
  Returns a bounding rectangle for the cursor at the given position
  `FieldFactory`
  `getFieldFactory()`
  Returns the FieldFactory that generated this Field
  `int`
  `getHeight()`
  Returns the height of this field when populated with the given data
  `int`
  `getHeightAbove()`
  Returns the height above the baseLine
  `int`
  `getHeightBelow()`
  Returns the height below the baseLine
  `int`
  `getNumCols(int row)`
  Returns the number of columns in the given row
  `int`
  `getNumDataRows()`
  Returns the number of data model rows represented by this field.
  `int`
  `getNumRows()`
  Returns the number of rows in this field
  `int`
  `getPreferredWidth()`
  The minimum required width to paint the contents of this field
  `ProxyObj<?>`
  `getProxy()`
  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`
  `getStartX()`
  Returns the horizontal position of this field
  `int`
  `getStartY()`
  Returns the vertical position of this field.
  `String`
  `getText()`
  Returns a string containing all the text in the field
  `String`
  `getTextWithLineSeparators()`
  Returns a string containing all the text in the field with extra newlines
  `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`
  `isPrimary()`
  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
  `protected void`
  `paintCursor(Graphics g, Color cursorColor, RowColLocation cursorLoc)`
  `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.
  `RowColLocation`
  `textOffsetToScreenLocation(int textOffset)`
  Returns the row, column position for an offset into the string returned by getText()
  `abstract void`
  `toggleOpenCloseState()`
  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`

  ### Methods inherited from interface docking.widgets.fieldpanel.field.Field

  `getWidth, paint`

- ## Field Details

  - ### OPEN_ICON

    protected static final GIcon OPEN_ICON

  - ### CLOSED_ICON

    protected static final GIcon CLOSED_ICON

  - ### startX

    protected int startX

  - ### startY

    protected int startY

  - ### fieldWidth

    protected int fieldWidth

  - ### heightAbove

    protected int heightAbove

  - ### heightBelow

    protected int heightBelow

  - ### proxy

    protected ProxyObj<?> proxy

  - ### isOpen

    protected boolean isOpen

  - ### toggleHandleSize

    protected int toggleHandleSize

- ## Constructor Details

  - ### AbstractOpenCloseField

    public AbstractOpenCloseField(FieldFactory factory, ProxyObj<?> proxy, FontMetrics metrics, int x, int width)
    Constructor
    Parameters:
      `factory` - the FieldFactory that created this field.
      `proxy` - the object associated with this field.
      `metrics` - the FontMetrics used to render this field.
      `x` - the starting x position of this field.
      `width` - the width of this field.

- ## 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.

  - ### 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.

  - ### paintCursor

    protected void paintCursor(Graphics g, Color cursorColor, RowColLocation cursorLoc)

  - ### 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 abstract void toggleOpenCloseState()
    Toggles the open state of this field.