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