package au.com.vaadinutils.fields;
import au.com.vaadinutils.domain.iColor;
import au.com.vaadinutils.domain.iColorFactory;
import com.vaadin.ui.ColorPicker;
import com.vaadin.ui.Component;
import com.vaadin.ui.CustomField;
import com.vaadin.ui.components.colorpicker.ColorChangeEvent;
import com.vaadin.ui.components.colorpicker.ColorChangeListener;
public class ColorPickerField extends CustomField<iColor>
{
private static final long serialVersionUID = -1573292123807845727L;
private ColorPicker colorPicker;
private iColorFactory colorFactory;
public ColorPickerField(iColorFactory colorFactory)
{
this.colorFactory = colorFactory;
this.colorPicker = new ColorPicker();
this.colorPicker.addColorChangeListener(new ColorChangeListener()
{
private static final long serialVersionUID = 1L;
@Override
public void colorChanged(ColorChangeEvent event)
{
setValue(ColorPickerField.this.colorFactory.createColor(event.getColor()));
}
});
}
@Override
protected Component initContent()
{
return this.colorPicker;
}
@Override
public Class<? extends iColor> getType()
{
return iColor.class;
}
@Override
public iColor getInternalValue()
{
return this.colorFactory.createColor(this.colorPicker.getColor());
}
@Override
public void setInternalValue(iColor newFieldValue)
{
if (newFieldValue != null)
this.colorPicker.setColor(new com.vaadin.shared.ui.colorpicker.Color(newFieldValue.getRed(), newFieldValue
.getGreen(), newFieldValue.getBlue(), newFieldValue.getAlpha()));
super.setInternalValue(newFieldValue);
}
}