package org.ovirt.engine.ui.common.widget.editor;
import java.util.List;
import org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel;
import org.ovirt.engine.ui.common.widget.VisibilityRenderer;
import org.ovirt.engine.ui.common.widget.renderer.StringRenderer;
import com.google.gwt.dom.client.Style.BorderStyle;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.editor.client.IsEditor;
import com.google.gwt.text.shared.Renderer;
/**
* ListModel bound CheckBoxGroup Editor with Label that uses {@link ListModelCheckBoxGroup}.
*/
public class ListModelCheckBoxGroupEditor<T> extends AbstractValidatedWidgetWithLabel<List<T>, ListModelCheckBoxGroup<T>> implements IsEditor<WidgetWithLabelEditor<List<T>, ListModelCheckBoxGroupEditor<T>>>{
private final WidgetWithLabelEditor<List<T>, ListModelCheckBoxGroupEditor<T>> editor;
/**
* Constructor of ListModel bound CheckBoxGroup Editor with Label that uses {@link ListModelCheckBoxGroup} It uses
* the default String renderer to render the values as CheckBox labels in the CheckBoxGroup.
*/
public ListModelCheckBoxGroupEditor() {
this(new StringRenderer<T>());
}
/**
* Constructor of ListModel bound CheckBoxGroup Editor with Label that uses {@link ListModelCheckBoxGroup}
* @param renderer
* to render the values passed to ListModel's setItems and hence setAcceptableValues
*/
public ListModelCheckBoxGroupEditor(Renderer<T> renderer) {
super(new ListModelCheckBoxGroup<>(renderer), new VisibilityRenderer.SimpleVisibilityRenderer());
editor = WidgetWithLabelEditor.of(getContentWidget().asEditor(), this);
}
@Override
public void markAsValid() {
super.markAsValid();
getValidatedWidgetStyle().setBorderStyle(BorderStyle.NONE);
}
@Override
public void markAsInvalid(List<String> validationHints) {
super.markAsInvalid(validationHints);
getValidatedWidgetStyle().setDisplay(Display.INLINE_BLOCK);
}
@Override
public WidgetWithLabelEditor<List<T>, ListModelCheckBoxGroupEditor<T>> asEditor() {
return editor;
}
/**
* Api the provides handle to CheckBoxGroup and hence its public methods.
* @return CheckBoxGroup from the ListModelCheckBoxGroupEditor
*/
public CheckBoxGroup<T> asCheckBoxGroup() {
return getContentWidget();
}
}