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}