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 */ 016package com.github.gwtbootstrap.datetimepicker.client.ui; 017 018import com.github.gwtbootstrap.client.ui.AppendButton; 019import com.github.gwtbootstrap.client.ui.base.AddOn; 020import com.github.gwtbootstrap.client.ui.base.HasAlternateSize; 021import com.github.gwtbootstrap.client.ui.base.HasIcon; 022import com.github.gwtbootstrap.client.ui.base.HasVisibility; 023import com.github.gwtbootstrap.client.ui.event.HasVisibleHandlers; 024import com.github.gwtbootstrap.client.ui.constants.AlternateSize; 025import com.github.gwtbootstrap.client.ui.constants.BaseIconType; 026import com.github.gwtbootstrap.client.ui.constants.IconPosition; 027import com.github.gwtbootstrap.client.ui.constants.IconSize; 028import com.github.gwtbootstrap.client.ui.constants.IconType; 029import com.github.gwtbootstrap.client.ui.event.HiddenHandler; 030import com.github.gwtbootstrap.client.ui.event.HideHandler; 031import com.github.gwtbootstrap.client.ui.event.ShowHandler; 032import com.github.gwtbootstrap.client.ui.event.ShownHandler; 033import com.github.gwtbootstrap.datetimepicker.client.ui.base.DateTimeBoxBase; 034import com.github.gwtbootstrap.datetimepicker.client.ui.base.HasAllDateTimePickerHandlers; 035import com.github.gwtbootstrap.datetimepicker.client.ui.base.HasDateFormat; 036import com.github.gwtbootstrap.datetimepicker.client.ui.base.PickerPosition; 037import com.google.gwt.editor.client.IsEditor; 038import com.google.gwt.editor.client.adapters.TakesValueEditor; 039import com.google.gwt.event.dom.client.ChangeHandler; 040import com.google.gwt.event.dom.client.HasChangeHandlers; 041import com.google.gwt.event.logical.shared.HasValueChangeHandlers; 042import com.google.gwt.event.logical.shared.ValueChangeHandler; 043import com.google.gwt.event.shared.HandlerRegistration; 044import com.google.gwt.user.client.ui.HasValue; 045import com.google.gwt.user.client.ui.ValueBoxBase.TextAlignment; 046 047import java.util.Date; 048 049/** 050 * DateTimeBoxAppended component. 051 * 052 * @author Carlos Alexandro Becker 053 * @author Alain Penders 054 * @since 2.1.1.0 055 */ 056public class DateTimeBoxAppended 057 extends AppendButton implements HasValue<Date>, 058 HasDateFormat, HasIcon, HasValueChangeHandlers<Date>, HasVisibility, 059 HasChangeHandlers, HasVisibleHandlers, HasAllDateTimePickerHandlers, 060 HasAlternateSize, IsEditor<TakesValueEditor<Date>> { 061 062 /** 063 * An 'adapter' to change some aspects of the behavior of datepickerbase. 064 */ 065 private class DateTimeBoxAppendedAdapter 066 extends DateTimeBoxBase { 067 @Override 068 protected void configure() { 069 DateTimeBoxAppended that = DateTimeBoxAppended.this; 070 that.addStyleName("date"); 071 super.configure(that); 072 } 073 } 074 075 private final DateTimeBoxAppendedAdapter box; 076 private AddOn icon; 077 { 078 this.box = new DateTimeBoxAppendedAdapter(); 079 icon = new AddOn(); 080 icon.setIcon(IconType.TH); 081 add(box); 082 add(icon); 083 } 084 085 086 /** 087 * {@inheritDoc} 088 */ 089 @Override 090 public Date getValue() { 091 return box.getValue(); 092 } 093 094 /** 095 * {@inheritDoc} 096 */ 097 @Override 098 public void setValue(Date value) { 099 box.setValue(value); 100 } 101 102 /** 103 * {@inheritDoc} 104 */ 105 @Override 106 public void setValue(Date value, boolean fireEvents) { 107 box.setValue(value, fireEvents); 108 } 109 110 /** 111 * {@inheritDoc} 112 */ 113 @Override 114 public void setAlternateSize(AlternateSize size) { 115 box.setAlternateSize(size); 116 } 117 118 public void setAlignment(TextAlignment align) { 119 box.setAlignment(align); 120 } 121 122 /** 123 * {@inheritDoc} 124 */ 125 @Override 126 public HandlerRegistration addValueChangeHandler( 127 ValueChangeHandler<Date> dateValueChangeHandler) { 128 return box.addValueChangeHandler(dateValueChangeHandler); 129 } 130 131 /** 132 * {@inheritDoc} 133 */ 134 @Override 135 public void setFormat(String format) { 136 box.setFormat(format); 137 } 138 139 /** 140 * {@inheritDoc} 141 */ 142 @Override 143 public void setIcon(IconType type) { 144 setBaseIcon(type); 145 } 146 147 /** 148 * {@inheritDoc} 149 */ 150 @Override 151 public void setBaseIcon(BaseIconType type) { 152 icon.setBaseIcon(type); 153 } 154 155 /** 156 * {@inheritDoc} 157 */ 158 @Override 159 public void setIconSize(IconSize size) { 160 icon.setIconSize(size); 161 } 162 163 /** 164 * {@inheritDoc} 165 */ 166 @Override 167 public void setCustomIconStyle(String customIconStyle) { 168 icon.setCustomIconStyle(customIconStyle); 169 } 170 171 /** 172 * {@inheritDoc} 173 * 174 * @deprecated 175 */ 176 @Override 177 public void setIconPosition(IconPosition position) { 178 icon.setIconPosition(position); 179 } 180 181 /** 182 * {@inheritDoc} 183 */ 184 @Override 185 public void setAutoClose(boolean autoclose) { 186 box.setAutoClose(autoclose); 187 } 188 189 /** 190 * {@inheritDoc} 191 */ 192 @Override 193 public void setEndDate(String date) { 194 box.setEndDate(date); 195 } 196 197 /** 198 * {@inheritDoc} 199 */ 200 @Override 201 public void setEndDate_(Date date) { 202 box.setEndDate_(date); 203 } 204 205 /** 206 * {@inheritDoc} 207 */ 208 @Override 209 public void setLanguage(String language) { 210 box.setLanguage(language); 211 } 212 213 /** 214 * {@inheritDoc} 215 */ 216 @Override 217 public void setStartDate(String date) { 218 box.setStartDate(date); 219 } 220 221 /** 222 * {@inheritDoc} 223 */ 224 @Override 225 public void setStartDate_(Date date) { 226 box.setStartDate_(date); 227 } 228 229 /** 230 * {@inheritDoc} 231 */ 232 @Override 233 public void setMinView(ViewMode mode) { 234 box.setMinView(mode); 235 } 236 237 /** 238 * {@inheritDoc} 239 */ 240 @Override 241 public void setMinView(String mode) { 242 box.setMinView(mode); 243 } 244 245 /** 246 * {@inheritDoc} 247 */ 248 @Override 249 public void setMaxView(ViewMode mode) { 250 box.setMaxView(mode); 251 } 252 253 /** 254 * {@inheritDoc} 255 */ 256 @Override 257 public void setMaxView(String mode) { 258 box.setMaxView(mode); 259 } 260 261 /** 262 * {@inheritDoc} 263 */ 264 @Override 265 public void setStartView(ViewMode mode) { 266 box.setStartView(mode); 267 } 268 269 /** 270 * {@inheritDoc} 271 */ 272 @Override 273 public void setStartView(String mode) { 274 box.setStartView(mode); 275 } 276 277 /** 278 * {@inheritDoc} 279 */ 280 @Override 281 public void setWeekStart(int start) { 282 box.setWeekStart(start); 283 } 284 285 /** 286 * {@inheritDoc} 287 */ 288 @Override 289 public TakesValueEditor<Date> asEditor() { 290 return box.asEditor(); 291 } 292 293 /** 294 * {@inheritDoc} 295 */ 296 @Override 297 public HandlerRegistration addHideHandler(HideHandler handler) { 298 return box.addHideHandler(handler); 299 } 300 301 /** 302 * {@inheritDoc} 303 */ 304 @Override 305 public HandlerRegistration addHiddenHandler(HiddenHandler handler) { 306 return box.addHiddenHandler(handler); 307 } 308 309 /** 310 * {@inheritDoc} 311 */ 312 @Override 313 public HandlerRegistration addShowHandler(ShowHandler handler) { 314 return box.addShowHandler(handler); 315 } 316 317 /** 318 * {@inheritDoc} 319 */ 320 @Override 321 public HandlerRegistration addShownHandler(ShownHandler handler) { 322 return box.addShownHandler(handler); 323 } 324 325 /** 326 * {@inheritDoc} 327 */ 328 @Override 329 public HandlerRegistration addChangeHandler(ChangeHandler handler) { 330 return box.addChangeHandler(handler); 331 } 332 333 /** 334 * {@inheritDoc} 335 */ 336 @Override 337 public void show() { 338 box.show(); 339 } 340 341 /** 342 * {@inheritDoc} 343 */ 344 @Override 345 public void hide() { 346 box.hide(); 347 } 348 349 /** 350 * {@inheritDoc} 351 */ 352 @Override 353 public void toggle() { 354 box.toggle(); 355 } 356 357 /** 358 * @see com.google.gwt.user.client.ui.ValueBoxBase#isReadOnly() 359 */ 360 public boolean isReadOnly() { 361 return box.isReadOnly(); 362 } 363 364 /** 365 * @see com.google.gwt.user.client.ui.ValueBoxBase#setReadOnly(boolean) 366 */ 367 public void setReadOnly(boolean readonly) { 368 box.setReadOnly(readonly); 369 } 370 371 372 @Override 373 public void setDaysOfWeekDisabled(String value) { 374 box.setDaysOfWeekDisabled(value); 375 } 376 377 378 @Override 379 public void setMinuteStep(int minutes) { 380 box.setMinuteStep(minutes); 381 } 382 383 384 @Override 385 public void setShowTodayButton(boolean show) { 386 box.setShowTodayButton(show); 387 } 388 389 390 @Override 391 public void setHighlightToday(boolean highlight) { 392 box.setHighlightToday(highlight); 393 } 394 395 public void setPickerPosition(PickerPosition pickerPosition) { 396 box.setPickerPosition(pickerPosition); 397 } 398 399 public PickerPosition getPickerPosition() { 400 return box.getPickerPosition(); 401 } 402}