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.AbstractInputGroupAddon;
024    import org.gwtbootstrap3.client.ui.base.HasIcon;
025    import org.gwtbootstrap3.client.ui.base.HasIconPosition;
026    import org.gwtbootstrap3.client.ui.base.mixin.IconTextMixin;
027    import org.gwtbootstrap3.client.ui.constants.IconFlip;
028    import org.gwtbootstrap3.client.ui.constants.IconPosition;
029    import org.gwtbootstrap3.client.ui.constants.IconRotate;
030    import org.gwtbootstrap3.client.ui.constants.IconSize;
031    import org.gwtbootstrap3.client.ui.constants.IconType;
032    import org.gwtbootstrap3.client.ui.constants.Styles;
033    
034    import com.google.gwt.user.client.ui.HasText;
035    
036    /**
037     * Prepends or appends texts to input fields.
038     * <p/>
039     * For prepending/appending {@link Button} see {@link InputGroupButton}.
040     * Needs to be encapsulated in an {@link InputGroup}.
041     * <h3>UiBinder example</h3>
042     * <pre>{@code
043     *     <b:InputGroup>
044     *         <b:InputGroupAddon>Prepend something</b:InputGroupAddon>
045     *         <b:TextBox/>
046     *         <b:InputGroupAddon>Append something</b:InputGroupAddon>
047     *     </b:InputGroup>
048     * }</pre>
049     * <p/>
050     * Also see Bootstrap <a href="http://getbootstrap.com/components/#input-groups">documentation</a>.
051     *
052     * @author Sven Jacobs
053     * @see InputGroup
054     * @see InputGroupButton
055     */
056    public class InputGroupAddon extends AbstractInputGroupAddon implements HasText, HasIcon, HasIconPosition {
057    
058        IconTextMixin<InputGroupAddon> iconTextMixin = new IconTextMixin<InputGroupAddon>(this);
059    
060        public InputGroupAddon() {
061            super(Styles.INPUT_GROUP_ADDON);
062            iconTextMixin.addTextWidgetToParent();
063        }
064    
065        @Override
066        public void setText(final String text) {
067            iconTextMixin.setText(text);
068        }
069    
070        @Override
071        public String getText() {
072            return iconTextMixin.getText();
073        }
074    
075        @Override
076        public void setIcon(final IconType iconType) {
077            iconTextMixin.setIcon(iconType);
078        }
079    
080        @Override
081        public IconType getIcon() {
082            return iconTextMixin.getIcon();
083        }
084    
085        @Override
086        public void setIconPosition(final IconPosition iconPosition) {
087            iconTextMixin.setIconPosition(iconPosition);
088        }
089    
090        @Override
091        public IconPosition getIconPosition() {
092            return iconTextMixin.getIconPosition();
093        }
094    
095        @Override
096        public void setIconSize(final IconSize iconSize) {
097            iconTextMixin.setIconSize(iconSize);
098        }
099    
100        @Override
101        public IconSize getIconSize() {
102            return iconTextMixin.getIconSize();
103        }
104    
105        @Override
106        public void setIconFlip(final IconFlip iconFlip) {
107            iconTextMixin.setIconFlip(iconFlip);
108        }
109    
110        @Override
111        public IconFlip getIconFlip() {
112            return iconTextMixin.getIconFlip();
113        }
114    
115        @Override
116        public void setIconRotate(final IconRotate iconRotate) {
117            iconTextMixin.setIconRotate(iconRotate);
118        }
119    
120        @Override
121        public IconRotate getIconRotate() {
122            return iconTextMixin.getIconRotate();
123        }
124    
125        @Override
126        public void setIconBordered(final boolean iconBordered) {
127            iconTextMixin.setIconBordered(iconBordered);
128        }
129    
130        @Override
131        public boolean isIconBordered() {
132            return iconTextMixin.isIconBordered();
133        }
134    
135        @Override
136        public void setIconMuted(final boolean iconMuted) {
137            iconTextMixin.setIconMuted(iconMuted);
138        }
139    
140        @Override
141        public boolean isIconMuted() {
142            return iconTextMixin.isIconMuted();
143        }
144    
145        @Override
146        public void setIconLight(final boolean iconLight) {
147            iconTextMixin.setIconLight(iconLight);
148        }
149    
150        @Override
151        public boolean isIconLight() {
152            return iconTextMixin.isIconLight();
153        }
154    
155        @Override
156        public void setIconSpin(final boolean iconSpin) {
157            iconTextMixin.setIconSpin(iconSpin);
158        }
159    
160        @Override
161        public boolean isIconSpin() {
162            return iconTextMixin.isIconSpin();
163        }
164    
165        @Override
166        public void setIconFixedWidth(final boolean iconFixedWidth) {
167            iconTextMixin.setIconFixedWidth(iconFixedWidth);
168        }
169    
170        @Override
171        public boolean isIconFixedWidth() {
172            return iconTextMixin.isIconFixedWidth();
173        }
174    }