updateDepths(depth, n);
boolean expanded = n.isExpanded();
if ( n.getChildCount() == 0 || !expanded ) // is leaf
{
NodeItem l = (NodeItem)n.getPreviousSibling();
if ( l == null ) {
np.prelim = 0;
} else {
np.prelim = getParams(l).prelim + spacing(l,n,true);
}
}
else if ( expanded )
{
NodeItem leftMost = (NodeItem)n.getFirstChild();
NodeItem rightMost = (NodeItem)n.getLastChild();
NodeItem defaultAncestor = leftMost;
NodeItem c = leftMost;
for ( int i=0; c != null; ++i, c = (NodeItem)c.getNextSibling() )
{
firstWalk(c, i, depth+1);
defaultAncestor = apportion(c, defaultAncestor);
}
executeShifts(n);
double midpoint = 0.5 *
(getParams(leftMost).prelim + getParams(rightMost).prelim);
NodeItem left = (NodeItem)n.getPreviousSibling();
if ( left != null ) {
np.prelim = getParams(left).prelim + spacing(left, n, true);
np.mod = np.prelim - midpoint;
} else {
np.prelim = midpoint;