package org.ovirt.engine.ui.common.widget.editor; import java.util.List; import org.gwtbootstrap3.client.ui.constants.Styles; 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.Unit; import com.google.gwt.editor.client.IsEditor; import com.google.gwt.text.shared.Renderer; /** * Composite Editor that uses {@link ListModelRadioGroup}. * * @param <T> * Radio box item type. */ public class ListModelRadioGroupEditor<T> extends AbstractValidatedWidgetWithLabel<T, ListModelRadioGroup<T>> implements IsEditor<WidgetWithLabelEditor<T, ListModelRadioGroupEditor<T>>> { private final WidgetWithLabelEditor<T, ListModelRadioGroupEditor<T>> editor; public ListModelRadioGroupEditor() { this(new StringRenderer<T>()); } public ListModelRadioGroupEditor(VisibilityRenderer visibilityRenderer) { this(new StringRenderer<T>(), visibilityRenderer); } public ListModelRadioGroupEditor(Renderer<T> renderer, VisibilityRenderer visibilityRenderer) { super(new ListModelRadioGroup<>(renderer), visibilityRenderer); this.editor = WidgetWithLabelEditor.of(getContentWidget().asEditor(), this); } public ListModelRadioGroupEditor(Renderer<T> renderer) { this(renderer, new VisibilityRenderer.SimpleVisibilityRenderer()); } public RadioGroup<T> asRadioGroup() { return getContentWidget(); } @Override public WidgetWithLabelEditor<T, ListModelRadioGroupEditor<T>> asEditor() { return editor; } @Override public void setUsePatternFly(boolean use) { super.setUsePatternFly(use); asRadioGroup().setUsePatternFly(use); if (use) { getContentWidgetElement().removeClassName(Styles.FORM_CONTROL); removeContentWidgetStyleName(Styles.FORM_CONTROL); getValidatedWidgetStyle().setPadding(0, Unit.PX); hideLabel(); } } @Override public void markAsValid() { super.markAsValid(); getValidatedWidgetStyle().setBorderStyle(BorderStyle.NONE); } @Override public void markAsInvalid(List<String> validationHints) { super.markAsInvalid(validationHints); getValidatedWidgetStyle().setBorderStyle(BorderStyle.SOLID); } }