package org.limewire.ui.swing.components;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager2;
import java.util.LinkedList;
import java.util.List;
/**
* A layout that vertically stacks the components and enforces
* that they are given an equal amount of space.
*
* <p> This exists because miglayout cannot be trusted.
*/
public class SegmentLayout implements LayoutManager2 {
private final List<Component> components = new LinkedList<Component>();
@Override
public void addLayoutComponent(String name, Component comp) {
components.add(comp);
}
@Override
public void layoutContainer(Container parent) {
int height = parent.getHeight();
int width = parent.getWidth();
int cellHeight = height;
if (components.size() != 0) {
cellHeight /= components.size();
}
int cellStart = 0;
for ( Component c : components ) {
c.setBounds(0, cellStart, width, cellHeight);
cellStart += cellHeight;
}
}
@Override
public Dimension minimumLayoutSize(Container parent) {
return parent.getSize();
}
@Override
public Dimension preferredLayoutSize(Container parent) {
return parent.getSize();
}
@Override
public void removeLayoutComponent(Component comp) {
components.remove(comp);
}
@Override
public void addLayoutComponent(Component comp, Object constraints) {
components.add(comp);
}
@Override
public float getLayoutAlignmentX(Container target) {
return 0;
}
@Override
public float getLayoutAlignmentY(Container target) {
return 0;
}
@Override
public void invalidateLayout(Container target) {
}
@Override
public Dimension maximumLayoutSize(Container target) {
return target.getMaximumSize();
}
}