選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

BasicBackwardHandler.java 3.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. * Copyright 2000-2016 Vaadin Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.vaadin.v7.ui.components.calendar.handler;
  17. import java.util.Calendar;
  18. import java.util.Date;
  19. import com.vaadin.v7.shared.ui.calendar.DateConstants;
  20. import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.BackwardEvent;
  21. import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.BackwardHandler;
  22. /**
  23. * Implements basic functionality needed to enable backwards navigation.
  24. *
  25. * @since 7.1
  26. * @author Vaadin Ltd.
  27. */
  28. @SuppressWarnings("serial")
  29. @Deprecated
  30. public class BasicBackwardHandler implements BackwardHandler {
  31. /*
  32. * (non-Javadoc)
  33. *
  34. * @see
  35. * com.vaadin.addon.calendar.ui.CalendarComponentEvents.BackwardHandler#
  36. * backward
  37. * (com.vaadin.addon.calendar.ui.CalendarComponentEvents.BackwardEvent)
  38. */
  39. @Override
  40. public void backward(BackwardEvent event) {
  41. Date start = event.getComponent().getStartDate();
  42. Date end = event.getComponent().getEndDate();
  43. // calculate amount to move back
  44. int durationInDays = (int) (((end.getTime()) - start.getTime())
  45. / DateConstants.DAYINMILLIS);
  46. durationInDays++;
  47. // for week view durationInDays = -7, for day view durationInDays = -1
  48. durationInDays = -durationInDays;
  49. // set new start and end times
  50. Calendar javaCalendar = event.getComponent().getInternalCalendar();
  51. javaCalendar.setTime(start);
  52. javaCalendar.add(Calendar.DATE, durationInDays);
  53. Date newStart = javaCalendar.getTime();
  54. javaCalendar.setTime(end);
  55. javaCalendar.add(Calendar.DATE, durationInDays);
  56. Date newEnd = javaCalendar.getTime();
  57. if (start.equals(end)) { // day view
  58. int firstDay = event.getComponent().getFirstVisibleDayOfWeek();
  59. int lastDay = event.getComponent().getLastVisibleDayOfWeek();
  60. int dayOfWeek = javaCalendar.get(Calendar.DAY_OF_WEEK);
  61. // we suppose that 7 >= lastDay >= firstDay >= 1
  62. while (!(firstDay <= dayOfWeek && dayOfWeek <= lastDay)) {
  63. javaCalendar.add(Calendar.DATE, -1);
  64. dayOfWeek = javaCalendar.get(Calendar.DAY_OF_WEEK);
  65. }
  66. newStart = javaCalendar.getTime();
  67. newEnd = javaCalendar.getTime();
  68. }
  69. setDates(event, newStart, newEnd);
  70. }
  71. /**
  72. * Set the start and end dates for the event
  73. *
  74. * @param event
  75. * The event that the start and end dates should be set
  76. * @param start
  77. * The start date
  78. * @param end
  79. * The end date
  80. */
  81. protected void setDates(BackwardEvent event, Date start, Date end) {
  82. event.getComponent().setStartDate(start);
  83. event.getComponent().setEndDate(end);
  84. }
  85. }