package mx.edu.ulsa.cib4132005.graficos;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 *
 */
public class DibujarColor extends JFrame {
	
	
	private JSlider jsRojo;
	private JSlider jsVerde;
	private JSlider jsAzul;
	private JTextField jtfRojo;
	private JTextField jtfVerde;
	private JTextField jtfAzul;
	private Container contenedor;
	private RectanguloColoreado rectangulo;
	private class RectanguloColoreado extends JPanel {
		public int getAzul() {
			return azul;
		}
		public void setAzul(int azul) {
			this.azul = azul;
		}
		public int getRojo() {
			return rojo;
		}	
		public void setRojo(int rojo) {
			this.rojo = rojo;
		}
		public int getVerde() {
			return verde;
		}
		public void setVerde(int verde) {
			this.verde = verde;
		}
		private int rojo;
		private int verde;
		private int azul;
		public void paintComponent(Graphics g){
			g.setColor(new Color(this.rojo,this.verde,this.azul));
			g.fillRect(20,20,this.getWidth()-30,this.getHeight()-30);
		}
	}
	private class HandlerRojo implements ChangeListener {
		public void stateChanged(ChangeEvent e) {
			int valor = DibujarColor.this.jsRojo.getValue();
			DibujarColor.this.rectangulo.setRojo(valor);
			DibujarColor.this.repaint();
			DibujarColor.this.jtfRojo.
			setText(String.valueOf(valor));
		}
	}
	private class HandlerVerde implements ChangeListener {
		public void stateChanged(ChangeEvent e) {
			int valor = DibujarColor.this.jsVerde.getValue();
			DibujarColor.this.rectangulo.setVerde(valor);
			DibujarColor.this.repaint();
			DibujarColor.this.jtfVerde.
			setText(String.valueOf(valor));
		}
	}
	private class HandlerAzul implements ChangeListener {
		public void stateChanged(ChangeEvent e) {
			int valor = DibujarColor.this.jsAzul.getValue();
			DibujarColor.this.rectangulo.setAzul(valor);
			DibujarColor.this.repaint();
			DibujarColor.this.jtfAzul.
			setText(String.valueOf(valor));
		}
	}
	public DibujarColor() { super("DibujarColor");}
	private void iniciarEncabezado(){
		JPanel jpEncabezado = new JPanel();
		jpEncabezado.setLayout(new GridLayout(2,3));
		jpEncabezado.add(new JLabel("Rojo"));
		jpEncabezado.add(new JLabel("Verde"));
		jpEncabezado.add(new JLabel("Azul"));
		jpEncabezado.add(jtfRojo  = new JTextField(3));
		jpEncabezado.add(jtfVerde = new JTextField(3));
		jpEncabezado.add(jtfAzul = new JTextField(3));
		jtfRojo.setEditable(false); jtfVerde.setEditable(false);
		jtfAzul.setEditable(false);
		this.contenedor.add(jpEncabezado,BorderLayout.NORTH); 	
	}
	public void iniciar() {
		this.contenedor = super.getContentPane();
		this.contenedor.setLayout(new BorderLayout());
		jsRojo = new JSlider(JSlider.VERTICAL,0,255,0);
		jsVerde= new JSlider(JSlider.VERTICAL,0,255,0);
		jsAzul = new JSlider(JSlider.HORIZONTAL,0,255,0);
		super.setSize(320,240);
		super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.iniciarEncabezado();
		this.contenedor.add(jsRojo,BorderLayout.WEST);
		this.contenedor.add(jsVerde,BorderLayout.EAST);
		this.contenedor.add(jsAzul,BorderLayout.SOUTH);
		this.contenedor.add(rectangulo = new RectanguloColoreado(),
				BorderLayout.CENTER);
		jsRojo.addChangeListener(new HandlerRojo());
		jsVerde.addChangeListener(new HandlerVerde());
		jsAzul.addChangeListener(new HandlerAzul());
		super.setVisible(true);
	}
	public static void main(String[] args) {
		DibujarColor vta = new DibujarColor();
		vta.iniciar();
	}
}
