package jbgui;

import java.awt.Frame;
import java.awt.Component;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;

public class ColorDialog extends JDialog
{	ColorDialog(Frame frame, Component component)
	{	super(frame, "Color Choice",false);
		Container contentPane = getContentPane();	
		this.component = component;
		setSize(200, 150);
		setResizable(false);
		JPanel dialogPanel = new JPanel(); // Layout the fields and labels
		contentPane.add(dialogPanel, BorderLayout.CENTER);
		dialogPanel.setLayout(new GridLayout(3, 2, 0, 2));
		dialogPanel.add(new JLabel("Red"));
		dialogPanel.add(red);
		red.setBackground(Color.red);
		dialogPanel.add(new JLabel("Green"));
		dialogPanel.add(green);
		green.setBackground(Color.green);
		dialogPanel.add(new JLabel("Blue"));
		dialogPanel.add(blue);	
		blue.setBackground(Color.blue);
		blue.setForeground(Color.white);
		JPanel buttonPanel = new JPanel(); // Layout the buttons.  
		contentPane.add(buttonPanel, BorderLayout.SOUTH);
		JButton yesButton = new JButton("Do It");
		yesButton.addActionListener(new YesListener());
		buttonPanel.add(yesButton);
		JButton noButton = new JButton("Cancel");
		noButton.addActionListener(new NoListener());
		buttonPanel.add(noButton);	
		
	}
	
	private JTextField red = new JTextField(6);
	private JTextField green = new JTextField(6);
	private JTextField blue = new JTextField(6);
	private Component component;
		
	private class YesListener implements ActionListener // Yes listener for UserColor dialog.
	{	public void actionPerformed(ActionEvent e)
		{	int r = (red.getText().length()==0)?0:Integer.parseInt(red.getText());
			int g = (green.getText().length()==0)?0:Integer.parseInt(green.getText());
			int b = (blue.getText().length()==0)?0:Integer.parseInt(blue.getText());
			if(r<0) r = 0;
			if(g<0) g = 0;
			if(b<0) b = 0;
			Color currentColor = new Color(Math.min(r,255), Math.min(g, 255), Math.min(b,255));
			component.setBackground(currentColor);
			component.getParent().setBackground(currentColor);	
			component.repaint();
		}
	}

	private class NoListener implements ActionListener // No listener for UserColor dialog.
	{	public void actionPerformed(ActionEvent e)
		{	ColorDialog.this.setVisible(false);
		}
	}
	
}