SwingConstants
public class AsyncBoxView extends View
While the child view is being accessed a read lock is acquired on the associated document so that the model is stable while being accessed.
Modifier and Type | Class | Description |
---|---|---|
class |
AsyncBoxView.ChildLocator |
A class to manage the effective position of the child views in a localized area while changes are being made around the localized area. |
class |
AsyncBoxView.ChildState |
A record representing the layout state of a child view. |
Modifier and Type | Field | Description |
---|---|---|
protected AsyncBoxView.ChildLocator |
locator |
Object that manages the offsets of the children. |
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 | Description |
---|---|
AsyncBoxView |
Construct a box view that does asynchronous layout. |
Modifier and Type | Method | Description |
---|---|---|
protected AsyncBoxView.ChildState |
createChildState |
New ChildState records are created through this method to allow subclasses the extend the ChildState records to do/hold more. |
protected void |
flushRequirementChanges() |
Publish the changes in preferences upward to the parent view. |
float |
getBottomInset() |
Get the bottom part of the margin around the view. |
Shape |
getChildAllocation |
Fetches the allocation for the given child view. |
protected AsyncBoxView.ChildState |
getChildState |
Fetch the object representing the layout state of of the child at the given index. |
protected boolean |
getEstimatedMajorSpan() |
Is the major span currently estimated? |
protected float |
getInsetSpan |
Fetch the span along an axis that is taken up by the insets. |
protected LayoutQueue |
getLayoutQueue() |
Fetch the queue to use for layout. |
float |
getLeftInset() |
Get the left part of the margin around the view. |
int |
getMajorAxis() |
Fetch the major axis (the axis the children are tiled along). |
float |
getMaximumSpan |
Determines the maximum span for this view along an axis. |
float |
getMinimumSpan |
Determines the minimum span for this view along an axis. |
int |
getMinorAxis() |
Fetch the minor axis (the axis orthogonal to the tiled axis). |
int |
getNextVisualPositionFrom |
Provides a way to determine the next visually represented model location that one might place a caret. |
float |
getPreferredSpan |
Determines the preferred span for this view along an axis. |
float |
getRightInset() |
Get the right part of the margin around the view. |
float |
getTopInset() |
Get the top part of the margin around the view. |
View |
getView |
Gets the nth child view. |
int |
getViewCount() |
Returns the number of views in this view. |
int |
getViewIndex |
Returns the child view index representing the given position in the model. |
protected int |
getViewIndexAtPosition |
Fetches the child view index representing the given position in the model. |
protected void |
loadChildren |
Loads all of the children to initialize the view. |
protected void |
majorRequirementChange |
Requirements changed along the major axis. |
protected void |
minorRequirementChange |
Requirements changed along the minor axis. |
Shape |
modelToView |
Provides a mapping from the document model coordinate space to the coordinate space of the view mapped to it. |
void |
paint |
Render the view using the given allocation and rendering surface. |
void |
preferenceChanged |
Child views can call this on the parent to indicate that the preference has changed and should be reconsidered for layout. |
void |
replace |
Calls the superclass to update the child views, and updates the status records for the children. |
void |
setBottomInset |
Set the bottom part of the margin around the view. |
protected void |
setEstimatedMajorSpan |
Set the estimatedMajorSpan property that determines if the major span should be treated as being estimated. |
void |
setLeftInset |
Set the left part of the margin around the view. |
void |
setParent |
Sets the parent of the view. |
void |
setRightInset |
Set the right part of the margin around the view. |
void |
setSize |
Sets the size of the view. |
void |
setTopInset |
Set the top part of the margin around the view. |
protected void |
updateLayout |
Update the layout in response to receiving notification of change from the model. |
int |
viewToModel |
Provides a mapping from the view coordinate space to the logical coordinate space of the model. |
append, breakView, changedUpdate, createFragment, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getResizeWeight, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, insertUpdate, isVisible, modelToView, modelToView, remove, removeAll, removeUpdate, updateChildren, viewToModel
protected AsyncBoxView.ChildLocator locator
public AsyncBoxView(Element elem, int axis)
elem
- the element of the model to representaxis
- the axis to tile along. This can be either X_AXIS or Y_AXIS.public int getMajorAxis()
public int getMinorAxis()
public float getTopInset()
public void setTopInset(float i)
i
- the value of the insetpublic float getBottomInset()
public void setBottomInset(float i)
i
- the value of the insetpublic float getLeftInset()
public void setLeftInset(float i)
i
- the value of the insetpublic float getRightInset()
public void setRightInset(float i)
i
- the value of the insetprotected float getInsetSpan(int axis)
axis
- the axis to determine the total insets along, either X_AXIS or Y_AXIS.protected void setEstimatedMajorSpan(boolean isEstimated)
isEstimated
- new value for the estimatedMajorSpan propertyprotected boolean getEstimatedMajorSpan()
protected AsyncBoxView.ChildState getChildState(int index)
index
- the child index. This should be a value >= 0 and < getViewCount().protected LayoutQueue getLayoutQueue()
protected AsyncBoxView.ChildState createChildState(View v)
v
- the viewprotected void majorRequirementChange(AsyncBoxView.ChildState cs, float delta)
This is implemented to mark the major axis as having changed so that a future check to see if the requirements need to be published to the parent view will consider the major axis. If the span along the major axis is not estimated, it is updated by the given delta to reflect the incremental change. The delta is ignored if the major span is estimated.
cs
- the child statedelta
- the deltaprotected void minorRequirementChange(AsyncBoxView.ChildState cs)
cs
- the child stateprotected void flushRequirementChanges()
public void replace(int offset, int length, View[] views)
protected void loadChildren(ViewFactory f)
setParent
method. Subclasses can reimplement this to initialize their child views in a different manner. The default implementation creates a child view for each child element. Normally a write-lock is held on the Document while the children are being changed, which keeps the rendering and layout threads safe. The exception to this is when the view is initialized to represent an existing element (via this method), so it is synchronized to exclude preferenceChanged while we are initializing.
f
- the view factoryprotected int getViewIndexAtPosition(int pos, Position.Bias b)
pos
- the position >= 0b
- the position biasprotected void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
updateLayout
in class View
ec
- changes to the element this view is responsible for (may be null if there were no changes).e
- the change information from the associated documenta
- the current allocation of the viewpublic void setParent(View parent)
loadChildren
method if this view does not already have children. The children should not be loaded in the constructor because the act of setting the parent may cause them to try to search up the hierarchy (to get the hosting Container for example). If this view has children (the view is being moved from one place in the view hierarchy to another), the loadChildren
method will not be called.public void preferenceChanged(View child, boolean width, boolean height)
preferenceChanged
in class View
child
- the child viewwidth
- true if the width preference has changedheight
- true if the height preference has changedpublic void setSize(float width, float height)
Since the major axis is updated asynchronously and should be the sum of the tiled children the call is ignored for the major axis. Since the minor axis is flexible, work is queued to resize the children if the minor span changes.
public void paint(Graphics g, Shape alloc)
This is implemented to determine whether or not the desired region to be rendered (i.e. the unclipped area) is up to date or not. If up-to-date the children are rendered. If not up-to-date, a task to build the desired area is placed on the layout queue as a high priority task. This keeps by event thread moving by rendering if ready, and postponing until a later time if not ready (since paint requests can be rescheduled).
public float getPreferredSpan(int axis)
getPreferredSpan
in class View
axis
- may be either View.X_AXIS or View.Y_AXISIllegalArgumentException
- for an invalid axis typepublic float getMinimumSpan(int axis)
getMinimumSpan
in class View
axis
- may be either View.X_AXIS or View.Y_AXISIllegalArgumentException
- for an invalid axis typepublic float getMaximumSpan(int axis)
getMaximumSpan
in class View
axis
- may be either View.X_AXIS or View.Y_AXISIllegalArgumentException
- for an invalid axis typepublic int getViewCount()
getViewCount
in class View
public View getView(int n)
public Shape getChildAllocation(int index, Shape a)
getChildAllocation
in class View
index
- the index of the child, >= 0 && < getViewCount()a
- the allocation to this view.public int getViewIndex(int pos, Position.Bias b)
getViewIndex
in class View
pos
- the position >= 0b
- the biaspublic Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
modelToView
in class View
pos
- the position to convert >= 0a
- the allocated region to render intob
- the bias toward the previous character or the next character represented by the offset, in case the position is a boundary of two views.BadLocationException
- if the given position does not represent a valid location in the associated documentIllegalArgumentException
- for an invalid bias argumentpublic int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
This is expected to be called by the GUI thread, holding a read-lock on the associated model. It is implemented to locate the child view and determine it's allocation with a lock on the ChildLocator object, and to call viewToModel on the child view with a lock on the ChildState object to avoid interaction with the layout thread.
viewToModel
in class View
x
- the X coordinate >= 0y
- the Y coordinate >= 0a
- the allocated region to render intobiasReturn
- the returned biaspublic int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
BadLocationException
will be thrown.getNextVisualPositionFrom
in class View
pos
- the position to convertb
- the biasa
- the allocated region to render intodirection
- the direction from the current position that can be thought of as the arrow keys typically found on a keyboard; this may be one of the following: SwingConstants.WEST
SwingConstants.EAST
SwingConstants.NORTH
SwingConstants.SOUTH
biasRet
- an array contain the bias that was checkedBadLocationException
- the given position is not a valid position within the documentIllegalArgumentException
- if direction
is invalid
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/swing/text/AsyncBoxView.html