package org.ovirt.engine.ui.webadmin.widget; import org.ovirt.engine.ui.uicommonweb.models.Model; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.user.client.ui.HorizontalPanel; /** * A panel that can be toggled (checked or unchecked), providing visual feedback. */ public class TogglePanel extends HorizontalPanel { private final ModelBoundCheckBox checkBox; private boolean checked; public TogglePanel(Model model) { super(); checkBox = new ModelBoundCheckBox(model); checkBox.addValueChangeHandler(new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { setChecked(event.getValue()); } }); setWidth("100%"); setHeight("100%"); setVerticalAlignment(ALIGN_MIDDLE); setChecked(false); } public boolean isChecked() { return checked; } public void setChecked(boolean checked) { this.checked = checked; updateToggleStyle(); } public void toggle() { setChecked(!isChecked()); } void updateToggleStyle() { getElement().getStyle().setBackgroundColor(checked ? "#C3D0E0" : "#F3F7FB"); } protected ModelBoundCheckBox getCheckBox() { return checkBox; } }