@Override
	public int getScrollableUnitIncrement(int topOfScreen, int direction, int max) {

		if ((topOfScreen < -heightAbove) || (topOfScreen > height - heightAbove)) {
			return max;
		}

		int row = getRow(topOfScreen);
		int y = getY(row);
		int rowOffset = topOfScreen - y;
		FieldRow fieldRow = getFieldRow(row);
		int rowHeight = fieldRow.field.getHeight();
		if (direction > 0) { // if scrolling down
			return rowHeight - rowOffset;
		}
		else if (rowOffset == 0) {
			return -rowHeight;
		}
		else {
			return -rowOffset;
		}
	}
A {@link TextField} that takes in other TextFields.

<P>This class allows clients to create custom text layout behavior by combining individual
TextFields that dictate layout behavior.  As an example, consider this rendering:
<pre>
	1)  This is some text...
	2)	This
		is
		more
		text
</pre>
In this example, 1) is a row of text inside of a {@link ClippingTextField}.  Row 2) is a
multi-line text rendering specified in a single {@link FlowLayoutTextField}, using a
narrow width to trigger the field to place each element on its own line.
Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/field/CompositeVerticalLayoutTextField.java