package org.ovirt.engine.ui.webadmin.widget;
import java.util.List;
import com.google.gwt.dom.client.Style;
import com.google.gwt.dom.client.Style.BorderStyle;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
/**
* Convenience base class for widgets implementing the {@link HasValidation} interface.
*/
public abstract class AbstractValidatedWidget extends Composite implements HasValidation {
@Override
protected void initWidget(Widget widget) {
super.initWidget(widget);
applyCommonValidationStyles();
markAsValid();
}
@Override
public void markAsValid() {
applyCommonValidationStyles();
getValidatedWidgetStyle().setBorderColor("gray");
getValidatedWidget().setTitle(null);
}
@Override
public void markAsInvalid(List<String> validationHints) {
applyCommonValidationStyles();
getValidatedWidgetStyle().setBorderColor("orange");
getValidatedWidget().setTitle(getValidationTitle(validationHints));
}
protected void applyCommonValidationStyles() {
getValidatedWidgetStyle().setBorderWidth(1, Unit.PX);
getValidatedWidgetStyle().setBorderStyle(BorderStyle.SOLID);
}
String getValidationTitle(List<String> validationHints) {
return validationHints != null && validationHints.size() > 0 ? validationHints.get(0) : null;
}
protected Style getValidatedWidgetStyle() {
return getValidatedWidget().getElement().getStyle();
}
protected abstract Widget getValidatedWidget();
}