package gve.calc.logic;

import java.awt.*;

public class TableauPartLayout implements LayoutManager {
	public TableauPartLayout() {}

	public void addLayoutComponent(String name,Component target) {}

	public void removeLayoutComponent(Component target) {}

	public Dimension preferredLayoutSize(Container target) {
		// Oops! In JDK1.1.5, the value returned by Component.getPreferredSize()
		// must be considered read only! If we would change it, following
		// calls to getPreferredSize() will return this changed value!
		Dimension tdim = target.getComponent(0).getPreferredSize();
		Dimension ldim = target.getComponent(1).getPreferredSize();
		Dimension result = new Dimension(ldim);
		if (target.getComponentCount() > 2) {
			Dimension rdim = target.getComponent(2).getPreferredSize();
			result.width += 10+rdim.width;
			if (rdim.height > ldim.height) result.height = rdim.height;
		}
		// result is now the reauired size for the bottom parts
		if (tdim.width > result.width) result.width = tdim.width;
		result.height += 10 + tdim.height;
		return result;
	}

	public Dimension minimumLayoutSize(Container target) {
		return preferredLayoutSize(target);
	}

	public void layoutContainer(Container target) {
		Component top = target.getComponent(0);
		Component left = target.getComponent(1);
		top.validate();
		left.validate();
		Dimension topdim = top.getPreferredSize();
		Dimension leftdim = left.getPreferredSize();
		Component right = null;
		if (target.getComponentCount() > 2) {
			right = target.getComponent(2);
			right.validate();
		}
		Dimension siz = target.getSize();
//System.out.println("Total height "+siz.height+" top height "+topdim.height);
		top.setBounds((siz.width-topdim.width)/2,0,topdim.width,topdim.height);
//System.out.println("\ttop is now "+top); top.list();
		int y = topdim.height+10;
		if (right == null) {
			left.setBounds((siz.width-leftdim.width)/2,y,leftdim.width,leftdim.height);
		} else {
			Dimension rightdim = right.getPreferredSize();
			left.setBounds(0,y,leftdim.width,leftdim.height);
			right.setBounds(siz.width-rightdim.width,y,rightdim.width,rightdim.height);
		}
	}
}