package logo.ui;

import java.awt.Panel;
import java.awt.Scrollbar;
import java.awt.Color;
import java.awt.Label;
import java.awt.GridBagLayout;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Dimension;

public class ColorChooser extends Panel {

   ColorChooserSample sample = new ColorChooserSample();

   ColorScroller red = new ColorScroller("Red: 0",new Color(255,0,0));
   ColorScroller green = new ColorScroller("Green: 0",new Color(0,255,0));
   ColorScroller blue = new ColorScroller("Blue: 0",new Color(0,0,255));

   public ColorChooser() {

    GridBagLayout gridBag = new GridBagLayout();
    GridBagConstraints gbc = new GridBagConstraints();

      setLayout(gridBag);
      gbc.fill=GridBagConstraints.BOTH;
      gbc.weightx=1.0;
      gbc.weighty=1.0;

      gbc.gridheight=3;
      gbc.gridx=0;
      gbc.gridy=0;

      gridBag.setConstraints(sample,gbc);

      gbc.fill=GridBagConstraints.HORIZONTAL;

      gbc.gridheight=1;
      gbc.gridx=1;
      gbc.gridy=0;
      gridBag.setConstraints(red,gbc);

      gbc.gridx=1;
      gbc.gridy=1;
      gridBag.setConstraints(green,gbc);

      gbc.gridx=1;
      gbc.gridy=2;
      gridBag.setConstraints(blue,gbc);

      add(sample);
      add(red);
      add(green);
      add(blue);

   }

   public Color getColor() {
    return new Color(red.getValue(),green.getValue(),blue.getValue());
   }

   public void setColor(Color c) {
      red.setValue(c.getRed());
      green.setValue(c.getGreen());
      blue.setValue(c.getBlue());
      changeColor();
   }

   public void changeColor() {
      sample.setColor(getColor());
      sample.repaint();
   }

   public boolean handleEvent(Event e) {

      switch(e.id) {
         case Event.SCROLL_ABSOLUTE:
         case Event.SCROLL_LINE_DOWN:
         case Event.SCROLL_LINE_UP:
         case Event.SCROLL_PAGE_DOWN:
         case Event.SCROLL_PAGE_UP:
            changeColor();
            return true;
      }
      return false;
   }
}

class ColorChooserSample extends Panel {

   Color myColor=Color.black;

   public void setColor(Color c) {
      myColor = c;
   }

   public void paint(Graphics g) {
      g.setColor(myColor);
      g.fillRect(0,0,size().width,size().height);
   }
}

class ColorScroller extends Scrollbar {

//  Scrollbar scroller;

  public ColorScroller(String s, Color c) {
      super(Scrollbar.HORIZONTAL);
      setBackground(c);
      setValues(0,15,0,255);
  }

}
