package name.abuchen.portfolio.ui.util.viewers;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.CheckboxCellEditor;
import org.eclipse.swt.widgets.Composite;
public class BooleanEditingSupport extends PropertyEditingSupport
{
public BooleanEditingSupport(Class<?> subjectType, String attributeName)
{
super(subjectType, attributeName);
}
@Override
public CellEditor createEditor(Composite composite)
{
return new CheckboxCellEditor(composite);
}
@Override
public Object getValue(Object element) throws Exception
{
Boolean v = (Boolean) descriptor().getReadMethod().invoke(adapt(element));
return v != null ? v : ""; //$NON-NLS-1$
}
@Override
public void setValue(Object element, Object value) throws Exception
{
Object subject = adapt(element);
Boolean newValue = (Boolean) value;
Boolean oldValue = (Boolean) descriptor().getReadMethod().invoke(subject);
if (!value.equals(oldValue))
{
descriptor().getWriteMethod().invoke(subject, newValue);
notify(element, newValue, oldValue);
}
}
}