Package ghidra.app.util.viewer.field
Class ListingTextField
- java.lang.Object
-
- ghidra.app.util.viewer.field.ListingTextField
-
- All Implemented Interfaces:
Field,TextField,ListingField
- Direct Known Subclasses:
ErrorListingField
public class ListingTextField extends java.lang.Object implements ListingField, TextField
ListingField implementation for text fields.
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedListingTextField(FieldFactory factory, ProxyObj proxy, TextField field)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancontains(int x, int y)Returns true if the given point is in this field.static ListingTextFieldcreateMultilineTextField(FieldFactory factory, ProxyObj proxy, FieldElement[] textElements, int startX, int width, int maxLines, HighlightProvider provider)Displays the given array of text, each on its own line.static ListingTextFieldcreatePackedTextField(FieldFactory factory, ProxyObj proxy, FieldElement[] textElements, int startX, int width, int maxLines, HighlightProvider provider)Displays the list of text strings, packing as many as it can on a line before wrapping to the next line.static ListingTextFieldcreateSingleLineTextField(FieldFactory factory, ProxyObj proxy, FieldElement fieldElement, int startX, int width, HighlightProvider provider)Creates a new ListingTextField that displays the text on a single line, clipping as needed.static ListingTextFieldcreateSingleLineTextFieldWithReverseClipping(AddressFieldFactory factory, ProxyObj proxy, FieldElement fieldElement, int startX, int width, HighlightProvider provider)static ListingTextFieldcreateWordWrappedTextField(FieldFactory factory, ProxyObj proxy, FieldElement fieldElement, int startX, int width, int maxLines, HighlightProvider provider)Displays the given text, word-wrapping as needed to avoid clipping (up to the max number of lines.)RowColLocationdataToScreenLocation(int dataRow, int dataColumn)Translates a data row and column into a screen row and column.java.lang.ObjectgetClickedObject(FieldLocation fieldLocation)Returns the object that was clicked on a Field for the given FieldLocation.intgetCol(int row, int x)Returns the cursor column position for the given x coordinate on the given row.java.awt.RectanglegetCursorBounds(int row, int col)Returns a bounding rectangle for the cursor at the given position.FieldElementgetFieldElement(int screenRow, int screenColumn)Returns the FieldElement at the given screen location.FieldFactorygetFieldFactory()Returns the FieldFactory that generated this FieldFieldFormatModelgetFieldModel()Returns the fieldModel that has the FieldFactory that generated this field.intgetHeight()Returns the height of this field when populated with the given data.intgetHeightAbove()Returns the height above the imaginary base line used for alignment of fields.intgetHeightBelow()Returns the height below the imaginary base line used for alignment of fields.intgetNumCols(int row)Returns the number of columns in the given row.intgetNumRows()Returns the number of rows in this fieldintgetPreferredWidth()The minimum required width to paint the contents of this fieldProxyObjgetProxy()Returns the object that the fieldFactory used to generate the information in this field.intgetRow(int y)Returns the row containing the given y coordinate.intgetScrollableUnitIncrement(int topOfScreen, int direction, int max)Returns the amount to scroll to the next or previous lineintgetStartX()Returns the horizontal position of this field.java.lang.StringgetText()Returns a string containing all the text in the field.java.lang.StringgetTextWithLineSeparators()Returns a string containing all the text in the field with extra linefeedsintgetWidth()Returns the current width of this field.intgetX(int row, int col)Returns the x coordinate for the given cursor position.intgetY(int row)Returns the y coordinate for the given row.booleanisClipped()Returns true if the field is not displaying all the text informationbooleanisPrimary()Returns true if this field is "primary" (the most important) field; used to determine the "primary" line in the layout.booleanisValid(int row, int col)Returns true if the given row and column represent a valid location for this field with the given data;voidpaint(javax.swing.JComponent c, java.awt.Graphics g, PaintContext context, java.awt.Rectangle clip, FieldBackgroundColorManager map, RowColLocation cursorLoc, int rowHeight)Paints this field.voidrowHeightChanged(int heightAbove, int heightBelow)notifies field that the rowHeight changedintscreenLocationToTextOffset(int row, int col)Returns the text offset in the overall field text string for the given row and column.RowColLocationscreenToDataLocation(int screenRow, int screenColumn)Translates a screen coordinate to a row and column in the data from the factoryvoidsetPrimary(boolean b)Sets this field to be primary such that its row is primaryRowColLocationtextOffsetToScreenLocation(int textOffset)Returns the row, column position for an offset into the string returned by getText().java.lang.StringtoString()
-
-
-
Field Detail
-
field
protected TextField field
-
-
Constructor Detail
-
ListingTextField
protected ListingTextField(FieldFactory factory, ProxyObj proxy, TextField field)
-
-
Method Detail
-
createSingleLineTextField
public static ListingTextField createSingleLineTextField(FieldFactory factory, ProxyObj proxy, FieldElement fieldElement, int startX, int width, HighlightProvider provider)
Creates a new ListingTextField that displays the text on a single line, clipping as needed.- Parameters:
factory- the field factory that generated this fieldproxy- the object used to populate this fieldfieldElement- the individual element within the field. This holds text, attributes and location information.startX- the starting X position of the fieldwidth- the width of the fieldprovider- the highlight provider.
-
createSingleLineTextFieldWithReverseClipping
public static ListingTextField createSingleLineTextFieldWithReverseClipping(AddressFieldFactory factory, ProxyObj proxy, FieldElement fieldElement, int startX, int width, HighlightProvider provider)
-
createWordWrappedTextField
public static ListingTextField createWordWrappedTextField(FieldFactory factory, ProxyObj proxy, FieldElement fieldElement, int startX, int width, int maxLines, HighlightProvider provider)
Displays the given text, word-wrapping as needed to avoid clipping (up to the max number of lines.)- Parameters:
factory- the field factory that generated this fieldproxy- the object used to populate this fieldfieldElement- the individual element within the field. This holds text, attributes and location information.startX- the starting X position of the fieldwidth- the width of the fieldmaxLines- the maxLines to display.provider- the highlight provider.
-
createPackedTextField
public static ListingTextField createPackedTextField(FieldFactory factory, ProxyObj proxy, FieldElement[] textElements, int startX, int width, int maxLines, HighlightProvider provider)
Displays the list of text strings, packing as many as it can on a line before wrapping to the next line.- Parameters:
factory- the field factory that generated this fieldproxy- the object used to populate this fieldtextElements- the array of elements for the field. Each of these holds text, attributes and location information.startX- the starting X position of the fieldwidth- the width of the fieldmaxLines- the maxLines to display.provider- the highlight provider.
-
createMultilineTextField
public static ListingTextField createMultilineTextField(FieldFactory factory, ProxyObj proxy, FieldElement[] textElements, int startX, int width, int maxLines, HighlightProvider provider)
Displays the given array of text, each on its own line.- Parameters:
factory- the field factory that generated this fieldproxy- the object used to populate this fieldtextElements- the array of elements for the field. Each of these holds text, attributes and location information.startX- the starting X position of the fieldwidth- the widht of the fieldmaxLines- the maxLines to display.provider- the highlight provider
-
setPrimary
public void setPrimary(boolean b)
Description copied from interface:TextFieldSets this field to be primary such that its row is primary- Specified by:
setPrimaryin interfaceTextField
-
dataToScreenLocation
public RowColLocation dataToScreenLocation(int dataRow, int dataColumn)
Description copied from interface:TextFieldTranslates a data row and column into a screen row and column.- Specified by:
dataToScreenLocationin interfaceTextField- Parameters:
dataRow- row as defined by the factorydataColumn- the character offset into the dataRow- Returns:
- row and column in the screen coordinate system.
-
screenToDataLocation
public RowColLocation screenToDataLocation(int screenRow, int screenColumn)
Description copied from interface:TextFieldTranslates a screen coordinate to a row and column in the data from the factory- Specified by:
screenToDataLocationin interfaceTextField- Parameters:
screenRow- the row in the displayed field text.screenColumn- the column in the displayed field text.- Returns:
- a RowColLocation containing the row and column within the data from the factory.
-
getWidth
public int getWidth()
Description copied from interface:FieldReturns the current width of this field.
-
getPreferredWidth
public int getPreferredWidth()
Description copied from interface:FieldThe minimum required width to paint the contents of this field- Specified by:
getPreferredWidthin interfaceField- Returns:
- the minimum required width to paint the contents of this field
-
getHeight
public int getHeight()
Description copied from interface:FieldReturns the height of this field when populated with the given data.
-
getHeightAbove
public int getHeightAbove()
Description copied from interface:ListingFieldReturns the height above the imaginary base line used for alignment of fields.- Specified by:
getHeightAbovein interfaceField- Specified by:
getHeightAbovein interfaceListingField
-
getHeightBelow
public int getHeightBelow()
Description copied from interface:ListingFieldReturns the height below the imaginary base line used for alignment of fields.- Specified by:
getHeightBelowin interfaceField- Specified by:
getHeightBelowin interfaceListingField
-
getStartX
public int getStartX()
Description copied from interface:FieldReturns the horizontal position of this field.
-
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:FieldPaints this field.- Specified by:
paintin 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:FieldReturns true if the given point is in this field.
-
getNumRows
public int getNumRows()
Description copied from interface:FieldReturns the number of rows in this field- Specified by:
getNumRowsin interfaceField
-
getNumCols
public int getNumCols(int row)
Description copied from interface:FieldReturns the number of columns in the given row.- Specified by:
getNumColsin 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:FieldReturns the x coordinate for the given cursor position.
-
getY
public int getY(int row)
Description copied from interface:FieldReturns the y coordinate for the given row.
-
getRow
public int getRow(int y)
Description copied from interface:FieldReturns the row containing the given y coordinate.
-
getCol
public int getCol(int row, int x)Description copied from interface:FieldReturns 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:FieldReturns 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:FieldReturns a bounding rectangle for the cursor at the given position.- Specified by:
getCursorBoundsin interfaceField- Parameters:
row- the text row.col- the character postion.
-
getScrollableUnitIncrement
public int getScrollableUnitIncrement(int topOfScreen, int direction, int max)Description copied from interface:FieldReturns the amount to scroll to the next or previous line- Specified by:
getScrollableUnitIncrementin 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:FieldReturns true if this field is "primary" (the most important) field; used to determine the "primary" line in the layout.
-
rowHeightChanged
public void rowHeightChanged(int heightAbove, int heightBelow)Description copied from interface:Fieldnotifies field that the rowHeight changed- Specified by:
rowHeightChangedin interfaceField- Parameters:
heightAbove- the height above the baselineheightBelow- the height below the baseline.
-
getText
public java.lang.String getText()
Description copied from interface:FieldReturns a string containing all the text in the field.
-
getTextWithLineSeparators
public java.lang.String getTextWithLineSeparators()
Description copied from interface:FieldReturns a string containing all the text in the field with extra linefeeds- Specified by:
getTextWithLineSeparatorsin interfaceField- Returns:
-
textOffsetToScreenLocation
public RowColLocation textOffsetToScreenLocation(int textOffset)
Description copied from interface:FieldReturns the row, column position for an offset into the string returned by getText().- Specified by:
textOffsetToScreenLocationin 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:FieldReturns the text offset in the overall field text string for the given row and column.- Specified by:
screenLocationToTextOffsetin interfaceField- Parameters:
row- the row.col- the column.
-
getFieldFactory
public FieldFactory getFieldFactory()
Description copied from interface:ListingFieldReturns the FieldFactory that generated this Field- Specified by:
getFieldFactoryin interfaceListingField
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getProxy
public ProxyObj getProxy()
Description copied from interface:ListingFieldReturns the object that the fieldFactory used to generate the information in this field.- Specified by:
getProxyin interfaceListingField
-
getFieldModel
public FieldFormatModel getFieldModel()
Description copied from interface:ListingFieldReturns the fieldModel that has the FieldFactory that generated this field.- Specified by:
getFieldModelin interfaceListingField
-
isClipped
public boolean isClipped()
Description copied from interface:TextFieldReturns true if the field is not displaying all the text information
-
getClickedObject
public java.lang.Object getClickedObject(FieldLocation fieldLocation)
Description copied from interface:ListingFieldReturns 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:
getClickedObjectin interfaceListingField- Parameters:
fieldLocation- The location that was clicked.- Returns:
- the object that was clicked
-
getFieldElement
public FieldElement getFieldElement(int screenRow, int screenColumn)
Description copied from interface:TextFieldReturns the FieldElement at the given screen location.- Specified by:
getFieldElementin interfaceTextField- Parameters:
screenRow- the row on the screenscreenColumn- the column on the screen- Returns:
- the FieldElement at the given screen location.
-
-