001package com.github.gwtbootstrap.timepicker.client.ui;
002
003import com.github.gwtbootstrap.client.ui.AppendButton;
004import com.github.gwtbootstrap.client.ui.base.AddOn;
005import com.github.gwtbootstrap.client.ui.base.HasIcon;
006import com.github.gwtbootstrap.client.ui.base.HasPlaceholder;
007import com.github.gwtbootstrap.client.ui.base.HasVisibility;
008import com.github.gwtbootstrap.client.ui.constants.BaseIconType;
009import com.github.gwtbootstrap.client.ui.constants.IconPosition;
010import com.github.gwtbootstrap.client.ui.constants.IconSize;
011import com.github.gwtbootstrap.client.ui.constants.IconType;
012import com.github.gwtbootstrap.client.ui.event.*;
013import com.github.gwtbootstrap.timepicker.client.ui.base.*;
014import com.google.gwt.event.logical.shared.ValueChangeHandler;
015import com.google.gwt.event.shared.HandlerRegistration;
016import com.google.gwt.user.client.ui.HasValue;
017
018import java.util.Date;
019
020/**
021 * TimeBoxAppended component
022 *
023 * @author Carlos Alexandro Becker
024 * @author Joshua Godi
025 * @since 2.3.2.0
026 */
027public class TimeBoxAppended extends AppendButton implements HasValue<Date>, HasIcon, HasVisibility,
028        HasVisibleHandlers, HasPlaceholder, HasTemplate, HasShowInputs, HasSecondStep,
029        HasModalBackdrop, HasMinuteStep, HasDisableFocus, HasDefaultTime, HasShowSeconds, HasMeridian {
030
031    /**
032     * An 'adapter' to change some aspects of the behavior of timepickerbase.
033     */
034    private class TimeBoxAppendedAdapter extends TimeBoxBase {
035        @Override
036        protected void configure() {
037            TimeBoxAppended that = TimeBoxAppended.this;
038            that.addStyleName("add-on");
039            super.configure(that);
040            getBox().getElement().setAttribute("readonly", null);
041        }
042    }
043
044    private final TimeBoxAppendedAdapter box;
045    private AddOn icon;
046
047    {
048        this.box = new TimeBoxAppendedAdapter();
049        icon = new AddOn();
050        icon.setIcon(IconType.TIME);
051        add(box);
052        add(icon);
053    }
054
055    /**
056     * {@inheritDoc}
057     */
058    @Override
059    public void setDefaultTime(DefaultTime defaultTime) {
060        box.setDefaultTime(defaultTime);
061    }
062
063    /**
064     * {@inheritDoc}
065     */
066    @Override
067    public void setDefaultTime(String defaultTime) {
068        box.setDefaultTime(defaultTime);
069    }
070
071    /**
072     * {@inheritDoc}
073     */
074    @Override
075    public void setDisableFocus(boolean disableFocus) {
076        box.setDisableFocus(disableFocus);
077    }
078
079    /**
080     * {@inheritDoc}
081     */
082    @Override
083    public void setMeridian(boolean meridian) {
084        box.setMeridian(meridian);
085    }
086
087    /**
088     * {@inheritDoc}
089     */
090    @Override
091    public void setMinuteStep(int minuteStep) {
092        box.setMinuteStep(minuteStep);
093    }
094
095    /**
096     * {@inheritDoc}
097     */
098    @Override
099    public void setModalBackdrop(boolean modalBackdrop) {
100        box.setModalBackdrop(modalBackdrop);
101    }
102
103    /**
104     * {@inheritDoc}
105     */
106    @Override
107    public void setPlaceholder(String placeholder) {
108        box.setPlaceholder(placeholder);
109    }
110
111    /**
112     * {@inheritDoc}
113     */
114    @Override
115    public String getPlaceholder() {
116        return box.getPlaceholder();
117    }
118
119    /**
120     * {@inheritDoc}
121     */
122    @Override
123    public void setSecondStep(int secondStep) {
124        box.setSecondStep(secondStep);
125    }
126
127    /**
128     * {@inheritDoc}
129     */
130    @Override
131    public void setShowInputs(boolean showInputs) {
132        box.setShowInputs(showInputs);
133    }
134
135    @Override
136    public void setShowSeconds(boolean showSeconds) {
137        box.setShowSeconds(showSeconds);
138    }
139
140    /**
141     * {@inheritDoc}
142     */
143    @Override
144    public void setTemplate(Template template) {
145        box.setTemplate(template);
146    }
147
148    /**
149     * {@inheritDoc}
150     */
151    @Override
152    public void setTemplate(String template) {
153        box.setTemplate(template);
154    }
155
156    /**
157     * {@inheritDoc}
158     */
159    @Override
160    public void setIcon(IconType type) {
161        icon.setIcon(type);
162    }
163
164    @Override
165    public void setBaseIcon(BaseIconType type) {
166        icon.setBaseIcon(type);
167    }
168
169    /**
170     * {@inheritDoc}
171     */
172    @Override
173    public void setIconSize(IconSize size) {
174        icon.setIconSize(size);
175    }
176
177    @Override
178    public void setCustomIconStyle(String customIconStyle) {
179        icon.setCustomIconStyle(customIconStyle);
180    }
181
182    @Override
183    public void setIconPosition(IconPosition position) {
184        icon.setIconPosition(position);
185    }
186
187    /**
188     * {@inheritDoc}
189     */
190    @Override
191    public Date getValue() {
192        return box.getValue();
193    }
194
195    /**
196     * {@inheritDoc}
197     */
198    @Override
199    public void setValue(Date value) {
200        box.setValue(value);
201    }
202
203    /**
204     * {@inheritDoc}
205     */
206    @Override
207    public void setValue(Date value, boolean fireEvents) {
208        box.setValue(value, fireEvents);
209    }
210
211    /**
212     * {@inheritDoc}
213     */
214    @Override
215    public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Date> handler) {
216        return box.addValueChangeHandler(handler);
217    }
218
219    /**
220     * {@inheritDoc}
221     */
222    @Override
223    public void show() {
224        box.show();
225    }
226
227    /**
228     * {@inheritDoc}
229     */
230    @Override
231    public void hide() {
232        box.hide();
233    }
234
235    /**
236     * {@inheritDoc}
237     */
238    @Override
239    public void toggle() {
240        box.toggle();
241    }
242
243    /**
244     * {@inheritDoc}
245     */
246    @Override
247    public HandlerRegistration addHideHandler(HideHandler handler) {
248        return box.addHideHandler(handler);
249    }
250
251    /**
252     * {@inheritDoc}
253     */
254    @Override
255    public HandlerRegistration addHiddenHandler(HiddenHandler handler) {
256        return box.addHiddenHandler(handler);
257    }
258
259    /**
260     * {@inheritDoc}
261     */
262    @Override
263    public HandlerRegistration addShowHandler(ShowHandler handler) {
264        return box.addShowHandler(handler);
265    }
266
267    /**
268     * {@inheritDoc}
269     */
270    @Override
271    public HandlerRegistration addShownHandler(ShownHandler handler) {
272        return box.addShownHandler(handler);
273    }
274}