/**
*
*/
package de.jwic.demo.model;
import java.awt.Color;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import de.jwic.demo.model.ColorModel.ColorElm;
/**
* @author lippisch
*
*/
public class ColorModel {
private Color color = new Color(0, 0, 0);
private PropertyChangeSupport chgSupport;
public enum ColorElm {
RED,
GREEN,
BLUE
}
/**
*
*/
public ColorModel() {
chgSupport = new PropertyChangeSupport(this);
}
/**
* @return the color
*/
public Color getColor() {
return color;
}
/**
* @param color the color to set
*/
public void setColor(Color color) {
Color oldColor = this.color;
this.color = color;
chgSupport.firePropertyChange("color", oldColor, this.color);
}
/**
* Returns the color as an HTML String.
* @return
*/
public String getHtmlColor() {
String sRed = Integer.toHexString(color.getRed());
String sGreen = Integer.toHexString(color.getGreen());
String sBlue = Integer.toHexString(color.getBlue());
return "#" + (sRed.length() == 1 ? "0" + sRed : sRed) +
(sGreen.length() == 1 ? "0" + sGreen : sGreen) +
(sBlue.length() == 1 ? "0" + sBlue : sBlue);
}
/**
* @param elm
* @param i
*/
public void changeColor(ColorElm elm, int change) {
int value = 0;
switch (elm) {
case BLUE:
value = color.getBlue();
break;
case GREEN:
value = color.getGreen();
break;
case RED:
value = color.getRed();
break;
}
value += change;
if (value < 0) {
value = 0;
}
if (value > 255) {
value = 255;
}
Color newColor;
switch (elm) {
case BLUE:
newColor = new Color(color.getRed(), color.getGreen(), value);
break;
case GREEN:
newColor = new Color(color.getRed(), value, color.getBlue());
break;
case RED:
newColor = new Color(value, color.getGreen(), color.getBlue());
break;
default:
newColor = color;
}
setColor(newColor);
}
/**
* @param listener
* @see java.beans.PropertyChangeSupport#addPropertyChangeListener(java.beans.PropertyChangeListener)
*/
public void addPropertyChangeListener(PropertyChangeListener listener) {
chgSupport.addPropertyChangeListener(listener);
}
/**
* @param listener
* @see java.beans.PropertyChangeSupport#removePropertyChangeListener(java.beans.PropertyChangeListener)
*/
public void removePropertyChangeListener(PropertyChangeListener listener) {
chgSupport.removePropertyChangeListener(listener);
}
}