package cnp.ew.charts;

import cnp.ew.displayer.*;
import java.awt.*;
import cnp.ew.diagram.*;
import cnp.ew.util.*;

public class CpChartTitleLc extends CpAbstractChartItemLc
implements CpObserver
{
    CpGeneralStringDisplayer displayer;
    CpChartDataModel dataModel;

    public CpChartTitleLc()
    {
        super();
        displayer = new CpGeneralStringDisplayer();
        displayer.setFont(new Font("Dialog", Font.PLAIN, 20));
        displayer.setShouldWrap(true);
    }

    public void setChartDataModel(CpChartDataModel chartData)
    {
        dataModel = chartData;
        displayer.setText(dataModel.getChartLabel());
        dataModel.addObserver(this);
    }

    public void update(CpObservable o, int facet, Object arg)
    {
        if (facet == CpChartDataModel.CHANGED_CHART_LABEL) {
            displayer.setText(dataModel.getChartLabel());
            Rectangle bounds = bounds();
            Dimension preferredSize = displayer.preferredSize(this);
            int center = bounds.x + (bounds.width / 2);
            reshape(center - preferredSize.width / 2, bounds.y, preferredSize.width, preferredSize.height);
            repaint();
        }
    }

    public void paint(Graphics g, Rectangle clipRect)
    {
        displayer.paintIn(this, g, getClientRect());
    }

    public Dimension preferredSize()
    {
        return displayer.preferredSize(this);
    }

    public void layout()
    {
        super.layout();
        displayer.setWrapWidth(getClientRect().width);
    }

    public boolean isTransparent()
    {
        return true;
    }
}

