package org.ovirt.engine.ui.userportal.client.components; import com.google.gwt.core.client.GWT; import org.ovirt.engine.core.compat.EventArgs; import org.ovirt.engine.core.compat.PropertyChangedEventArgs; import org.ovirt.engine.ui.uicommon.models.EntityModel; import org.ovirt.engine.ui.uicommon.models.Model; import org.ovirt.engine.core.compat.Event; import org.ovirt.engine.core.compat.IEventListener; import org.ovirt.engine.ui.userportal.client.binders.ModelBindedComponent; import com.smartgwt.client.widgets.form.fields.CheckboxItem; import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; public class CheckboxItemModelBinded extends CheckboxItem implements ModelBindedComponent { private EntityModel entityModel; public CheckboxItemModelBinded(String title, EntityModel model) { this.entityModel = model; setTitle(title); setWrapTitle(false); setValue((Boolean)model.getEntity()); setShowTitle(false); setDisabled(!model.getIsChangable()); setColSpan(2); if (!model.getIsAvailable()) setVisible(false); addChangedHandler(new ChangedHandler() { @Override public void onChanged(ChangedEvent event) { GWT.log("Check box " + getTitle() + " value change to " + event.getValue()); entityModel.setEntity((Boolean)event.getValue()); } }); entityModel.getEntityChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { setValue((Boolean)entityModel.getEntity()); } }); entityModel.getPropertyChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { String property = ((PropertyChangedEventArgs)args).PropertyName; if (property.equals("IsChangable")) { setDisabled(!entityModel.getIsChangable()); } else if (property.equals("IsAvailable")) { if (!entityModel.getIsAvailable()) { hide(); } else { show(); } } } }); } @Override public Model getModel() { return entityModel; } }