package cnp.ew.list;

import java.awt.*;
import cnp.ew.displayer.*;
import cnp.ew.image.*;
import cnp.ew.util.*;
import cnp.ew.lightweight.*;

public class CpTreeIconTextDisplayer implements CpModelSelectableDisplayable, CpFocusDisplayable
{
    	// USE KEN's new Image Requester...
	public static Image openFolder, closedFolder;

    boolean isSelected;
    public boolean isFolder = true;
    CpGeneralStringDisplayer labelDisplayer;
    CpImageDisplayer imageDisplayer;

    static int openFolderId;
    static int closedFolderId;
    static int docId;

    static {
        openFolderId = CpToolkit.registerImageName("openfold.gif");
        closedFolderId = CpToolkit.registerImageName("folder.gif");
        docId = CpToolkit.registerImageName("doc.gif");
    }


    public void setDisplayers(CpGeneralStringDisplayer newLabelDisplayer, CpImageDisplayer newImageDisplayer)
    {
        labelDisplayer = newLabelDisplayer;
        imageDisplayer = newImageDisplayer;
    }

    public boolean getIsSelected()
    {
        return isSelected;
    }

    public boolean getShowFocus()
    {
        if (labelDisplayer != null) {
            return labelDisplayer.getShowFocus();
        } else {
            return false;
        }
    }

    public void setShowFocus(boolean showFocus)
    {
        if (labelDisplayer != null) {
            labelDisplayer.setShowFocus(showFocus);
        }
    }

    public Dimension preferredSize(CpLightweightComponent c)
    {
        return new Dimension(10, 10);
    }

    public void paintIn(CpLightweightComponent c, Graphics g, Rectangle r)
    {
        paintIn(c, g, r.x, r.y, r.width, r.height);
    }

    public void paintIn(CpLightweightComponent c, Graphics g, int x, int y, int w, int h)
    {
        if (isFolder) {
            if (isSelected) {
                imageDisplayer.setImage(CpToolkit.getImage(openFolderId));
            } else {
                imageDisplayer.setImage(CpToolkit.getImage(closedFolderId));
            }
        } else {
            imageDisplayer.setImage(CpToolkit.getImage( docId));
        }
        imageDisplayer.paintIn(c, g, x, y, w, h);
        labelDisplayer.paintIn(c, g, x + 20, y, w - 20, h);
    }


    public void setIsSelected(boolean newIsSelected)
    {
        isSelected = newIsSelected;
        labelDisplayer.setIsSelected(isSelected);
    }

    public Object getModel()
    {
        return labelDisplayer.getModel();
    }

    public void setModel(Object model)
    {
        labelDisplayer.setModel(((CpFolderItem)model).getName());
        isFolder = (((CpFolderItem)model).isFolder());
    }
}

