Package ghidra.app.util.viewer.field
Class OpenCloseField
- java.lang.Object
-
- ghidra.app.util.viewer.field.OpenCloseField
-
- All Implemented Interfaces:
Field
,ListingField
public class OpenCloseField extends java.lang.Object implements ListingField
FactoryField class for displaying the open/close field.
-
-
Constructor Summary
Constructors Constructor Description OpenCloseField(FieldFactory factory, ProxyObj proxy, int indentLevel, java.awt.FontMetrics metrics, int x, int width, boolean isLast)
Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
contains(int x, int y)
Returns true if the given point is in this field.java.lang.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.java.awt.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 FieldFieldFormatModel
getFieldModel()
Returns the fieldModel that has 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 imaginary base line used for alignment of fields.int
getHeightBelow()
Returns the height below the imaginary base line used for alignment of fields.int
getNumCols(int row)
Returns the number of columns in the given row.int
getNumRows()
Returns the number of rows in this fieldint
getPreferredWidth()
The minimum required width to paint the contents of this fieldProxyObj
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 lineint
getStartX()
Returns the horizontal position of this field.int
getStartY()
Returns the vertical position of this field.java.lang.String
getText()
Returns a string containing all the text in the field.java.lang.String
getTextWithLineSeparators()
Returns a string containing all the text in the field with extra linefeedsint
getWidth()
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
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;void
paint(javax.swing.JComponent c, java.awt.Graphics g, PaintContext context, java.awt.Rectangle clip, FieldBackgroundColorManager map, RowColLocation cursorLoc, int rowHeight)
Paints this field.void
rowHeightChanged(int newHeightAbove, int newHeightBelow)
notifies field that the rowHeight changedint
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().void
toggleOpenCloseState()
Toggles the open state of this field.
-
-
-
Constructor Detail
-
OpenCloseField
public OpenCloseField(FieldFactory factory, ProxyObj proxy, int indentLevel, java.awt.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 Detail
-
getFieldFactory
public FieldFactory getFieldFactory()
Description copied from interface:ListingField
Returns the FieldFactory that generated this Field- Specified by:
getFieldFactory
in interfaceListingField
-
getFieldModel
public FieldFormatModel getFieldModel()
Description copied from interface:ListingField
Returns the fieldModel that has the FieldFactory that generated this field.- Specified by:
getFieldModel
in interfaceListingField
-
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 interfaceListingField
-
getHeightAbove
public int getHeightAbove()
Description copied from interface:ListingField
Returns the height above the imaginary base line used for alignment of fields.- Specified by:
getHeightAbove
in interfaceField
- Specified by:
getHeightAbove
in interfaceListingField
-
getHeightBelow
public int getHeightBelow()
Description copied from interface:ListingField
Returns the height below the imaginary base line used for alignment of fields.- Specified by:
getHeightBelow
in interfaceField
- Specified by:
getHeightBelow
in interfaceListingField
-
setYPos
public void setYPos(int yPos, int heightAbove, int heightBelow)
Sets the yPos relative to the overall layout.- Parameters:
yPos
- the starting Ypos 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.
-
getPreferredWidth
public int getPreferredWidth()
Description copied from interface:Field
The minimum required width to paint the contents of this field- Specified by:
getPreferredWidth
in interfaceField
- 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.
-
getStartX
public int getStartX()
Description copied from interface:Field
Returns the horizontal position of this field.
-
getStartY
public int getStartY()
Returns the vertical position of this field.
-
setStartY
public void setStartY(int startY)
Sets the starting vertical position of this field.- Parameters:
startY
- the starting vertical position.
-
paint
public void paint(javax.swing.JComponent c, java.awt.Graphics g, PaintContext context, java.awt.Rectangle clip, FieldBackgroundColorManager map, RowColLocation cursorLoc, int rowHeight)
Description copied from interface:Field
Paints this field.- Specified by:
paint
in interfaceField
- Parameters:
c
- the component to paint ontog
- the graphics context.context
- common paint parametersclip
- the clipping region to paint intomap
- 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 cursorrowHeight
- 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.
-
getNumRows
public int getNumRows()
Description copied from interface:Field
Returns the number of rows in this field- Specified by:
getNumRows
in interfaceField
-
getNumCols
public int getNumCols(int row)
Description copied from interface:Field
Returns the number of columns in the given row.- Specified by:
getNumCols
in interfaceField
- Parameters:
row
- the row from which to get 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.
-
getY
public int getY(int row)
Description copied from interface:Field
Returns the y coordinate for the given row.
-
getRow
public int getRow(int y)
Description copied from interface:Field
Returns the row containing the given y coordinate.
-
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.
-
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;
-
getCursorBounds
public java.awt.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 interfaceField
- Parameters:
row
- the text row.col
- the character postion.
-
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 interfaceField
- Parameters:
topOfScreen
- - the current y pos 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)
-
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.
-
rowHeightChanged
public void rowHeightChanged(int newHeightAbove, int newHeightBelow)
Description copied from interface:Field
notifies field that the rowHeight changed- Specified by:
rowHeightChanged
in interfaceField
- Parameters:
newHeightAbove
- the height above the baselinenewHeightBelow
- the height below the baseline.
-
getText
public java.lang.String getText()
Description copied from interface:Field
Returns a string containing all the text in the field.
-
getTextWithLineSeparators
public java.lang.String getTextWithLineSeparators()
Description copied from interface:Field
Returns a string containing all the text in the field with extra linefeeds- Specified by:
getTextWithLineSeparators
in interfaceField
- Returns:
-
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 interfaceField
- 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 interfaceField
- Parameters:
row
- the row.col
- the column.
-
getClickedObject
public java.lang.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 interfaceListingField
- Parameters:
fieldLocation
- The location that was clicked.- Returns:
- the object that was clicked
-
toggleOpenCloseState
public void toggleOpenCloseState()
Toggles the open state of this field.
-
-