Package docking.widgets.fieldpanel.field
Class VerticalLayoutTextField
- java.lang.Object
-
- docking.widgets.fieldpanel.field.VerticalLayoutTextField
-
- Direct Known Subclasses:
FlowLayoutTextField
,WrappingVerticalLayoutTextField
public class VerticalLayoutTextField extends java.lang.Object implements TextField
This class provides a TextField implementation that takes multiple FieldElements and places each on its own line within the field.
-
-
Field Summary
Fields Modifier and Type Field Description protected HighlightFactory
hlFactory
protected boolean
isClipped
protected int
preferredWidth
protected int
startX
protected java.util.List<docking.widgets.fieldpanel.field.VerticalLayoutTextField.FieldRow>
subFields
protected int
width
-
Constructor Summary
Constructors Modifier Constructor Description VerticalLayoutTextField(FieldElement[] textElements, int startX, int width, int maxLines, HighlightFactory hlFactory)
Deprecated, for removal: This API element is subject to removal in a future version.use the constructor that takes a listVerticalLayoutTextField(java.util.List<FieldElement> textElements, int startX, int width, int maxLines, HighlightFactory hlFactory)
This constructor will create a text field from an array of FieldElements, putting each element on its own line.protected
VerticalLayoutTextField(java.util.List<FieldElement> textElements, int startX, int width, int maxLines, HighlightFactory hlFactory, java.lang.String rowSeparator)
This constructor will create a text field from an array of FieldElements, putting each element on its own line.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
calculateHeight()
boolean
contains(int x, int y)
Returns true if the given point is in this fieldprotected TextField
createFieldForLine(FieldElement element)
Create the text field for given field elementRowColLocation
dataToScreenLocation(int dataRow, int dataColumn)
Translates a data row and column into a screen row and column.int
getCol(int row, int x)
Returns the cursor column position for the given x coordinate on the given rowjava.awt.Rectangle
getCursorBounds(int row, int col)
Returns a bounding rectangle for the cursor at the given positionFieldElement
getFieldElement(int screenRow, int screenColumn)
Returns the FieldElement at the given screen location.int
getHeight()
Returns the height of this field when populated with the given dataint
getHeightAbove()
Returns the height above the baseLineint
getHeightBelow()
Returns the height below the baseLineprotected java.util.List<java.lang.String>
getLines()
Returns the view's text lines of this fieldint
getNumCols(int row)
Returns the number of columns in the given rowint
getNumDataRows()
Returns the number of data model rows represented by this field.int
getNumRows()
Returns the number of rows in this fieldint
getPreferredWidth()
The minimum required width to paint the contents of this fieldint
getRow(int y)
Returns the row containing the given y coordinateint
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 fieldjava.lang.String
getText()
Returns a string containing all the text in the fieldjava.lang.String
getTextWithLineSeparators()
Returns a string containing all the text in the field with extra newlinesint
getWidth()
Returns the current width of this fieldint
getX(int row, int col)
Returns the x coordinate for the given cursor positionint
getY(int row)
Returns the y coordinate for the given rowboolean
isClipped()
Returns true if the field is not displaying all the text informationboolean
isPrimary()
Returns true if this field is "primary" (the most important) field; used to determine the "primary" line in the layoutboolean
isValid(int row, int col)
Returns true if the given row and column represent a valid location for this field with the given dataprotected java.util.List<docking.widgets.fieldpanel.field.VerticalLayoutTextField.FieldRow>
layoutElements(java.util.List<FieldElement> textElements, int maxLines)
void
paint(javax.swing.JComponent c, java.awt.Graphics g, PaintContext context, java.awt.Rectangle clip, FieldBackgroundColorManager colorManager, RowColLocation cursorLoc, int rowHeight)
Paints this fieldvoid
rowHeightChanged(int heightAbove1, int heightBelow)
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 columnRowColLocation
screenToDataLocation(int screenRow, int screenColumn)
Translates a screen coordinate to a row and column in the data from the factoryvoid
setPrimary(boolean state)
Sets the primary State.RowColLocation
textOffsetToScreenLocation(int textOffset)
Returns the row, column position for an offset into the string returned by getText()java.lang.String
toString()
-
-
-
Field Detail
-
subFields
protected java.util.List<docking.widgets.fieldpanel.field.VerticalLayoutTextField.FieldRow> subFields
-
startX
protected int startX
-
width
protected int width
-
preferredWidth
protected int preferredWidth
-
hlFactory
protected HighlightFactory hlFactory
-
isClipped
protected boolean isClipped
-
-
Constructor Detail
-
VerticalLayoutTextField
@Deprecated(since="10.1", forRemoval=true) public VerticalLayoutTextField(FieldElement[] textElements, int startX, int width, int maxLines, HighlightFactory hlFactory)
Deprecated, for removal: This API element is subject to removal in a future version.use the constructor that takes a listThis constructor will create a text field from an array of FieldElements, putting each element on its own line.- Parameters:
textElements
- the FieldElements to displaystartX
- the x position to draw the elementwidth
- the max width allocated to this fieldmaxLines
- the max number of lines to displayhlFactory
- the highlight factory
-
VerticalLayoutTextField
public VerticalLayoutTextField(java.util.List<FieldElement> textElements, int startX, int width, int maxLines, HighlightFactory hlFactory)
This constructor will create a text field from an array of FieldElements, putting each element on its own line.- Parameters:
textElements
- the FieldElements to displaystartX
- the x position to draw the elementwidth
- the max width allocated to this fieldmaxLines
- the max number of lines to displayhlFactory
- the highlight factory
-
VerticalLayoutTextField
protected VerticalLayoutTextField(java.util.List<FieldElement> textElements, int startX, int width, int maxLines, HighlightFactory hlFactory, java.lang.String rowSeparator)
This constructor will create a text field from an array of FieldElements, putting each element on its own line.- Parameters:
textElements
- the FieldElements to displaystartX
- the x position to draw the elementwidth
- the max width allocated to this fieldmaxLines
- the max number of lines to displayhlFactory
- the highlight factoryrowSeparator
- The string used to space lines of text when concatenated by the getText() method.
-
-
Method Detail
-
calculateHeight
protected void calculateHeight()
-
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 newlines- Specified by:
getTextWithLineSeparators
in interfaceField
- Returns:
- a string containing all the text in the field with extra newlines
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
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
-
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 interfaceField
- 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 interfaceField
- 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 interfaceField
- Parameters:
row
- the row from which to get the number of columns; this is the screen row- Returns:
- the number of columns
-
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
-
getY
public int getY(int row)
Description copied from interface:Field
Returns the y coordinate for the given row
-
getX
public int getX(int row, int col)
Description copied from interface:Field
Returns the x coordinate for the given cursor position
-
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
-
paint
public void paint(javax.swing.JComponent c, java.awt.Graphics g, PaintContext context, java.awt.Rectangle clip, FieldBackgroundColorManager colorManager, 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 contextcontext
- common paint parametersclip
- the clipping region to paint intocolorManager
- contains background color information for the fieldcursorLoc
- 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
-
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 rowcol
- the character position- Returns:
- the rectangle
-
contains
public boolean contains(int x, int y)
Description copied from interface:Field
Returns true if the given point is in this field
-
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 position of the top of the screendirection
- 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
-
setPrimary
public void setPrimary(boolean state)
Sets the primary State.- Specified by:
setPrimary
in interfaceTextField
- Parameters:
state
- the state to set.
-
getHeightAbove
public int getHeightAbove()
Description copied from interface:Field
Returns the height above the baseLine- Specified by:
getHeightAbove
in interfaceField
- Returns:
- the height above
-
getHeightBelow
public int getHeightBelow()
Description copied from interface:Field
Returns the height below the baseLine- Specified by:
getHeightBelow
in interfaceField
- Returns:
- the height below
-
rowHeightChanged
public void rowHeightChanged(int heightAbove1, int heightBelow)
Description copied from interface:Field
notifies field that the rowHeight changed- Specified by:
rowHeightChanged
in interfaceField
- Parameters:
heightAbove1
- the height above the baselineheightBelow
- the height below the baseline
-
getFieldElement
public FieldElement getFieldElement(int screenRow, int screenColumn)
Description copied from interface:TextField
Returns the FieldElement at the given screen location.- Specified by:
getFieldElement
in interfaceTextField
- Parameters:
screenRow
- the row on the screenscreenColumn
- the column on the screen- Returns:
- the FieldElement at the given screen location.
-
layoutElements
protected java.util.List<docking.widgets.fieldpanel.field.VerticalLayoutTextField.FieldRow> layoutElements(java.util.List<FieldElement> textElements, int maxLines)
-
createFieldForLine
protected TextField createFieldForLine(FieldElement element)
Create the text field for given field element- Parameters:
element
- the element- Returns:
- the field
-
screenToDataLocation
public RowColLocation screenToDataLocation(int screenRow, int screenColumn)
Description copied from interface:TextField
Translates a screen coordinate to a row and column in the data from the factory- Specified by:
screenToDataLocation
in 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.
-
dataToScreenLocation
public RowColLocation dataToScreenLocation(int dataRow, int dataColumn)
Description copied from interface:TextField
Translates a data row and column into a screen row and column.- Specified by:
dataToScreenLocation
in interfaceTextField
- Parameters:
dataRow
- row as defined by the factorydataColumn
- the character offset into the dataRow- Returns:
- row and column in the screen coordinate system; a
DefaultRowColLocation
if this field does not contain the given column
-
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 rowcol
- the column- Returns:
- the offset
-
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
-
isClipped
public boolean isClipped()
Description copied from interface:TextField
Returns true if the field is not displaying all the text information
-
getLines
protected java.util.List<java.lang.String> getLines()
Returns the view's text lines of this field- Returns:
- the lines
-
-