]> source.dussan.org Git - vaadin-framework.git/blob
ad33c552708d44e52a5ff0bbe7a7ee7293230613
[vaadin-framework.git] /
1 /*
2  * Copyright 2000-2018 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
18 import java.util.Calendar;
19 import java.util.Date;
20
21 import com.vaadin.v7.shared.ui.calendar.DateConstants;
22 import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.BackwardEvent;
23 import com.vaadin.v7.ui.components.calendar.CalendarComponentEvents.BackwardHandler;
24
25 /**
26  * Implements basic functionality needed to enable backwards navigation.
27  *
28  * @since 7.1
29  * @author Vaadin Ltd.
30  */
31 @SuppressWarnings("serial")
32 @Deprecated
33 public class BasicBackwardHandler implements BackwardHandler {
34
35     /*
36      * (non-Javadoc)
37      *
38      * @see
39      * com.vaadin.addon.calendar.ui.CalendarComponentEvents.BackwardHandler#
40      * backward
41      * (com.vaadin.addon.calendar.ui.CalendarComponentEvents.BackwardEvent)
42      */
43     @Override
44     public void backward(BackwardEvent event) {
45         Date start = event.getComponent().getStartDate();
46         Date end = event.getComponent().getEndDate();
47
48         // calculate amount to move back
49         int durationInDays = (int) (((end.getTime()) - start.getTime())
50                 / DateConstants.DAYINMILLIS);
51         durationInDays++;
52         // for week view durationInDays = -7, for day view durationInDays = -1
53         durationInDays = -durationInDays;
54
55         // set new start and end times
56         Calendar javaCalendar = event.getComponent().getInternalCalendar();
57         javaCalendar.setTime(start);
58         javaCalendar.add(Calendar.DATE, durationInDays);
59         Date newStart = javaCalendar.getTime();
60
61         javaCalendar.setTime(end);
62         javaCalendar.add(Calendar.DATE, durationInDays);
63         Date newEnd = javaCalendar.getTime();
64
65         if (start.equals(end)) { // day view
66             int firstDay = event.getComponent().getFirstVisibleDayOfWeek();
67             int lastDay = event.getComponent().getLastVisibleDayOfWeek();
68             int dayOfWeek = javaCalendar.get(Calendar.DAY_OF_WEEK);
69
70             // we suppose that 7 >= lastDay >= firstDay >= 1
71             while (!(firstDay <= dayOfWeek && dayOfWeek <= lastDay)) {
72                 javaCalendar.add(Calendar.DATE, -1);
73                 dayOfWeek = javaCalendar.get(Calendar.DAY_OF_WEEK);
74             }
75
76             newStart = javaCalendar.getTime();
77             newEnd = javaCalendar.getTime();
78         }
79
80         setDates(event, newStart, newEnd);
81     }
82
83     /**
84      * Set the start and end dates for the event.
85      *
86      * @param event
87      *            The event that the start and end dates should be set
88      * @param start
89      *            The start date
90      * @param end
91      *            The end date
92      */
93     protected void setDates(BackwardEvent event, Date start, Date end) {
94         event.getComponent().setStartDate(start);
95         event.getComponent().setEndDate(end);
96     }
97 }