package org.gwtbootstrap3.client.ui.base;
/*
* #%L
* GwtBootstrap3
* %%
* Copyright (C) 2013 GwtBootstrap3
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import java.util.List;
import org.gwtbootstrap3.client.ui.base.helper.StyleHelper;
import org.gwtbootstrap3.client.ui.base.mixin.BlankValidatorMixin;
import org.gwtbootstrap3.client.ui.base.mixin.ErrorHandlerMixin;
import org.gwtbootstrap3.client.ui.base.mixin.IdMixin;
import org.gwtbootstrap3.client.ui.constants.DeviceSize;
import org.gwtbootstrap3.client.ui.constants.InputSize;
import org.gwtbootstrap3.client.ui.form.error.ErrorHandler;
import org.gwtbootstrap3.client.ui.form.error.ErrorHandlerType;
import org.gwtbootstrap3.client.ui.form.error.HasErrorHandler;
import org.gwtbootstrap3.client.ui.form.validator.HasBlankValidator;
import org.gwtbootstrap3.client.ui.form.validator.HasValidators;
import org.gwtbootstrap3.client.ui.form.validator.ValidationChangedEvent.ValidationChangedHandler;
import org.gwtbootstrap3.client.ui.form.validator.Validator;
import com.google.gwt.dom.client.Element;
import com.google.gwt.editor.client.EditorError;
import com.google.gwt.editor.client.HasEditorErrors;
import com.google.gwt.text.shared.Parser;
import com.google.gwt.text.shared.Renderer;
import com.google.web.bindery.event.shared.HandlerRegistration;
public class ValueBoxBase<T> extends com.google.gwt.user.client.ui.ValueBoxBase<T> implements HasId, HasReadOnly,
HasResponsiveness, HasPlaceholder, HasAutoComplete, HasSize<InputSize>, HasEditorErrors<T>,
HasErrorHandler, HasValidators<T>, HasBlankValidator<T> {
private static final String MAX_LENGTH = "maxlength";
private final IdMixin<ValueBoxBase<T>> idMixin = new IdMixin<ValueBoxBase<T>>(this);
private final ErrorHandlerMixin<T> errorHandlerMixin = new ErrorHandlerMixin<T>(this);
private final BlankValidatorMixin<ValueBoxBase<T>, T> validatorMixin = new BlankValidatorMixin<ValueBoxBase<T>, T>(this,
errorHandlerMixin.getErrorHandler());
/**
* Creates a value box that wraps the given browser element handle. This is only used by subclasses.
*
* @param elem the browser element to wrap
*/
protected ValueBoxBase(final Element elem, final Renderer<T> renderer, final Parser<T> parser) {
super(elem, renderer, parser);
}
public void setMaxLength(final int maxLength) {
getElement().setAttribute(MAX_LENGTH, Integer.toString(maxLength));
}
@Override
public void setPlaceholder(final String placeHolder) {
getElement().setAttribute(PLACEHOLDER, placeHolder != null ? placeHolder : "");
}
@Override
public String getPlaceholder() {
return getElement().getAttribute(PLACEHOLDER);
}
@Override
public void setAutoComplete(final boolean autoComplete) {
getElement().setAttribute(AUTO_COMPLETE, autoComplete ? ON : OFF);
}
@Override
public String getAutoComplete() {
return getElement().getAttribute(AUTO_COMPLETE);
}
@Override
public void setId(final String id) {
idMixin.setId(id);
}
@Override
public String getId() {
return idMixin.getId();
}
@Override
public void setVisibleOn(final DeviceSize deviceSize) {
StyleHelper.setVisibleOn(this, deviceSize);
}
@Override
public void setHiddenOn(final DeviceSize deviceSize) {
StyleHelper.setHiddenOn(this, deviceSize);
}
@Override
public void setSize(InputSize size) {
StyleHelper.addUniqueEnumStyleName(this, InputSize.class, size);
}
@Override
public InputSize getSize() {
return InputSize.fromStyleName(getStyleName());
}
/** {@inheritDoc} */
@Override
public void setValue(T value, boolean fireEvents) {
errorHandlerMixin.clearErrors();
super.setValue(value, fireEvents);
}
/** {@inheritDoc} */
@Override
public void showErrors(List<EditorError> errors) {
errorHandlerMixin.showErrors(errors);
}
/** {@inheritDoc} */
@Override
public ErrorHandler getErrorHandler() {
return errorHandlerMixin.getErrorHandler();
}
/** {@inheritDoc} */
@Override
public void setErrorHandler(ErrorHandler handler) {
errorHandlerMixin.setErrorHandler(handler);
validatorMixin.setErrorHandler(handler);
}
/** {@inheritDoc} */
@Override
public ErrorHandlerType getErrorHandlerType() {
return errorHandlerMixin.getErrorHandlerType();
}
/** {@inheritDoc} */
@Override
public void setErrorHandlerType(ErrorHandlerType type) {
errorHandlerMixin.setErrorHandlerType(type);
}
@Override
public void setAllowBlank(boolean allowBlank) {
validatorMixin.setAllowBlank(allowBlank);
}
@Override
public boolean getAllowBlank() {
return validatorMixin.getAllowBlank();
}
@Override
public void addValidator(Validator<T> validator) {
validatorMixin.addValidator(validator);
}
/** {@inheritDoc} */
@Override
public boolean removeValidator(Validator<T> validator) {
return validatorMixin.removeValidator(validator);
}
@Override
public boolean getValidateOnBlur() {
return validatorMixin.getValidateOnBlur();
}
@Override
public void setValidateOnBlur(boolean validateOnBlur) {
validatorMixin.setValidateOnBlur(validateOnBlur);
}
@Override
public void setValidators(@SuppressWarnings("unchecked") Validator<T>... validators) {
validatorMixin.setValidators(validators);
}
@Override
public boolean validate() {
return validatorMixin.validate();
}
@Override
public boolean validate(boolean show) {
return validatorMixin.validate(show);
}
@Override
public void reset() {
setValue(null);
validatorMixin.reset();
}
@Override
public HandlerRegistration addValidationChangedHandler(ValidationChangedHandler handler) {
return validatorMixin.addValidationChangedHandler(handler);
}
}