package org.goko.common.preferences.fieldeditor.preference;
import org.eclipse.jface.preference.ColorSelector;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.goko.core.common.exception.GkException;
public class ColorFieldEditor extends LabeledFieldEditor<Button> {
/** Internal color selector */
private ColorSelector colorSelector;
public ColorFieldEditor(Composite parent, int style) {
super(parent, style);
createControls(parent, style);
}
/** (inheritDoc)
* @see org.goko.common.preferences.fieldeditor.preference.PreferenceFieldEditor#getControl()
*/
@Override
public Button getControl() {
return colorSelector.getButton();
}
@Override
protected void createControls(Composite parent, int style) {
super.createControls(parent, style);
colorSelector = new ColorSelector(this);
getControl().setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));
colorSelector.addListener(new IPropertyChangeListener() {
// forward the property change of the color selector
@Override
public void propertyChange(PropertyChangeEvent event) {
ColorFieldEditor.this.fireValueChanged(event.getProperty(), event.getOldValue(), event.getNewValue());
}
});
this.pack();
}
/** (inheritDoc)
* @see org.goko.common.preferences.fieldeditor.preference.PreferenceFieldEditor#setDefaultValue()
*/
@Override
protected void setDefaultValue() throws GkException {
colorSelector.setColorValue(PreferenceConverter.getDefaultColor(getPreferenceStore(), getPreferenceName()));
}
/** (inheritDoc)
* @see org.goko.common.preferences.fieldeditor.preference.PreferenceFieldEditor#loadValue()
*/
@Override
protected void loadValue() throws GkException {
colorSelector.setColorValue(PreferenceConverter.getColor(getPreferenceStore(), getPreferenceName()));
}
/** (inheritDoc)
* @see org.goko.common.preferences.fieldeditor.preference.PreferenceFieldEditor#storeValue()
*/
@Override
protected void storeValue() throws GkException {
PreferenceConverter.setValue(getPreferenceStore(), getPreferenceName(), colorSelector.getColorValue());
}
}