package cnp.ew.displayer;
import java.awt.*;
import cnp.ew.lightweight.*;

public abstract class CpAbstractBorderDisplayer implements CpBorderDisplayable
{
	public void paintIn(CpLightweightComponent c, Graphics g, Rectangle rect)
	{
	    paintIn(c, g, rect.x, rect.y, rect.width, rect.height);
	}

	public void paintIn(CpLightweightComponent c, Graphics g, int x, int y, int w, int h)
	{
	    paintBordersIn(c, g, x, y, w, h);
    }

	public Dimension preferredSize(CpLightweightComponent c)
    {
        Dimension preferredSize = new Dimension(
                getLeftBorderThickness(c) + getRightBorderThickness(c),
                getTopBorderThickness(c) + getBottomBorderThickness(c)
        );

        return preferredSize;
    }

    public Insets insets(CpLightweightComponent c)
    {
        return new Insets(
            getTopBorderThickness(c),
            getLeftBorderThickness(c),
            getBottomBorderThickness(c),
            getRightBorderThickness(c)
            );
    }

	abstract void paintBordersIn(CpLightweightComponent c, Graphics g, int x, int y, int w, int h);
	abstract public int getLeftBorderThickness(CpLightweightComponent c);
	abstract public int getRightBorderThickness(CpLightweightComponent c);
	abstract public int getTopBorderThickness(CpLightweightComponent c);
	abstract public int getBottomBorderThickness(CpLightweightComponent c);
}
