javax.swing.text

Class BoxView

public class BoxView extends CompositeView

An implementation of {@link CompositeView} that arranges its children in a box along one axis. This is comparable to how the BoxLayout works, but for View children.
Constructor Summary
BoxView(Element element, int axis)
Creates a new BoxView for the given Element and axis.
Method Summary
protected voidbaselineLayout(int span, int axis, int[] offsets, int[] spans)
Calculates the baseline layout of the children of this BoxView along the specified axis.
protected SizeRequirementsbaselineRequirements(int axis, SizeRequirements sr)
Calculates size requirements for a baseline layout.
protected SizeRequirementscalculateMajorAxisRequirements(int axis, SizeRequirements sr)
Calculates the size requirements of this BoxView along its major axis, that is the axis specified in the constructor.
protected SizeRequirementscalculateMinorAxisRequirements(int axis, SizeRequirements sr)
Calculates the size requirements of this BoxView along its minor axis, that is the axis opposite to the axis specified in the constructor.
protected voidchildAllocation(int index, Rectangle a)
Computes the allocation for a child View.
protected booleanflipEastAndWestAtEnds(int position, Position.Bias bias)
protected voidforwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory vf)
floatgetAlignment(int axis)
Returns the alignment for this box view for the specified axis.
intgetAxis()
Returns the axis along which this BoxView is laid out.
ShapegetChildAllocation(int index, Shape a)
Returns the child allocation for the child view with the specified index.
intgetHeight()
Return the current height of the box.
floatgetMaximumSpan(int axis)
Returns the maximum span of this view along the specified axis.
floatgetMinimumSpan(int axis)
Returns the minimum span of this view along the specified axis.
protected intgetOffset(int axis, int childIndex)
Returns the offset for the child view with the given index for the specified axis.
floatgetPreferredSpan(int axis)
Returns the preferred span of the content managed by this View along the specified axis.
intgetResizeWeight(int axis)
Returns the resize weight of this view.
protected intgetSpan(int axis, int childIndex)
Returns the span for the child view with the given index for the specified axis.
protected ViewgetViewAtPoint(int x, int y, Rectangle r)
Returns the child View at the specified location.
intgetWidth()
Return the current width of the box.
protected booleanisAfter(int x, int y, Rectangle r)
Returns true if the specified point lies after the given Rectangle, false otherwise.
protected booleanisAllocationValid()
Returns true if the cached allocations for the children are still valid, false otherwise.
protected booleanisBefore(int x, int y, Rectangle r)
Returns true if the specified point lies before the given Rectangle, false otherwise.
protected booleanisLayoutValid(int axis)
Returns true if the layout along the specified axis is valid, false otherwise.
protected voidlayout(int width, int height)
Lays out the children of this BoxView with the specified bounds.
voidlayoutChanged(int axis)
Marks the layout along the specified axis as invalid.
protected voidlayoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
Performs the layout along the major axis of a BoxView.
protected voidlayoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
Performs the layout along the minor axis of a BoxView.
ShapemodelToView(int pos, Shape a, Position.Bias bias)
Maps the document model position pos to a Shape in the view coordinate space.
voidpaint(Graphics g, Shape a)
Renders the Element that is associated with this View.
protected voidpaintChild(Graphics g, Rectangle alloc, int index)
Paints the child View at the specified index.
voidpreferenceChanged(View child, boolean width, boolean height)
Called by a child View when its preferred span has changed.
voidreplace(int offset, int length, View[] views)
Replaces child views by some other child views.
voidsetAxis(int axis)
Sets the axis along which this BoxView is laid out.
voidsetSize(float width, float height)
Sets the size of the view.
intviewToModel(float x, float y, Shape a, Position.Bias[] bias)

Constructor Detail

BoxView

public BoxView(Element element, int axis)
Creates a new BoxView for the given Element and axis. Valid values for the axis are {@link View#X_AXIS} and {@link View#Y_AXIS}.

Parameters: element the element that is rendered by this BoxView axis the axis along which the box is laid out

Method Detail

baselineLayout

protected void baselineLayout(int span, int axis, int[] offsets, int[] spans)
Calculates the baseline layout of the children of this BoxView along the specified axis. This is not used by the BoxView itself, but by subclasses that wish to perform a baseline layout, like the FlowView's rows.

Parameters: span the target span axis the axis that is examined offsets an empty array, filled with the offsets of the children spans an empty array, filled with the spans of the children

baselineRequirements

protected SizeRequirements baselineRequirements(int axis, SizeRequirements sr)
Calculates size requirements for a baseline layout. This is not used by the BoxView itself, but by subclasses that wish to perform a baseline layout, like the FlowView's rows.

Parameters: axis the axis that is examined sr the SizeRequirements object to hold the result, if null, a new one is created

Returns: the size requirements for this BoxView along the specified axis

calculateMajorAxisRequirements

protected SizeRequirements calculateMajorAxisRequirements(int axis, SizeRequirements sr)
Calculates the size requirements of this BoxView along its major axis, that is the axis specified in the constructor.

Parameters: axis the axis that is examined sr the SizeRequirements object to hold the result, if null, a new one is created

Returns: the size requirements for this BoxView along the specified axis

calculateMinorAxisRequirements

protected SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirements sr)
Calculates the size requirements of this BoxView along its minor axis, that is the axis opposite to the axis specified in the constructor.

Parameters: axis the axis that is examined sr the SizeRequirements object to hold the result, if null, a new one is created

Returns: the size requirements for this BoxView along the specified axis

childAllocation

protected void childAllocation(int index, Rectangle a)
Computes the allocation for a child View. The parameter a stores the allocation of this CompositeView and is then adjusted to hold the allocation of the child view.

Parameters: index the index of the child View a the allocation of this CompositeView before the call, the allocation of the child on exit

flipEastAndWestAtEnds

protected boolean flipEastAndWestAtEnds(int position, Position.Bias bias)

forwardUpdate

protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory vf)

getAlignment

public float getAlignment(int axis)
Returns the alignment for this box view for the specified axis. The axis that is tiled (the major axis) will be requested to be aligned centered (0.5F). The minor axis alignment depends on the child view's total alignment.

Parameters: axis the axis which is examined

Returns: the alignment for this box view for the specified axis

getAxis

public int getAxis()
Returns the axis along which this BoxView is laid out.

Returns: the axis along which this BoxView is laid out

Since: 1.3

getChildAllocation

public Shape getChildAllocation(int index, Shape a)
Returns the child allocation for the child view with the specified index. If the layout is invalid, this returns null.

Parameters: index the child view index a the allocation to this view

Returns: the child allocation for the child view with the specified index or null if the layout is invalid or a is null

getHeight

public int getHeight()
Return the current height of the box. This is the last allocated height.

Returns: the current height of the box

getMaximumSpan

public float getMaximumSpan(int axis)
Returns the maximum span of this view along the specified axis. This returns Integer.MAX_VALUE for the minor axis and the preferred span for the major axis.

Parameters: axis the axis

Returns: the maximum span of this view along the specified axis

getMinimumSpan

public float getMinimumSpan(int axis)
Returns the minimum span of this view along the specified axis. This calculates the minimum span using {@link #calculateMajorAxisRequirements} or {@link #calculateMinorAxisRequirements} (depending on the axis) and returns the resulting minimum span.

Parameters: axis the axis

Returns: the minimum span of this view along the specified axis

getOffset

protected int getOffset(int axis, int childIndex)
Returns the offset for the child view with the given index for the specified axis.

Parameters: axis the axis to examine, either X_AXIS or Y_AXIS childIndex the index of the child for for which to return the span

Returns: the offset for the child view with the given index for the specified axis

getPreferredSpan

public float getPreferredSpan(int axis)
Returns the preferred span of the content managed by this View along the specified axis.

Parameters: axis the axis

Returns: the preferred span of this View.

getResizeWeight

public int getResizeWeight(int axis)
Returns the resize weight of this view. A value of 0 or less means this view is not resizeable. Positive values make the view resizeable. This implementation returns 0 for the major axis and 1 for the minor axis of this box view.

Parameters: axis the axis

Returns: the resizability of this view along the specified axis

Throws: IllegalArgumentException if axis is invalid

getSpan

protected int getSpan(int axis, int childIndex)
Returns the span for the child view with the given index for the specified axis.

Parameters: axis the axis to examine, either X_AXIS or Y_AXIS childIndex the index of the child for for which to return the span

Returns: the span for the child view with the given index for the specified axis

getViewAtPoint

protected View getViewAtPoint(int x, int y, Rectangle r)
Returns the child View at the specified location.

Parameters: x the X coordinate y the Y coordinate r the inner allocation of this BoxView on entry, the allocation of the found child on exit

Returns: the child View at the specified location

getWidth

public int getWidth()
Return the current width of the box. This is the last allocated width.

Returns: the current width of the box

isAfter

protected boolean isAfter(int x, int y, Rectangle r)
Returns true if the specified point lies after the given Rectangle, false otherwise. "After" is typically defined as being to the right or below.

Parameters: x the X coordinate of the point y the Y coordinate of the point r the rectangle to test the point against

Returns: true if the specified point lies after the given Rectangle, false otherwise

isAllocationValid

protected boolean isAllocationValid()
Returns true if the cached allocations for the children are still valid, false otherwise.

Returns: true if the cached allocations for the children are still valid, false otherwise

isBefore

protected boolean isBefore(int x, int y, Rectangle r)
Returns true if the specified point lies before the given Rectangle, false otherwise. "Before" is typically defined as being to the left or above.

Parameters: x the X coordinate of the point y the Y coordinate of the point r the rectangle to test the point against

Returns: true if the specified point lies before the given Rectangle, false otherwise

isLayoutValid

protected boolean isLayoutValid(int axis)
Returns true if the layout along the specified axis is valid, false otherwise. Valid values for the axis are {@link View#X_AXIS} and {@link View#Y_AXIS}.

Parameters: axis the axis

Returns: true if the layout along the specified axis is valid, false otherwise

Since: 1.4

layout

protected void layout(int width, int height)
Lays out the children of this BoxView with the specified bounds.

Parameters: width the width of the allocated region for the children (that is the inner allocation of this BoxView height the height of the allocated region for the children (that is the inner allocation of this BoxView

layoutChanged

public void layoutChanged(int axis)
Marks the layout along the specified axis as invalid. This is triggered automatically when any of the child view changes its preferences via {@link #preferenceChanged(View, boolean, boolean)}. The layout will be updated the next time when {@link #setSize(float, float)} is called, typically from within the {@link #paint(Graphics, Shape)} method. Valid values for the axis are {@link View#X_AXIS} and {@link View#Y_AXIS}.

Parameters: axis an int value

Since: 1.3

layoutMajorAxis

protected void layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
Performs the layout along the major axis of a BoxView.

Parameters: targetSpan the (inner) span of the BoxView in which to layout the children axis the axis along which the layout is performed offsets the array that holds the offsets of the children on exit spans the array that holds the spans of the children on exit

layoutMinorAxis

protected void layoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
Performs the layout along the minor axis of a BoxView.

Parameters: targetSpan the (inner) span of the BoxView in which to layout the children axis the axis along which the layout is performed offsets the array that holds the offsets of the children on exit spans the array that holds the spans of the children on exit

modelToView

public Shape modelToView(int pos, Shape a, Position.Bias bias)
Maps the document model position pos to a Shape in the view coordinate space. This method overrides CompositeView's method to make sure the children are allocated properly before calling the super's behaviour.

paint

public void paint(Graphics g, Shape a)
Renders the Element that is associated with this View.

Parameters: g the Graphics context to render to a the allocated region for the Element

paintChild

protected void paintChild(Graphics g, Rectangle alloc, int index)
Paints the child View at the specified index. This method modifies the actual values in alloc so make sure you have a copy of the original values if you need them.

Parameters: g the Graphics context to paint to alloc the allocated region for the child to paint into index the index of the child to be painted

See Also: BoxView

preferenceChanged

public void preferenceChanged(View child, boolean width, boolean height)
Called by a child View when its preferred span has changed.

Parameters: width indicates that the preferred width of the child changed. height indicates that the preferred height of the child changed. child the child View.

replace

public void replace(int offset, int length, View[] views)
Replaces child views by some other child views. If there are no views to remove (length == 0), the result is a simple insert, if there are no children to add (view == null) the result is a simple removal. In addition this invalidates the layout and resizes the internal cache for the child allocations. The old children's cached allocations can still be accessed (although they are not guaranteed to be valid), and the new children will have an initial offset and span of 0.

Parameters: offset the start offset from where to remove children length the number of children to remove views the views that replace the removed children

setAxis

public void setAxis(int axis)
Sets the axis along which this BoxView is laid out. Valid values for the axis are {@link View#X_AXIS} and {@link View#Y_AXIS}.

Parameters: axis the axis along which this BoxView is laid out

Since: 1.3

setSize

public void setSize(float width, float height)
Sets the size of the view. If the actual size has changed, the layout is updated accordingly.

Parameters: width the new width height the new height

viewToModel

public int viewToModel(float x, float y, Shape a, Position.Bias[] bias)