package org.ovirt.engine.ui.common.widget.editor;
import org.gwtbootstrap3.client.ui.constants.Styles;
import org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel;
import org.ovirt.engine.ui.common.widget.VisibilityRenderer;
import com.google.gwt.editor.client.IsEditor;
/**
* Composite Editor that uses {@link ListModelTypeAheadChangeableListBox}.
*/
public class ListModelTypeAheadChangeableListBoxEditor extends AbstractValidatedWidgetWithLabel<String, ListModelTypeAheadChangeableListBox>
implements IsEditor<WidgetWithLabelEditor<String, ListModelTypeAheadChangeableListBoxEditor>> {
private final WidgetWithLabelEditor<String, ListModelTypeAheadChangeableListBoxEditor> editor;
public ListModelTypeAheadChangeableListBoxEditor(ListModelTypeAheadListBoxEditor.SuggestBoxRenderer<String> renderer) {
this(renderer, true);
}
public ListModelTypeAheadChangeableListBoxEditor(ListModelTypeAheadListBoxEditor.SuggestBoxRenderer<String> renderer, boolean autoAddToValidValues) {
this(renderer, autoAddToValidValues, new VisibilityRenderer.SimpleVisibilityRenderer(), ""); //$NON-NLS-1$
}
public ListModelTypeAheadChangeableListBoxEditor(ListModelTypeAheadListBoxEditor.SuggestBoxRenderer<String> renderer, VisibilityRenderer visibilityRenderer) {
this(renderer, true, visibilityRenderer, ""); //$NON-NLS-1$
}
public ListModelTypeAheadChangeableListBoxEditor(ListModelTypeAheadListBoxEditor.SuggestBoxRenderer<String> renderer,
boolean autoAddToValidValues,
VisibilityRenderer visibilityRenderer,
String nullReplacementText) {
super(new ListModelTypeAheadChangeableListBox(renderer, autoAddToValidValues, nullReplacementText), visibilityRenderer);
this.editor = WidgetWithLabelEditor.of(getContentWidget().asEditor(), this);
}
@Override
public WidgetWithLabelEditor<String, ListModelTypeAheadChangeableListBoxEditor> asEditor() {
return editor;
}
@Override
public void setUsePatternFly(final boolean usePatternfly) {
super.setUsePatternFly(usePatternfly);
removeContentWidgetStyleName(Styles.FORM_CONTROL);
}
@Override
public ListModelTypeAheadChangeableListBox asWidget() {
return getContentWidget();
}
public abstract static class NullSafeSuggestBoxRenderer extends ListModelTypeAheadListBoxEditor.NullSafeSuggestBoxRenderer<String> {
@Override
public String getReplacementStringNullSafe(String data) {
return data; // for string objects the replacement value is the object itself (null safe)
}
}
public void setNullReplacementString(String nullReplacementString) {
super.getContentWidget().setNullReplacementString(nullReplacementString);
}
}