package org.ovirt.engine.ui.common.widget;
import org.ovirt.engine.ui.uicommonweb.models.Model;
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(final Model model) {
super();
checkBox = new ModelBoundCheckBox(model, false);
setWidth("100%"); //$NON-NLS-1$
setHeight("100%"); //$NON-NLS-1$
setVerticalAlignment(ALIGN_MIDDLE);
setChecked(false);
model.getPropertyChangedEvent().addListener((ev, sender, args) -> {
String propName = args.propertyName;
if ("IsSelected".equals(propName)) { //$NON-NLS-1$
setChecked(model.getIsSelected());
}
});
}
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"); //$NON-NLS-1$ //$NON-NLS-2$
}
protected ModelBoundCheckBox getCheckBox() {
return checkBox;
}
}