You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AbstractDateFieldConnector.java 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.terminal.gwt.client.ui;
  5. import java.util.Date;
  6. import com.google.gwt.core.client.GWT;
  7. import com.google.gwt.user.client.ui.Widget;
  8. import com.vaadin.terminal.gwt.client.ApplicationConnection;
  9. import com.vaadin.terminal.gwt.client.LocaleNotLoadedException;
  10. import com.vaadin.terminal.gwt.client.UIDL;
  11. import com.vaadin.terminal.gwt.client.VConsole;
  12. public class AbstractDateFieldConnector extends AbstractComponentConnector {
  13. @Override
  14. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  15. // Ensure correct implementation and let layout manage caption
  16. super.updateFromUIDL(uidl, client);
  17. if (!isRealUpdate(uidl)) {
  18. return;
  19. }
  20. // Save details
  21. getWidget().client = client;
  22. getWidget().paintableId = uidl.getId();
  23. getWidget().immediate = getState().isImmediate();
  24. getWidget().readonly = getState().isReadOnly();
  25. getWidget().enabled = !getState().isDisabled();
  26. if (uidl.hasAttribute("locale")) {
  27. final String locale = uidl.getStringAttribute("locale");
  28. try {
  29. getWidget().dts.setLocale(locale);
  30. getWidget().currentLocale = locale;
  31. } catch (final LocaleNotLoadedException e) {
  32. getWidget().currentLocale = getWidget().dts.getLocale();
  33. VConsole.error("Tried to use an unloaded locale \"" + locale
  34. + "\". Using default locale ("
  35. + getWidget().currentLocale + ").");
  36. VConsole.error(e);
  37. }
  38. }
  39. // We show week numbers only if the week starts with Monday, as ISO 8601
  40. // specifies
  41. getWidget().showISOWeekNumbers = uidl
  42. .getBooleanAttribute(VDateField.WEEK_NUMBERS)
  43. && getWidget().dts.getFirstDayOfWeek() == 1;
  44. int newResolution;
  45. if (uidl.hasVariable("sec")) {
  46. newResolution = VDateField.RESOLUTION_SEC;
  47. } else if (uidl.hasVariable("min")) {
  48. newResolution = VDateField.RESOLUTION_MIN;
  49. } else if (uidl.hasVariable("hour")) {
  50. newResolution = VDateField.RESOLUTION_HOUR;
  51. } else if (uidl.hasVariable("day")) {
  52. newResolution = VDateField.RESOLUTION_DAY;
  53. } else if (uidl.hasVariable("month")) {
  54. newResolution = VDateField.RESOLUTION_MONTH;
  55. } else {
  56. newResolution = VDateField.RESOLUTION_YEAR;
  57. }
  58. getWidget().currentResolution = newResolution;
  59. // Add stylename that indicates current resolution
  60. getWidget()
  61. .addStyleName(
  62. VDateField.CLASSNAME
  63. + "-"
  64. + VDateField
  65. .resolutionToString(getWidget().currentResolution));
  66. final int year = uidl.getIntVariable("year");
  67. final int month = (getWidget().currentResolution >= VDateField.RESOLUTION_MONTH) ? uidl
  68. .getIntVariable("month") : -1;
  69. final int day = (getWidget().currentResolution >= VDateField.RESOLUTION_DAY) ? uidl
  70. .getIntVariable("day") : -1;
  71. final int hour = (getWidget().currentResolution >= VDateField.RESOLUTION_HOUR) ? uidl
  72. .getIntVariable("hour") : 0;
  73. final int min = (getWidget().currentResolution >= VDateField.RESOLUTION_MIN) ? uidl
  74. .getIntVariable("min") : 0;
  75. final int sec = (getWidget().currentResolution >= VDateField.RESOLUTION_SEC) ? uidl
  76. .getIntVariable("sec") : 0;
  77. // Construct new date for this datefield (only if not null)
  78. if (year > -1) {
  79. getWidget().setCurrentDate(
  80. new Date((long) getWidget().getTime(year, month, day, hour,
  81. min, sec, 0)));
  82. } else {
  83. getWidget().setCurrentDate(null);
  84. }
  85. }
  86. @Override
  87. protected Widget createWidget() {
  88. return GWT.create(VDateField.class);
  89. }
  90. @Override
  91. public VDateField getWidget() {
  92. return (VDateField) super.getWidget();
  93. }
  94. }