public class AsyncBoxView.ChildLocator
extends Object
A class to manage the effective position of the
child views in a localized area while changes are
being made around the localized area. The AsyncBoxView
may be continuously changing, but the visible area
needs to remain fairly stable until the layout thread
decides to publish an update to the parent.
Notification that a child changed. This can effect
whether or not new offset calculations are needed.
This is called by a ChildState object that has
changed it's major span. This can therefore be
called by multiple threads.
public Shape getChildAllocation(int index,
Shape a)
Fetch the allocation to use for a child view.
This will update the offsets for all children
not yet updated before the given index.
Parameters:
index - the child index
a - the allocation
Returns:
the allocation to use for a child view
getViewIndexAtPoint
public int getViewIndexAtPoint(float x,
float y,
Shape a)
Fetches the child view index at the given point.
This is called by the various View methods that
need to calculate which child to forward a message
to. This should be called by a block synchronized
on this object, and would typically be followed
with one or more calls to getChildAllocation that
should also be in the synchronized block.
Copy the currently allocated shape into the Rectangle
used to store the current allocation. This would be
a floating point rectangle in a Java2D-specific implementation.
Parameters:
a - the allocation
getViewIndexAtVisualOffset
protected int getViewIndexAtVisualOffset(float targetOffset)
Locate the view responsible for an offset into the box
along the major axis. Make sure that offsets are set
on the ChildState objects up to the given target span
past the desired offset.
Parameters:
targetOffset - the target offset
Returns:
index of the view representing the given visual
location (targetOffset), or -1 if no view represents
that location