001package gwt.material.design.client.base;
002
003/*
004 * #%L
005 * GwtMaterial
006 * %%
007 * Copyright (C) 2015 GwtMaterialDesign
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import com.google.gwt.dom.client.Element;
024import com.google.gwt.editor.client.EditorError;
025import com.google.gwt.editor.client.HasEditorErrors;
026import com.google.gwt.text.shared.Parser;
027import com.google.gwt.text.shared.Renderer;
028import com.google.gwt.user.client.ui.HasEnabled;
029import com.google.web.bindery.event.shared.HandlerRegistration;
030import gwt.material.design.client.base.error.ErrorHandler;
031import gwt.material.design.client.base.error.ErrorHandlerType;
032import gwt.material.design.client.base.error.HasErrorHandler;
033import gwt.material.design.client.base.mixin.*;
034import gwt.material.design.client.base.validator.HasBlankValidator;
035import gwt.material.design.client.base.validator.HasValidators;
036import gwt.material.design.client.base.validator.ValidationChangedEvent.ValidationChangedHandler;
037import gwt.material.design.client.base.validator.Validator;
038
039import java.util.List;
040
041public class ValueBoxBase<T> extends com.google.gwt.user.client.ui.ValueBoxBase<T> implements HasId, HasColors,
042        HasGrid, HasPlaceholder, HasEnabled, HasEditorErrors<T>, HasErrorHandler, HasValidators<T>, HasBlankValidator {
043
044    private final IdMixin<ValueBoxBase<T>> idMixin = new IdMixin<>(this);
045    private final ColorsMixin<ValueBoxBase<T>> colorsMixin = new ColorsMixin<>(this);
046    private final GridMixin<ValueBoxBase<T>> gridMixin = new GridMixin<>(this);
047    private final EnabledMixin<ValueBoxBase<T>> enabledMixin = new EnabledMixin<>(this);
048    private final ErrorHandlerMixin<T> errorHandlerMixin = new ErrorHandlerMixin<>(this);
049    private final BlankValidatorMixin<ValueBoxBase<T>, T> validatorMixin = new BlankValidatorMixin<>(this,
050        errorHandlerMixin.getErrorHandler());
051
052    public ValueBoxBase(Element elem, Renderer<T> renderer, Parser<T> parser) {
053        super(elem, renderer, parser);
054    }
055
056    @Override
057    public void setId(String id) {
058        idMixin.setId(id);
059    }
060
061    @Override
062    public String getId() {
063        return idMixin.getId();
064    }
065
066    @Override
067    public void setBackgroundColor(String bgColor) {
068        colorsMixin.setBackgroundColor(bgColor);
069    }
070
071    @Override
072    public String getBackgroundColor() {
073        return colorsMixin.getBackgroundColor();
074    }
075
076    @Override
077    public void setTextColor(String textColor) {
078        colorsMixin.setTextColor(textColor);
079    }
080
081    @Override
082    public String getTextColor() {
083        return colorsMixin.getTextColor();
084    }
085
086    @Override
087    public void setGrid(String grid) {
088        gridMixin.setGrid(grid);
089    }
090
091    @Override
092    public void setOffset(String offset) {
093        gridMixin.setOffset(offset);
094    }
095
096    @Override
097    public void setPlaceholder(final String placeHolder) {
098        getElement().setAttribute("placeholder", placeHolder != null ? placeHolder : "");
099    }
100
101    @Override
102    public String getPlaceholder() {
103        return getElement().getAttribute("placeholder");
104    }
105
106    @Override
107    public void setEnabled(boolean enabled) {
108        enabledMixin.setEnabled(enabled);
109    }
110
111    @Override
112    public boolean isAllowBlank() {
113        return validatorMixin.isAllowBlank();
114    }
115
116    @Override
117    public void setAllowBlank(boolean allowBlank) {
118        validatorMixin.setAllowBlank(allowBlank);
119    }
120
121    @Override
122    public void showErrors(List<EditorError> errors) {
123        errorHandlerMixin.showErrors(errors);
124    }
125
126    @Override
127    public ErrorHandler getErrorHandler() {
128        return errorHandlerMixin.getErrorHandler();
129    }
130
131    @Override
132    public void setErrorHandler(ErrorHandler errorHandler) {
133        errorHandlerMixin.setErrorHandler(errorHandler);
134    }
135
136    @Override
137    public ErrorHandlerType getErrorHandlerType() {
138        return errorHandlerMixin.getErrorHandlerType();
139    }
140
141    @Override
142    public void setErrorHandlerType(ErrorHandlerType errorHandlerType) {
143        errorHandlerMixin.setErrorHandlerType(errorHandlerType);
144    }
145
146    @Override
147    public void addValidator(Validator<T> validator) {
148        validatorMixin.addValidator(validator);
149    }
150
151    @Override
152    public boolean isValidateOnBlur() {
153        return validatorMixin.isValidateOnBlur();
154    }
155
156    @Override
157    public boolean removeValidator(Validator<T> validator) {
158        return validatorMixin.removeValidator(validator);
159    }
160
161    @Override
162    public void reset() {
163        validatorMixin.reset();
164    }
165
166    @Override
167    public void setValidateOnBlur(boolean validateOnBlur) {
168        validatorMixin.setValidateOnBlur(validateOnBlur);
169    }
170
171    @Override
172    public void setValidators(@SuppressWarnings("unchecked") Validator<T>... validators) {
173        validatorMixin.setValidators(validators);
174    }
175
176    @Override
177    public boolean validate() {
178        return validatorMixin.validate();
179    }
180
181    @Override
182    public boolean validate(boolean show) {
183        return validatorMixin.validate(show);
184    }
185
186    @Override
187    public HandlerRegistration addValidationChangedHandler(ValidationChangedHandler handler) {
188        return validatorMixin.addValidationChangedHandler(handler);
189    }
190}