Package docking.widgets.fieldpanel.field
Class ReverseClippingTextField
- java.lang.Object
-
- docking.widgets.fieldpanel.field.ReverseClippingTextField
-
public class ReverseClippingTextField extends java.lang.Object implements TextField
Field for showing multiple strings, each with its own attributes in a field, on a single line, clipping the beginning of the text as needed to fit within the field's width. Has the extra methods for mapping column positions to strings and positions in those strings.
-
-
Constructor Summary
Constructors Constructor Description ReverseClippingTextField(int startX, int width, FieldElement textElement, HighlightFactory hlFactory)
Constructs a new ReverseClippingTextField that allows the cursor beyond the end of the line.
-
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.RowColLocation
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 row.java.awt.Rectangle
getCursorBounds(int row, int col)
Returns a bounding rectangle for the cursor at the given position.FieldElement
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 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
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 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.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
isClipped()
Returns true if the text is clipped (truncated)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, FieldBackgroundColorManager colorManager, RowColLocation cursorLoc, int rowHeight)
Paints this field.protected void
paintCursor(java.awt.Graphics g, java.awt.Color cursorColor, RowColLocation cursorLoc)
protected void
paintHighlights(java.awt.Graphics g, Highlight[] highlights)
protected void
paintSelection(java.awt.Graphics g, FieldBackgroundColorManager colorManager, int rowHeight)
void
rowHeightChanged(int heightAbove, 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 column.RowColLocation
screenToDataLocation(int screenRow, int screenColumn)
Converts a single column value into a MultiStringLocation which specifies a string index and a column position within that string.void
setPrimary(boolean b)
Sets this field to be primary such that its row is primaryRowColLocation
textOffsetToScreenLocation(int textOffset)
Returns the row, column position for an offset into the string returned by getText().
-
-
-
Constructor Detail
-
ReverseClippingTextField
public ReverseClippingTextField(int startX, int width, FieldElement textElement, HighlightFactory hlFactory)
Constructs a new ReverseClippingTextField that allows the cursor beyond the end of the line. This is just a pass through constructor that makes the call:this(startX, width, new AttributedString[] { textElement }, hlFactory, true);
- Parameters:
startX
- The x position of the fieldwidth
- The width of the fieldtextElement
- The AttributedStrings to display in the field.hlFactory
- The HighlightFactory object used to paint highlights.
-
-
Method Detail
-
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 interfaceField
- Parameters:
x
- the horizontal coordinate of the point.y
- the relatve y position in this layout- See Also:
Field.contains(int, int)
-
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 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)
-
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.- See Also:
Field.getCursorBounds(int, int)
-
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 interfaceField
- See Also:
Field.getHeight()
-
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.- See Also:
Field.getNumCols(int)
-
getNumRows
public int getNumRows()
Description copied from interface:Field
Returns the number of rows in this field- Specified by:
getNumRows
in interfaceField
- See Also:
Field.getNumRows()
-
getRow
public int getRow(int y)
Description copied from interface:Field
Returns the row containing the given y coordinate.- Specified by:
getRow
in interfaceField
- Parameters:
y
- vertical pixel coordinate relative to the top of the screen.- See Also:
Field.getRow(int)
-
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)- See Also:
Field.getScrollableUnitIncrement(int, int, int)
-
getStartX
public int getStartX()
Description copied from interface:Field
Returns the horizontal position of this field.- Specified by:
getStartX
in interfaceField
- See Also:
Field.getStartX()
-
getWidth
public int getWidth()
Description copied from interface:Field
Returns the current width of this field.- Specified by:
getWidth
in interfaceField
- See Also:
Field.getWidth()
-
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
-
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 interfaceField
- Parameters:
row
- the text row of interest.col
- the character column.- See Also:
Field.getX(int, int)
-
getY
public int getY(int row)
Description copied from interface:Field
Returns the y coordinate for the given row.- Specified by:
getY
in interfaceField
- Parameters:
row
- the text row of interest.- See Also:
Field.getY(int)
-
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 interfaceField
- See Also:
Field.isPrimary()
-
setPrimary
public void setPrimary(boolean b)
Description copied from interface:TextField
Sets this field to be primary such that its row is primary- Specified by:
setPrimary
in interfaceTextField
- See Also:
TextField.setPrimary(boolean)
-
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 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:Field
Paints this field.- Specified by:
paint
in interfaceField
g
- 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)
-
paintSelection
protected void paintSelection(java.awt.Graphics g, FieldBackgroundColorManager colorManager, int rowHeight)
-
paintHighlights
protected void paintHighlights(java.awt.Graphics g, Highlight[] highlights)
-
paintCursor
protected void paintCursor(java.awt.Graphics g, java.awt.Color cursorColor, RowColLocation cursorLoc)
-
screenToDataLocation
public RowColLocation screenToDataLocation(int screenRow, int screenColumn)
Converts a single column value into a MultiStringLocation which specifies a string index and a column position within that string.- Specified by:
screenToDataLocation
in interfaceTextField
- Parameters:
screenColumn
- the overall column position in the total String.screenRow
- the row in the displayed field text.- Returns:
- MultiStringLocation the MultiStringLocation corresponding to the given column.
-
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.
- See Also:
TextField.dataToScreenLocation(int, int)
-
isClipped
public boolean isClipped()
Returns true if the text is clipped (truncated)
-
getHeightAbove
public int getHeightAbove()
Description copied from interface:Field
Returns the height above the baseLine.- Specified by:
getHeightAbove
in interfaceField
- See Also:
Field.getHeightAbove()
-
getHeightBelow
public int getHeightBelow()
Description copied from interface:Field
Returns the height below the baseLine.- Specified by:
getHeightBelow
in interfaceField
- See Also:
Field.getHeightBelow()
-
rowHeightChanged
public void rowHeightChanged(int heightAbove, int heightBelow)
Description copied from interface:Field
notifies field that the rowHeight changed- Specified by:
rowHeightChanged
in interfaceField
- Parameters:
heightAbove
- the height above the baselineheightBelow
- the height below the baseline.- See Also:
Field.rowHeightChanged(int, int)
-
getText
public java.lang.String getText()
Description copied from interface:Field
Returns a string containing all the text in the field.- Specified by:
getText
in interfaceField
- See Also:
Field.getText()
-
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.
- See Also:
Field.textOffsetToScreenLocation(int)
-
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.- See Also:
Field.screenLocationToTextOffset(int, int)
-
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.
-
-