001    /*
002     *  Copyright 2012 GWT-Bootstrap
003     *
004     *  Licensed under the Apache License, Version 2.0 (the "License");
005     *  you may not use this file except in compliance with the License.
006     *  You may obtain a copy of the License at
007     *
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     *
010     *  Unless required by applicable law or agreed to in writing, software
011     *  distributed under the License is distributed on an "AS IS" BASIS,
012     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     *  See the License for the specific language governing permissions and
014     *  limitations under the License.
015     */
016    package com.github.gwtbootstrap.client.ui.base;
017    
018    import com.github.gwtbootstrap.client.ui.constants.AlternateSize;
019    import com.github.gwtbootstrap.client.ui.constants.Constants;
020    import com.github.gwtbootstrap.client.ui.constants.Device;
021    import com.google.gwt.core.client.GWT;
022    import com.google.gwt.dom.client.Element;
023    import com.google.gwt.text.shared.Parser;
024    import com.google.gwt.text.shared.Renderer;
025    
026    /**
027     * A ValueBoxBase extending for Bootstarp style.
028     * 
029     * <pre>
030     * It is GWT's {@link com.google.gwt.user.client.ui.ValueBoxBase} extending for Bootstrap style.
031     * </pre>
032     * @since 2.0.4.0
033     * 
034     * @author ohashi keisuke
035     * @see com.google.gwt.user.client.ui.ValueBoxBase
036     * @param <T> the value type
037     */
038    public class ValueBoxBase<T> extends com.google.gwt.user.client.ui.ValueBoxBase<T> implements HasPlaceholder, HasAlternateSize, IsSearchQuery, HasSize, HasId, IsResponsive , HasStyle{
039    
040            /** placeholderHelper */
041            private PlaceholderHelper placeholderHelper = GWT.create(PlaceholderHelper.class);
042    
043            /**
044             * Creates a value box that wraps the given browser element handle. This is
045             * only used by subclasses.
046             * 
047             * @param elem
048             *            the browser element to wrap
049             */
050            protected ValueBoxBase(Element elem,
051                    Renderer<T> renderer,
052                    Parser<T> parser) {
053                    super(elem, renderer, parser);
054            }
055    
056            /**
057             * {@inheritDoc}
058             */
059            @Override
060            public void setPlaceholder(String placeholder) {
061                    placeholderHelper.setPlaceholer(getElement(), placeholder);
062            }
063    
064            /**
065             * {@inheritDoc}
066             */
067            @Override
068            public String getPlaceholder() {
069                    return placeholderHelper.getPlaceholder(getElement());
070            }
071    
072            /**
073             * {@inheritDoc}
074             */
075            @Override
076            public void setSearchQuery(boolean searchQuery) {
077                    SearchQueryStyleHelper.setSearchQuery(this, searchQuery);
078            }
079    
080            /**
081             * {@inheritDoc}
082             */
083            @Override
084            public boolean isSearchQuery() {
085                    return SearchQueryStyleHelper.isSearchQuery(this);
086            }
087    
088            /**
089             * {@inheritDoc}
090             */
091            @Override
092            public void setAlternateSize(AlternateSize size) {
093                    StyleHelper.changeStyle(this, size, AlternateSize.class);
094            }
095    
096            /**
097             * {@inheritDoc}
098             */
099            @Override
100            public void setSize(int size) {
101                    SizeHelper.setSize(this, size);
102            }
103    
104            /**
105             * {@inheritDoc}
106             */
107            @Override
108            public String getId() {
109                    return getElement().getId();
110            }
111    
112            /**
113             * {@inheritDoc}
114             */
115            @Override
116            public void setId(String id) {
117                    getElement().setId(id);
118            }
119    
120            /**
121             * {@inheritDoc}
122             */
123            @Override
124            public void setEnabled(boolean enabled) {
125                    super.setEnabled(enabled);
126                    if (enabled) {
127                            removeStyleName(Constants.DISABLED);
128                    } else {
129                            addStyleName(Constants.DISABLED);
130                    }
131            }
132    
133            /**
134             * {@inheritDoc}
135             */
136            @Override
137            public void setShowOn(Device device) {
138                    ResponsiveHelper.setShowOn(this, device);
139            }
140    
141            /**
142             * {@inheritDoc}
143             */
144            @Override
145            public void setHideOn(Device device) {
146                    ResponsiveHelper.setHideOn(this, device);
147                    
148            }
149    
150            /**
151             * {@inheritDoc}
152             */
153            @Override
154            public void setStyle(Style style) {
155                    StyleHelper.setStyle(this, style);
156            }
157    
158            /**
159             * {@inheritDoc}
160             */
161            @Override
162            public void addStyle(Style style) {
163                    StyleHelper.addStyle(this, style);
164            }
165    
166            /**
167             * {@inheritDoc}
168             */
169            @Override
170            public void removeStyle(Style style) {
171                    StyleHelper.removeStyle(this, style);
172                    
173            }
174    }