package org.richfaces.sandbox.colorpicker;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import java.awt.*;
import java.io.Serializable;
@SessionScoped
@ManagedBean
public class ColorpickerBean implements Serializable {
// ------------------------------ FIELDS ------------------------------
public Color objectColor = Color.MAGENTA;
public String stringColor = "#aaFFaa";
private ColorConverter colorConverter = new ColorConverter();
// -------------------------- STATIC METHODS --------------------------
public static Color hex2Rgb(String colorStr) {
return new Color(
Integer.valueOf(colorStr.substring(1, 3), 16),
Integer.valueOf(colorStr.substring(3, 5), 16),
Integer.valueOf(colorStr.substring(5, 7), 16));
}
// --------------------- GETTER / SETTER METHODS ---------------------
public ColorConverter getColorConverter() {
return colorConverter;
}
public Color getObjectColor() {
return objectColor;
}
public void setObjectColor(Color objectColor) {
this.objectColor = objectColor;
}
public String getStringColor() {
return stringColor;
}
public void setStringColor(String stringColor) {
this.stringColor = stringColor;
}
// -------------------------- INNER CLASSES --------------------------
public class ColorConverter implements Converter {
// ------------------------ INTERFACE METHODS ------------------------
// --------------------- Interface Converter ---------------------
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return hex2Rgb(value);
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
return "#" + Integer.toHexString(((Color) value).getRGB() & 0x00ffffff);
}
}
}