import  java.awt.*;
import  java.io.*;
import java.util.*;
import cnp.ew.util.*;
import cnp.ew.layout.*;
import cnp.ew.misc.*;
import cnp.ew.lightweight.*;
import cnp.ew.calendar.*;
import cnp.ew.spin.*;
import cnp.ew.image.*;
import cnp.ew.text.*;
import cnp.ew.kdemo.*;
import cnp.ew.diagram.*;
import cnp.ew.displayer.*;
import cnp.ew.slider.*;
import cnp.ew.scrolling.*;

public class CpSliderDemo extends CpLcApplet
implements CpObserver
{
    CpWin95SliderLc slider;
    CpScrollbarLc scrollbar;
    CpBarSliderLc barSlider;
    CpPanelLc colorExample;
    CpReadOnlyTextAreaLc colorLabel;

	public void init()
	{
	    CpPanelLc mainPanel;
	    CpAttachments attachments;
	    CpAttachmentsLayout layout;

	    int left = 10;
	    int width = 250;
	    int verticalMargin = 20;

	    super.init();

	    setLc(mainPanel = new CpPanelLc());
	    mainPanel.setBackground(Color.lightGray);
        mainPanel.setDrawOffscreen(true);
	    mainPanel.setLayout(layout = new CpAttachmentsLayout());

        slider = new CpWin95SliderLc(CpScrollbarLc.HORIZONTAL);
        slider.setValues(0, 0, 255);
        slider.addObserver(this);
        attachments = new CpAttachments(left, verticalMargin, -1, -1);
        attachments.setWidth(width);
        layout.setAttachments(slider, attachments);
        mainPanel.add(slider);

        barSlider = new CpBarSliderLc(CpScrollbarLc.HORIZONTAL);
        barSlider.setValues(128, 1, 255);
        barSlider.addObserver(this);
        attachments = new CpAttachments(left, -1, -1, -1);
        attachments.setTopAttachment(verticalMargin, slider);
        attachments.setWidth(width);
        layout.setAttachments(barSlider, attachments);
        mainPanel.add(barSlider);

        scrollbar = new CpScrollbarLc(CpScrollbarLc.HORIZONTAL);
        scrollbar.setValues(20, 275, 128);
        scrollbar.addObserver(this);
        attachments = new CpAttachments(left, -1, -1, -1);
        attachments.setTopAttachment(verticalMargin, barSlider);
        layout.setAttachments(scrollbar, attachments);
        attachments.setWidth(width);
        mainPanel.add(scrollbar);


        colorExample = new CpPanelLc();
        attachments = new CpAttachments(-1, -1, 10, -1);
        attachments.setLeftAttachment(10, scrollbar);
        attachments.setTopAttachment(CpAttachments.ATTACH_SIBLING_OPPOSITE, 0, slider);
        attachments.setBottomAttachment(CpAttachments.ATTACH_SIBLING_OPPOSITE, 0, scrollbar);
        layout.setAttachments(colorExample, attachments);
        mainPanel.add(colorExample);

        colorLabel = new CpReadOnlyTextAreaLc();
        colorLabel.setHorizontalAlignment(CpAlignable.ALIGN_CENTER);
        colorLabel.setFont(new Font("Dialog", Font.PLAIN, 10));
        attachments = new CpAttachments(-1, -1, -1, -1);
        attachments.setLeftAttachment(CpAttachments.ATTACH_SIBLING_OPPOSITE, 0, colorExample);
        attachments.setRightAttachment(CpAttachments.ATTACH_SIBLING_OPPOSITE, 0, colorExample);
        attachments.setTopAttachment(10, colorExample);
        layout.setAttachments(colorLabel, attachments);
        mainPanel.add(colorLabel);

        updateDisplay();
        layout();
	}

    void updateDisplay()
    {
	    Color color = new Color(slider.getValue(), barSlider.getValue(), scrollbar.getValue());
	    colorLabel.enableDamageRepair(false);
	    colorExample.setBackground(color);
	    colorLabel.enableDamageRepair(true);
	    colorLabel.setText("R: " + slider.getValue() + " G: " + barSlider.getValue() + " B: " + scrollbar.getValue());

    }

	public void update(CpObservable target, int facet, Object arg)
	{
	    if (facet == CpEvent.OBJECT_CHANGED || facet == CpEvent.OBJECT_CHANGING) {
	        updateDisplay();
    	}
	}
}



