package org.csstudio.sds.ui.internal.editor.newproperties; import org.csstudio.sds.internal.model.BooleanProperty; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; /** * Section for {@link BooleanProperty}. * * @author Sven Wende * */ public class BooleanSection extends AbstractBaseSection<BooleanProperty> { private Button checkbox; private SelectionListener _selectionListener; public BooleanSection(String propertyId) { super(propertyId); } /** *{@inheritDoc} */ @Override protected void doCreateControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) { GridLayoutFactory.swtDefaults().numColumns(1).applyTo(parent); // .. create the checkbox checkbox = getWidgetFactory().createButton(parent, null, SWT.CHECK); GridDataFactory.fillDefaults().applyTo(checkbox); // .. listen to changes _selectionListener = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { applyPropertyChange(checkbox.getSelection()); } }; checkbox.addSelectionListener(_selectionListener); } @Override protected void doRefreshControls(BooleanProperty widgetProperty) { if (widgetProperty != null && !checkbox.isDisposed()) { boolean selected = widgetProperty.getPropertyValue(); checkbox.removeSelectionListener(_selectionListener); checkbox.setSelection(selected); checkbox.addSelectionListener(_selectionListener); } } }