001    package org.gwtbootstrap3.client.ui;
002    
003    /*
004     * #%L
005     * GwtBootstrap3
006     * %%
007     * Copyright (C) 2013 GwtBootstrap3
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    
023    import org.gwtbootstrap3.client.ui.base.HasInputType;
024    import org.gwtbootstrap3.client.ui.base.ValueBoxBase;
025    import org.gwtbootstrap3.client.ui.constants.ElementTags;
026    import org.gwtbootstrap3.client.ui.constants.InputType;
027    import org.gwtbootstrap3.client.ui.constants.Styles;
028    
029    import com.google.gwt.dom.client.Document;
030    import com.google.gwt.text.shared.testing.PassthroughParser;
031    import com.google.gwt.text.shared.testing.PassthroughRenderer;
032    import com.google.gwt.uibinder.client.UiConstructor;
033    
034    /**
035     * @author Joshua Godi
036     */
037    public class Input extends ValueBoxBase<String> implements HasInputType {
038    
039        private static final String MIN = "min";
040        private static final String MAX = "max";
041    
042        public Input() {
043            super(Document.get().createElement(ElementTags.INPUT), PassthroughRenderer.instance(), PassthroughParser.instance());
044            addStyleName(Styles.FORM_CONTROL);
045        }
046    
047        @UiConstructor
048        public Input(final InputType type) {
049            this();
050            setType(type);
051        }
052    
053        public void setMin(final String min) {
054            getElement().setAttribute(MIN, min);
055        }
056    
057        public void setMax(final String max) {
058            getElement().setAttribute(MAX, max);
059        }
060    
061        @Override
062        public void setType(final InputType inputType) {
063            getElement().setAttribute(TYPE, inputType.getType());
064        }
065    
066        @Override
067        public InputType getType() {
068            if (getElement().getAttribute(TYPE) == null || getElement().getAttribute(TYPE).isEmpty()) {
069                return null;
070            }
071            return InputType.valueOf(getElement().getAttribute(TYPE));
072        }
073    
074        @Override
075        public void setPlaceholder(final String placeHolder) {
076            getElement().setAttribute(PLACEHOLDER, placeHolder != null ? placeHolder : "");
077        }
078    
079        @Override
080        public String getPlaceholder() {
081            return getElement().getAttribute(PLACEHOLDER);
082        }
083    
084    }