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. It also can take a single FieldElements and word wrap,creating new FieldElements (one per line).
-
-
Field Summary
Fields Modifier and Type Field Description protected HighlightFactoryhlFactoryprotected booleanisClippedprotected intpreferredWidthprotected intstartXprotected java.util.List<Field>subFieldsprotected FieldElement[]textElementsprotected intwidth
-
Constructor Summary
Constructors Modifier Constructor Description VerticalLayoutTextField(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.protectedVerticalLayoutTextField(FieldElement[] textElements, int startX, int width, int maxLines, HighlightFactory hlFactory, java.lang.String lineDelimiter)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 voidcalculateHeight()booleancontains(int x, int y)Returns true if the given point is in this field.RowColLocationdataToScreenLocation(int dataRow, int dataColumn)Finds the corresponding row, column for string index, and offsetprotected java.lang.StringgenerateText()protected java.lang.StringgenerateText(java.lang.String delimiter)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.intgetHeight()Returns the height of this field when populated with the given data.intgetHeightAbove()Returns the height above the baseLine.intgetHeightBelow()Returns the height below the baseLine.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 fieldintgetRow(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.util.List<Field>getSubfields()Returns the list of subfields in 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;protected java.util.List<Field>layoutElements(int maxLines)voidpaint(javax.swing.JComponent c, java.awt.Graphics g, PaintContext context, FieldBackgroundColorManager colorManager, RowColLocation cursorLoc, int rowHeight)Paints this field.voidrowHeightChanged(int heightAbove1, 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 the row and column to a String index and character offset into that string.voidsetPrimary(boolean state)Sets the primary State.RowColLocationtextOffsetToScreenLocation(int textOffset)Returns the row, column position for an offset into the string returned by getText().java.lang.StringtoString()
-
-
-
Field Detail
-
textElements
protected FieldElement[] textElements
-
subFields
protected java.util.List<Field> subFields
-
startX
protected int startX
-
width
protected int width
-
preferredWidth
protected int preferredWidth
-
hlFactory
protected HighlightFactory hlFactory
-
isClipped
protected boolean isClipped
-
-
Constructor Detail
-
VerticalLayoutTextField
public VerticalLayoutTextField(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(FieldElement[] textElements, int startX, int width, int maxLines, HighlightFactory hlFactory, java.lang.String lineDelimiter)
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 factorylineDelimiter- The string 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:FieldReturns a string containing all the text in the field.- Specified by:
getTextin interfaceField- See Also:
Field.getText()
-
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:
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object- See Also:
Object.toString()
-
getWidth
public int getWidth()
Description copied from interface:FieldReturns the current width of this field.- Specified by:
getWidthin interfaceField- See Also:
Field.getWidth()
-
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.- Specified by:
getHeightin interfaceField- See Also:
Field.getHeight()
-
getStartX
public int getStartX()
Description copied from interface:FieldReturns the horizontal position of this field.- Specified by:
getStartXin interfaceField- See Also:
Field.getStartX()
-
getNumRows
public int getNumRows()
Description copied from interface:FieldReturns the number of rows in this field- Specified by:
getNumRowsin interfaceField- See Also:
Field.getNumRows()
-
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.- See Also:
Field.getNumCols(int)
-
getRow
public int getRow(int y)
Description copied from interface:FieldReturns the row containing the given y coordinate.- Specified by:
getRowin interfaceField- Parameters:
y- vertical pixel coordinate relative to the top of the screen.- See Also:
Field.getRow(int)
-
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.- Specified by:
getColin interfaceField- Parameters:
row- the text row to find the column on.x- the horizontal pixel coordinate for which to find the character position.- See Also:
Field.getCol(int, int)
-
getY
public int getY(int row)
Description copied from interface:FieldReturns the y coordinate for the given row.- Specified by:
getYin interfaceField- Parameters:
row- the text row of interest.- See Also:
Field.getY(int)
-
getX
public int getX(int row, int col)Description copied from interface:FieldReturns the x coordinate for the given cursor position.- Specified by:
getXin interfaceField- Parameters:
row- the text row of interest.col- the character column.- See Also:
Field.getX(int, int)
-
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;- Specified by:
isValidin interfaceField- Parameters:
row- the text row.col- the character position.- See Also:
Field.isValid(int, int)
-
paint
public void paint(javax.swing.JComponent c, java.awt.Graphics g, PaintContext context, FieldBackgroundColorManager colorManager, RowColLocation cursorLoc, int rowHeight)Description copied from interface:FieldPaints this field.- Specified by:
paintin interfaceFieldg- the graphics context.context- common paint parameterscolorManager- 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- See Also:
docking.widgets.fieldpanel.field.Field#paint(java.awt.Graphics, docking.widgets.fieldpanel.internal.PaintContext, boolean, docking.widgets.fieldpanel.support.RowColLocation)
-
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.- See Also:
Field.getCursorBounds(int, int)
-
contains
public boolean contains(int x, int y)Description copied from interface:FieldReturns true if the given point is in this field.- Specified by:
containsin interfaceField- Parameters:
x- the horizontal coordinate of the point.y- the relatve y position in this layout- See Also:
Field.contains(int, int)
-
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)- See Also:
Field.getScrollableUnitIncrement(int, int, int)
-
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.- Specified by:
isPrimaryin interfaceField- See Also:
Field.isPrimary()
-
setPrimary
public void setPrimary(boolean state)
Sets the primary State.- Specified by:
setPrimaryin interfaceTextField- Parameters:
state- the state to set.
-
getSubfields
public java.util.List<Field> getSubfields()
Returns the list of subfields in this field.
-
getHeightAbove
public int getHeightAbove()
Description copied from interface:FieldReturns the height above the baseLine.- Specified by:
getHeightAbovein interfaceField- See Also:
Field.getHeightAbove()
-
getHeightBelow
public int getHeightBelow()
Description copied from interface:FieldReturns the height below the baseLine.- Specified by:
getHeightBelowin interfaceField- See Also:
Field.getHeightBelow()
-
rowHeightChanged
public void rowHeightChanged(int heightAbove1, int heightBelow)Description copied from interface:Fieldnotifies field that the rowHeight changed- Specified by:
rowHeightChangedin interfaceField- Parameters:
heightAbove1- the height above the baselineheightBelow- the height below the baseline.- See Also:
Field.rowHeightChanged(int, int)
-
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.
-
layoutElements
protected java.util.List<Field> layoutElements(int maxLines)
-
screenToDataLocation
public RowColLocation screenToDataLocation(int screenRow, int screenColumn)
Translates the row and column to a String index and character offset into that string.- Specified by:
screenToDataLocationin interfaceTextField- Parameters:
screenRow- the row containing the location.screenColumn- the character position in the row of the location- Returns:
- a MultiStringLocation containing the string index and position within that string.
-
dataToScreenLocation
public RowColLocation dataToScreenLocation(int dataRow, int dataColumn)
Finds the corresponding row, column for string index, and offset- Specified by:
dataToScreenLocationin interfaceTextField- Parameters:
dataRow- index into the string arraydataColumn- offset into the indexed string.- Returns:
- row and column in the screen coordinate system.
-
generateText
protected java.lang.String generateText()
-
generateText
protected java.lang.String generateText(java.lang.String delimiter)
-
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.- See Also:
Field.screenLocationToTextOffset(int, int)
-
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.
- See Also:
Field.textOffsetToScreenLocation(int)
-
isClipped
public boolean isClipped()
Description copied from interface:TextFieldReturns true if the field is not displaying all the text information- Specified by:
isClippedin interfaceTextField- See Also:
TextField.isClipped()
-
-