in src/main/java/org/jetbrains/plugins/spotbugs/gui/common/VerticalFlowLayout.java [230:287]
public void layoutContainer(@NotNull final Container target) {
synchronized (target.getTreeLock()) {
final Insets insets = target.getInsets();
int fillComp = -1;
int fillHeight = target.getHeight() - insets.top - insets.bottom - _vGap;
final int width = target.getWidth() - insets.left - insets.right - 2 * _hGap;
for (int i = 0; i < target.getComponentCount(); i++) {
final Component c = target.getComponent(i);
if (c.isVisible()) {
final Dimension d = c.getPreferredSize();
if ((i == _fillComponent) || ((i == (target.getComponentCount() - 1)) && fillComp == -1) && _vFill) {
fillComp = i;
fillHeight -= _vGap;
} else
fillHeight -= d.height + _vGap;
}
}
if (fillComp == -1 && _vFill)
fillComp = target.getComponentCount();
int top = insets.top + _vGap;
final int left = insets.left + _hGap;
if (!_vFill) {
switch (_vAlignment) {
case Middle:
top = insets.top + _vGap + fillHeight / 2;
break;
case Bottom:
top = insets.top + _vGap + fillHeight;
break;
}
}
for (int i = _reverse ? target.getComponentCount() - 1 : 0; _reverse ? i >= 0 : i < target.getComponentCount(); i += _reverse ? -1 : 1) {
final Component c = target.getComponent(i);
if (c.isVisible()) {
final Dimension d = c.getPreferredSize();
final int h = i == fillComp ? fillHeight : d.height;
final int w = _hFill ? width : d.width;
int l = left;
if (!_hFill) {
switch (_hAlignment) {
case Center:
l = left + (width - d.width) / 2;
break;
case Right:
l = left + width - d.width;
break;
}
}
c.setBounds(l, top, w, h);
top += h;
top += _vGap;
}
}
}
}