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.

InlineDateFieldConnector.java 4.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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.DateTimeService;
  10. import com.vaadin.terminal.gwt.client.UIDL;
  11. import com.vaadin.terminal.gwt.client.ui.VCalendarPanel.FocusChangeListener;
  12. import com.vaadin.terminal.gwt.client.ui.VCalendarPanel.TimeChangeListener;
  13. public class InlineDateFieldConnector extends AbstractDateFieldConnector {
  14. @Override
  15. @SuppressWarnings("deprecation")
  16. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  17. super.updateFromUIDL(uidl, client);
  18. getWidget().calendarPanel.setShowISOWeekNumbers(getWidget()
  19. .isShowISOWeekNumbers());
  20. getWidget().calendarPanel.setDateTimeService(getWidget()
  21. .getDateTimeService());
  22. getWidget().calendarPanel.setResolution(getWidget()
  23. .getCurrentResolution());
  24. Date currentDate = getWidget().getCurrentDate();
  25. if (currentDate != null) {
  26. getWidget().calendarPanel.setDate(new Date(currentDate.getTime()));
  27. } else {
  28. getWidget().calendarPanel.setDate(null);
  29. }
  30. if (getWidget().currentResolution > VDateField.RESOLUTION_DAY) {
  31. getWidget().calendarPanel
  32. .setTimeChangeListener(new TimeChangeListener() {
  33. public void changed(int hour, int min, int sec, int msec) {
  34. Date d = getWidget().getDate();
  35. if (d == null) {
  36. // date currently null, use the value from
  37. // calendarPanel
  38. // (~ client time at the init of the widget)
  39. d = (Date) getWidget().calendarPanel.getDate()
  40. .clone();
  41. }
  42. d.setHours(hour);
  43. d.setMinutes(min);
  44. d.setSeconds(sec);
  45. DateTimeService.setMilliseconds(d, msec);
  46. // Always update time changes to the server
  47. getWidget().calendarPanel.setDate(d);
  48. getWidget().updateValueFromPanel();
  49. }
  50. });
  51. }
  52. if (getWidget().currentResolution <= VDateField.RESOLUTION_MONTH) {
  53. getWidget().calendarPanel
  54. .setFocusChangeListener(new FocusChangeListener() {
  55. public void focusChanged(Date date) {
  56. Date date2 = new Date();
  57. if (getWidget().calendarPanel.getDate() != null) {
  58. date2.setTime(getWidget().calendarPanel
  59. .getDate().getTime());
  60. }
  61. /*
  62. * Update the value of calendarPanel
  63. */
  64. date2.setYear(date.getYear());
  65. date2.setMonth(date.getMonth());
  66. getWidget().calendarPanel.setDate(date2);
  67. /*
  68. * Then update the value from panel to server
  69. */
  70. getWidget().updateValueFromPanel();
  71. }
  72. });
  73. } else {
  74. getWidget().calendarPanel.setFocusChangeListener(null);
  75. }
  76. // Update possible changes
  77. getWidget().calendarPanel.renderCalendar();
  78. }
  79. @Override
  80. protected Widget createWidget() {
  81. return GWT.create(VDateFieldCalendar.class);
  82. }
  83. @Override
  84. public VDateFieldCalendar getWidget() {
  85. return (VDateFieldCalendar) super.getWidget();
  86. }
  87. }