package org.ovirt.engine.ui.webadmin.widget; import org.ovirt.engine.core.compat.Event; import org.ovirt.engine.core.compat.EventArgs; import org.ovirt.engine.core.compat.IEventListener; import org.ovirt.engine.ui.uicommonweb.models.Model; import com.google.gwt.core.client.GWT; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.user.client.ui.CheckBox; /** * Check box widget bound to UiCommon model "IsSelected" property. */ public class ModelBoundCheckBox extends CheckBox { private final Model model; public ModelBoundCheckBox(Model model) { super(); this.model = model; registerModelPropertyChangeListener(); registerChangeHandler(); } @Override public void setValue(Boolean value) { super.setValue(value); model.setIsSelected(value); } private void registerChangeHandler() { addValueChangeHandler(new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { model.setIsSelected(event.getValue()); } }); } private void registerModelPropertyChangeListener() { model.getPropertyChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { boolean isSelected = model.getIsSelected(); GWT.log("Model value changed to " + model.getIsSelected()); ModelBoundCheckBox.super.setValue(isSelected, true); } }); } }