protected Alignment createVerticalLeading(Component me, Rectangle bounds, Container parent) {
int min = Integer.MIN_VALUE;
int pref = Integer.MIN_VALUE;
int count = parent.getComponentCount();
GroupLayout layout = (GroupLayout) parent.getLayout();
LayoutStyle layoutStyle = LayoutStyle.getInstance();
for (int i = 0; i < count; i++) {
Component target = parent.getComponent(i);
Constraints constraints = layout.getConstraints(target);
Rectangle targetBounds = target.getBounds();
if (constraints != null && isOverlap(bounds.x, bounds.width, targetBounds.x, targetBounds.width)) {
Alignment vertical = constraints.getVertical();
Dimension prefs = target.getPreferredSize();
Dimension mins = target.getMinimumSize();
if (vertical instanceof Trailing) {
int gap = layoutStyle.getPreferredGap((JComponent) target, (JComponent) me, ComponentPlacement.UNRELATED, SwingConstants.NORTH, parent);
Trailing trailing = (Trailing) vertical;
int pref_size = trailing.getSize() == Alignment.PREFERRED ? prefs.height : trailing.getSize();
int min_size = pref_size > mins.height ? mins.height : pref_size;
int actual = gap + min_size + trailing.getTrailing();
if (actual > min)
min = actual;
actual = gap + pref_size + trailing.getTrailing();
if (actual > pref)
pref = actual;
} else if (vertical instanceof Bilateral) {
int gap = layoutStyle.getPreferredGap((JComponent) target, (JComponent) me, ComponentPlacement.RELATED, SwingConstants.NORTH, parent);
Bilateral bilateral = (Bilateral) vertical;
int actual = gap + mins.height + bilateral.getTrailing();
if (actual > min)
min = actual;
actual = gap + prefs.height + bilateral.getTrailing();
if (actual > pref)
pref = actual;
}
}
}
int gap = layoutStyle.getContainerGap((JComponent) me, SwingConstants.SOUTH, parent);
if (gap > min)
min = gap;
if (gap > pref)
pref = gap;
Spring spring = new Spring(min, pref);