package org.goko.common.preferences.fieldeditor.preference;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.goko.core.common.exception.GkException;
/**
* A field editor for a boolean type preference.
*/
public class BooleanFieldEditor extends PreferenceFieldEditor<Button> {
public BooleanFieldEditor(Composite parent, int style) {
super(parent, style);
createControls(parent, style);
}
@Override
protected void createLayout(Composite parent) {
GridLayout layout = new GridLayout(1, false);
layout.marginHeight = 2;
layout.marginWidth = 2;
setLayout(layout);
}
/** (inheritDoc)
* @see org.goko.common.preferences.fieldeditor.preference.PreferenceFieldEditor#createControls(org.eclipse.swt.widgets.Composite, int)
*/
@Override
protected void createControls(Composite parent, int style) {
super.createControls(parent, style);
control = new Button(this, SWT.CHECK);
control.setText(getLabel());
control.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));
control.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
BooleanFieldEditor.this.fireStateChanged(VALUE, !getControl().getSelection(), getControl().getSelection());
}
});
control.pack();
pack();
}
public boolean isSelected(){
return getControl().getSelection();
}
/** (inheritDoc)
* @see org.goko.common.preferences.fieldeditor.preference.PreferenceFieldEditor#setDefaultValue()
*/
@Override
protected void setDefaultValue() throws GkException {
boolean wasSelected = getControl().getSelection();
getControl().setSelection( getPreferenceStore().getDefaultBoolean(getPreferenceName()) );
fireStateChanged(VALUE, wasSelected, getControl().getSelection());
}
/** (inheritDoc)
* @see org.goko.common.preferences.fieldeditor.preference.PreferenceFieldEditor#loadValue()
*/
@Override
protected void loadValue() throws GkException {
boolean wasSelected = getControl().getSelection();
getControl().setSelection( getPreferenceStore().getBoolean(getPreferenceName()) );
fireStateChanged(VALUE, wasSelected, getControl().getSelection());
}
/** (inheritDoc)
* @see org.goko.common.preferences.fieldeditor.preference.PreferenceFieldEditor#storeValue()
*/
@Override
protected void storeValue() throws GkException {
getPreferenceStore().setValue(getPreferenceName(), getControl().getSelection());
}
/** (inheritDoc)
* @see org.goko.common.preferences.fieldeditor.preference.PreferenceFieldEditor#setLabel(java.lang.String)
*/
@Override
public void setLabel(String label) {
super.setLabel(label);
getControl().setText(label);
}
}