Class CompositeVerticalLayoutTextField

  • All Implemented Interfaces:
    Field, TextField

    public class CompositeVerticalLayoutTextField
    extends java.lang.Object
    implements TextField
    A TextField that takes in other TextFields.

    This class allows clients to create custom text layout behavior by combining individual TextFields that dictate layout behavior. As an example, consider this rendering:

            1)  This is some text...
            2)      This
                    is
                    more
                    text
     
    In this example, 1) is a row of text inside of a ClippingTextField. Row 2) is a multi-line text rendering specified in a single FlowLayoutTextField, using a narrow width to trigger the field to place each element on its own 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.
      protected java.util.List<TextField> getAllRowsUpTo​(int maxRowInclusive)  
      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 getNumDataRows()
      Returns the number of data model rows represented by this field.
      int getNumRows()
      Returns the number of rows in this field
      int getPreferredWidth()
      The minimum required width to paint the contents of this field
      int getRow​(int y)
      Returns the row containing the given y coordinate
      java.lang.String getRowSeparator()  
      int getScrollableUnitIncrement​(int topOfScreen, int direction, int max)
      Returns the amount to scroll to the next or previous line
      int 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 newlines
      int 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 field is not displaying all the text information
      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 colorManager, RowColLocation cursorLocation, int rowHeight)
      Paints this field
      void rowHeightChanged​(int newHeightAbove, int newHeightBelow)
      notifies field that the rowHeight changed
      int 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)
      Translates a screen coordinate to a row and column in the data from the factory
      void setPrimary​(boolean state)
      Sets this field to be primary such that its row is primary
      RowColLocation textOffsetToScreenLocation​(int textOffset)
      Returns the row, column position for an offset into the string returned by getText()
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • CompositeVerticalLayoutTextField

        public CompositeVerticalLayoutTextField​(java.util.List<TextField> fields,
                                                int startX,
                                                int width,
                                                int maxLines,
                                                HighlightFactory hlFactory)
      • CompositeVerticalLayoutTextField

        protected CompositeVerticalLayoutTextField​(java.util.List<TextField> fields,
                                                   int startX,
                                                   int width,
                                                   int maxLines,
                                                   HighlightFactory hlFactory,
                                                   java.lang.String rowSeparator)
    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getWidth

        public int getWidth()
        Description copied from interface: Field
        Returns the current width of this field
        Specified by:
        getWidth in 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 interface Field
        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
        Specified by:
        getHeight in interface Field
        Returns:
        the height
      • getStartX

        public int getStartX()
        Description copied from interface: Field
        Returns the horizontal position of this field
        Specified by:
        getStartX in interface Field
        Returns:
        the position
      • 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 interface Field
        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 interface Field
        Returns:
        the number of rows in this field
      • getHeightAbove

        public int getHeightAbove()
        Description copied from interface: Field
        Returns the height above the baseLine
        Specified by:
        getHeightAbove in interface Field
        Returns:
        the height above
      • getHeightBelow

        public int getHeightBelow()
        Description copied from interface: Field
        Returns the height below the baseLine
        Specified by:
        getHeightBelow in interface Field
        Returns:
        the height below
      • 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 interface Field
        Returns:
        true if this field is "primary"
      • rowHeightChanged

        public void rowHeightChanged​(int newHeightAbove,
                                     int newHeightBelow)
        Description copied from interface: Field
        notifies field that the rowHeight changed
        Specified by:
        rowHeightChanged in interface Field
        Parameters:
        newHeightAbove - the height above the baseline
        newHeightBelow - the height below the baseline
      • isClipped

        public boolean isClipped()
        Description copied from interface: TextField
        Returns true if the field is not displaying all the text information
        Specified by:
        isClipped in interface TextField
        Returns:
        true if the field is not displaying all the text information
      • setPrimary

        public void setPrimary​(boolean state)
        Description copied from interface: TextField
        Sets this field to be primary such that its row is primary
        Specified by:
        setPrimary in interface TextField
        Parameters:
        state - this field to be primary such that its row is primary
      • 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 interface Field
        Returns:
        the string
      • 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 interface Field
        Returns:
        a string containing all the text in the field with extra newlines
      • paint

        public void paint​(javax.swing.JComponent c,
                          java.awt.Graphics g,
                          PaintContext context,
                          java.awt.Rectangle clip,
                          FieldBackgroundColorManager colorManager,
                          RowColLocation cursorLocation,
                          int rowHeight)
        Description copied from interface: Field
        Paints this field
        Specified by:
        paint in interface Field
        Parameters:
        c - the component to paint onto
        g - the graphics context
        context - common paint parameters
        clip - the clipping region to paint into
        colorManager - contains background color information for the field
        cursorLocation - the row,column cursor location within the field or null if the field does not contain the cursor
        rowHeight - 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
        Specified by:
        contains in interface Field
        Parameters:
        x - the horizontal coordinate of the point
        y - the relative y position in this layout
        Returns:
        true if the given point is in this field
      • getRowSeparator

        public java.lang.String getRowSeparator()
      • getAllRowsUpTo

        protected java.util.List<TextField> getAllRowsUpTo​(int maxRowInclusive)
      • 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 interface TextField
        Parameters:
        screenRow - the row on the screen
        screenColumn - the column on the screen
        Returns:
        the FieldElement at the given screen location.
      • getNumCols

        public int getNumCols​(int row)
        Description copied from interface: Field
        Returns the number of columns in the given row
        Specified by:
        getNumCols in interface Field
        Parameters:
        row - the row from which to get the number of columns; this is the screen row
        Returns:
        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
        Specified by:
        getX in interface Field
        Parameters:
        row - the text row of interest
        col - the character column
        Returns:
        the x value
      • getY

        public int getY​(int row)
        Description copied from interface: Field
        Returns the y coordinate for the given row
        Specified by:
        getY in interface Field
        Parameters:
        row - the text row of interest
        Returns:
        the y value
      • getRow

        public int getRow​(int y)
        Description copied from interface: Field
        Returns the row containing the given y coordinate
        Specified by:
        getRow in interface Field
        Parameters:
        y - vertical pixel coordinate relative to the top of the screen
        Returns:
        the row
      • 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 interface Field
        Parameters:
        row - the text row to find the column on
        x - the horizontal pixel coordinate for which to find the character position
        Returns:
        the column
      • 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 interface Field
        Parameters:
        row - the text row
        col - the character position
        Returns:
        tru if valid
      • 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 interface Field
        Parameters:
        row - the text row
        col - the character position
        Returns:
        the rectangle
      • 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 interface Field
        Parameters:
        topOfScreen - the current y position 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)
        Returns:
        the scroll amount
      • 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 interface TextField
        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 interface TextField
        Parameters:
        dataRow - row as defined by the factory
        dataColumn - 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 interface Field
        Parameters:
        row - the row
        col - 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 interface Field
        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