public abstract class CompositeView extends View
View
that manages child
View
s.BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
Constructor and Description |
---|
CompositeView(Element element)
Creates a new
CompositeView for the given
Element . |
Modifier and Type | Method and Description |
---|---|
protected abstract void |
childAllocation(int index,
Rectangle a)
Computes the allocation for a child
View . |
protected boolean |
flipEastAndWestAtEnds(int pos,
Position.Bias bias)
Determines if the next view in horinzontal direction is located to
the east or west of the view at position
pos . |
protected short |
getBottomInset()
Returns the bottom inset of this
CompositeView . |
Shape |
getChildAllocation(int index,
Shape a)
Returns the allocation for the specified child
View . |
protected Rectangle |
getInsideAllocation(Shape a)
Returns the allocation that is given to this
CompositeView
minus this CompositeView 's insets. |
protected short |
getLeftInset()
Returns the left inset of this
CompositeView . |
protected int |
getNextEastWestVisualPositionFrom(int pos,
Position.Bias b,
Shape a,
int direction,
Position.Bias[] biasRet)
Returns the next model location that is visible in east or west
direction.
|
protected int |
getNextNorthSouthVisualPositionFrom(int pos,
Position.Bias b,
Shape a,
int direction,
Position.Bias[] biasRet)
Returns the next model location that is visible in north or south
direction.
|
int |
getNextVisualPositionFrom(int pos,
Position.Bias b,
Shape a,
int direction,
Position.Bias[] biasRet)
Returns the next model location that is visible in eiter north / south
direction or east / west direction.
|
protected short |
getRightInset()
Returns the right inset of this
CompositeView . |
protected short |
getTopInset()
Returns the top inset of this
CompositeView . |
View |
getView(int n)
Returns the child view at index
n . |
protected abstract View |
getViewAtPoint(int x,
int y,
Rectangle r)
Returns the child
View at the specified location. |
protected View |
getViewAtPosition(int pos,
Rectangle a)
Returns the child
View that contains the given model
position. |
int |
getViewCount()
Returns the number of child views.
|
int |
getViewIndex(int pos,
Position.Bias b)
Returns the index of the child view that represents the specified
model location.
|
protected int |
getViewIndexAtPosition(int pos)
Returns the index of the child
View for the given model
position. |
protected abstract boolean |
isAfter(int x,
int y,
Rectangle r)
Returns
true if the specified point lies after the
given Rectangle , false otherwise. |
protected abstract boolean |
isBefore(int x,
int y,
Rectangle r)
Returns
true if the specified point lies before the
given Rectangle , false otherwise. |
protected void |
loadChildren(ViewFactory f)
Loads the child views of this
CompositeView . |
Shape |
modelToView(int p1,
Position.Bias b1,
int p2,
Position.Bias b2,
Shape a)
Maps a region in the document into the coordinate space of the View.
|
Shape |
modelToView(int pos,
Shape a,
Position.Bias bias)
Maps a position in the document into the coordinate space of the View.
|
void |
replace(int offset,
int length,
View[] views)
Replaces child views by some other child views.
|
protected void |
setInsets(short t,
short l,
short b,
short r)
Sets the insets of this
CompositeView . |
protected void |
setParagraphInsets(AttributeSet attributes)
Sets the insets defined by attributes in
attributes . |
void |
setParent(View parent)
Sets the parent of this
View . |
int |
viewToModel(float x,
float y,
Shape a,
Position.Bias[] b)
Maps coordinates from the
View 's space into a position
in the document model. |
append, breakView, changedUpdate, createFragment, dump, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getMaximumSpan, getMinimumSpan, getParent, getPreferredSpan, getResizeWeight, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, insertUpdate, isVisible, modelToView, paint, preferenceChanged, remove, removeAll, removeUpdate, setSize, updateChildren, updateLayout, viewToModel
public CompositeView(Element element)
CompositeView
for the given
Element
.element
- the element that is rendered by this CompositeViewprotected void loadChildren(ViewFactory f)
CompositeView
. This method
is called from setParent(javax.swing.text.View)
to initialize the child views of
this composite view.f
- the view factory to use for creating new child viewssetParent(javax.swing.text.View)
public void setParent(View parent)
View
.
In addition to setting the parent, this calls loadChildren(javax.swing.text.ViewFactory)
, if
this View
does not already have its children initialized.public int getViewCount()
getViewCount
in class View
public void replace(int offset, int length, View[] views)
length == 0
), the result is a simple insert, if
there are no children to add (view == null
) the result
is a simple removal.public Shape getChildAllocation(int index, Shape a)
View
.getChildAllocation
in class View
index
- the index of the child viewa
- the allocation for this viewView
public Shape modelToView(int pos, Shape a, Position.Bias bias) throws BadLocationException
modelToView
in class View
pos
- the position of the character in the modela
- the area that is occupied by the viewbias
- either Position.Bias.Forward
or
Position.Bias.Backward
depending on the preferred
direction bias. If null
this defaults to
Position.Bias.Forward
BadLocationException
- if pos
is invalidIllegalArgumentException
- if b is not one of the above listed
valid valuespublic Shape modelToView(int p1, Position.Bias b1, int p2, Position.Bias b2, Shape a) throws BadLocationException
modelToView
in class View
p1
- the beginning position inside the documentb1
- the direction bias for the beginning positionp2
- the end position inside the documentb2
- the direction bias for the end positiona
- the area that is occupied by the viewBadLocationException
- if p1
or p2
are
invalidIllegalArgumentException
- if b1 or b2 is not one of the above
listed valid valuespublic int viewToModel(float x, float y, Shape a, Position.Bias[] b)
View
's space into a position
in the document model.viewToModel
in class View
x
- the x coordinate in the view space, x >= 0y
- the y coordinate in the view space, y >= 0a
- the allocation of this View
b
- the bias to usex, y
>= 0public int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
getNextNorthSouthVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])
and getNextEastWestVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])
.getNextVisualPositionFrom
in class View
pos
- the model position to start search fromb
- the bias for pos
a
- the allocated region for this viewdirection
- the direction from the current position, can be one of the
following:
biasRet
- the bias of the return value gets stored hereBadLocationException
- if pos
is not a valid location inside the document
modelIllegalArgumentException
- if direction
is invalidpublic int getViewIndex(int pos, Position.Bias b)
getViewIndex
in class View
pos
- the model location for which to determine the child view indexb
- the bias to be applied to pos
protected abstract boolean isBefore(int x, int y, Rectangle r)
true
if the specified point lies before the
given Rectangle
, false
otherwise.
"Before" is typically defined as being to the left or above.x
- the X coordinate of the pointy
- the Y coordinate of the pointr
- the rectangle to test the point againsttrue
if the specified point lies before the
given Rectangle
, false
otherwiseprotected abstract boolean isAfter(int x, int y, Rectangle r)
true
if the specified point lies after the
given Rectangle
, false
otherwise.
"After" is typically defined as being to the right or below.x
- the X coordinate of the pointy
- the Y coordinate of the pointr
- the rectangle to test the point againsttrue
if the specified point lies after the
given Rectangle
, false
otherwiseprotected abstract View getViewAtPoint(int x, int y, Rectangle r)
View
at the specified location.x
- the X coordinatey
- the Y coordinater
- the inner allocation of this BoxView
on entry,
the allocation of the found child on exitView
at the specified locationprotected abstract void childAllocation(int index, Rectangle a)
View
. The parameter
a
stores the allocation of this CompositeView
and is then adjusted to hold the allocation of the child view.index
- the index of the child View
a
- the allocation of this CompositeView
before the
call, the allocation of the child on exitprotected View getViewAtPosition(int pos, Rectangle a)
View
that contains the given model
position. The given Rectangle
gives the parent's allocation
and is changed to the child's allocation on exit.pos
- the model position to query the child View
fora
- the parent allocation on entry and the child allocation on exitprotected int getViewIndexAtPosition(int pos)
View
for the given model
position.pos
- the model position for whicht the child View
is
queriedView
for the given model
positionprotected Rectangle getInsideAllocation(Shape a)
CompositeView
minus this CompositeView
's insets.
Also this translates from an immutable allocation to a mutable allocation
that is typically reused and further narrowed, like in
childAllocation(int, java.awt.Rectangle)
.a
- the allocation given to this CompositeView
CompositeView
minus this CompositeView
's insets or
null
if a was null
protected void setParagraphInsets(AttributeSet attributes)
attributes
. This
queries the attribute keys StyleConstants.SpaceAbove
,
StyleConstants.SpaceBelow
, StyleConstants.LeftIndent
and
StyleConstants.RightIndent
and calls setInsets(short, short, short, short)
to
actually set the insets on this CompositeView
.attributes
- the attributes from which to query the insetsprotected void setInsets(short t, short l, short b, short r)
CompositeView
.t
- the top insetl
- the left insetb
- the bottom insetr
- the right insetprotected short getLeftInset()
CompositeView
.CompositeView
protected short getRightInset()
CompositeView
.CompositeView
protected short getTopInset()
CompositeView
.CompositeView
protected short getBottomInset()
CompositeView
.CompositeView
protected int getNextNorthSouthVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
pos
- the model position to start search fromb
- the bias for pos
a
- the allocated region for this viewdirection
- the direction from the current position, can be one of
the following:
biasRet
- the bias of the return value gets stored hereBadLocationException
- if pos
is not a valid location
inside the document modelIllegalArgumentException
- if direction
is invalidprotected int getNextEastWestVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
pos
- the model position to start search fromb
- the bias for pos
a
- the allocated region for this viewdirection
- the direction from the current position, can be one of
the following:
biasRet
- the bias of the return value gets stored hereBadLocationException
- if pos
is not a valid location
inside the document modelIllegalArgumentException
- if direction
is invalidprotected boolean flipEastAndWestAtEnds(int pos, Position.Bias bias)
pos
. Usually
the View
s are laid out from the east to the west, so
we unconditionally return false
here. Subclasses that
support bidirectional text may wish to override this method.pos
- the position in the documentbias
- the bias to be applied to pos
true
if the next View
is located
to the EAST, false
otherwise