/*
 * Created on Apr 6, 2003
 *
 * To change this generated comment go to 
 * Window>Preferences>Java>Code Generation>Code Template
 */
package colorpicker;

import java.awt.*;
import java.util.*;

/**
 * @author Christoph
 */
public class ColorModel {
	private static final Color DEFAULT = Color.black;  
	private Collection listeners = new TreeSet();
	private Color color = Color.black;
	
	public ColorModel() {
		this(DEFAULT);
	}
	
	public ColorModel(Color c) {
		color = c;
	}
	
	public void addColorListener(ColorListener cl) {
		listeners.add(cl);
	}
	
	public void removeColorListener(ColorListener cl) {
		listeners.remove(cl);
	}
	
	private void notifyListeners() {
		ColorEvent evt = new ColorEvent(this, color);
		Iterator it = listeners.iterator();
		ColorListener cl;
		while (it.hasNext()) {
			cl = (ColorListener)it.next();
			cl.colorChanged(evt);
		}
	}
	
	public void setColor(Color c) {
		color = c;
		notifyListeners();
	}
	
	public Color getColor() {
		return color;
	}
	
	public void setRed(int red) {
		color = new Color(red, color.getGreen(), color.getBlue());
		notifyListeners();
	}
	
	public void setGreen(int green) {
		color = new Color(color.getRed(), green, color.getBlue());
		notifyListeners();
	}
	
	public void setBlue(int blue) {
		color = new Color(color.getRed(), color.getGreen(), blue);
		notifyListeners();
	}
	
	public void setDarker() {
		color = color.darker();
		notifyListeners();
	}
	
	public void setBrighter() {
		color = color.brighter();
		notifyListeners();
	}
}
