public void layoutContainer()

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;
				}
			}
		}
	}