package cnp.ew.notebook;
import cnp.ew.util.*;
import java.awt.*;
import java.util.*;
import cnp.ew.lightweight.*;

public class CpNotebookPagesPanelLc extends CpAbstractLc
{
    Vector pages = new Vector();
    int selectedPageIndex = -1;

    public CpNotebookPagesPanelLc()
    {
        super();
        setBackground(Color.lightGray);
    }

    public CpLightweightComponent getSelectedPage()
    {
        return (CpLightweightComponent)pages.elementAt(selectedPageIndex);
    }

    public void setSelectedPageIndex(int index)
    {
        CpLightweightComponent oldSelectedPage;

        enableDamageRepair(false);
        if (selectedPageIndex >= 0) {
            oldSelectedPage = (CpLightweightComponent)pages.elementAt(selectedPageIndex);
            oldSelectedPage.notifyObservers(PAGE_DEACTIVATING);
            oldSelectedPage.hide(true);
        }
        CpLightweightComponent newSelectedPage = (CpLightweightComponent)pages.elementAt(index);
        selectedPageIndex = index;
        newSelectedPage.notifyObservers(PAGE_ACTIVATING);
        newSelectedPage.hide(false);
        // if this is too slow, we'll come up with a scheme for caching layout.
        layout();
        enableDamageRepair(true);
        repairDamage();
    }

    public void layout()
    {
        if (selectedPageIndex >= 0) {
            Insets insets = insets();
            CpLightweightComponent page = (CpLightweightComponent)pages.elementAt(selectedPageIndex);
            page.reshape(insets.left, insets.top, size().width - insets.left - insets.right, size().height - insets.top - insets.bottom);
        }
    }

    public void addPage(CpLightweightComponent lc)
    {
        pages.addElement(lc);
        add(lc);
        lc.hide(true);
    }

    public int getPageCount()
    {
        return pages.size();
    }

    public void paint(Graphics g, Rectangle clipRect)
    {
        g.setColor(getBackground());
        g.fillRect(0, 0, size().width, size().height);
    }
}



