]> source.dussan.org Git - vaadin-framework.git/blob
cda74fcbeb55852ab4454946f5aa97c629e258dd
[vaadin-framework.git] /
1 /*
2  * Copyright 2000-2021 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.event;
17
18 import java.util.ArrayList;
19 import java.util.Date;
20 import java.util.List;
21
22 import com.vaadin.v7.ui.components.calendar.event.CalendarEvent.EventChangeEvent;
23 import com.vaadin.v7.ui.components.calendar.event.CalendarEventProvider.EventSetChangeNotifier;
24
25 /**
26  * <p>
27  * Simple implementation of
28  * {@link com.vaadin.addon.calendar.event.CalendarEventProvider
29  * CalendarEventProvider}. Use {@link #addEvent(CalendarEvent)} and
30  * {@link #removeEvent(CalendarEvent)} to add / remove events.
31  * </p>
32  *
33  * <p>
34  * {@link com.vaadin.addon.calendar.event.CalendarEventProvider.EventSetChangeNotifier
35  * EventSetChangeNotifier} and
36  * {@link com.vaadin.addon.calendar.event.CalendarEvent.EventChangeListener
37  * EventChangeListener} are also implemented, so the Calendar is notified when
38  * an event is added, changed or removed.
39  * </p>
40  *
41  * @since 7.1.0
42  * @author Vaadin Ltd.
43  */
44 @SuppressWarnings("serial")
45 @Deprecated
46 public class BasicEventProvider implements CalendarEditableEventProvider,
47         EventSetChangeNotifier, CalendarEvent.EventChangeListener {
48
49     protected List<CalendarEvent> eventList = new ArrayList<CalendarEvent>();
50
51     private List<EventSetChangeListener> listeners = new ArrayList<EventSetChangeListener>();
52
53     /*
54      * (non-Javadoc)
55      *
56      * @see
57      * com.vaadin.addon.calendar.event.CalendarEventProvider#getEvents(java.
58      * util.Date, java.util.Date)
59      */
60     @Override
61     public List<CalendarEvent> getEvents(Date startDate, Date endDate) {
62         List<CalendarEvent> activeEvents = new ArrayList<CalendarEvent>();
63
64         for (CalendarEvent ev : eventList) {
65             long from = startDate.getTime();
66             long to = endDate.getTime();
67
68             if (ev.getStart() != null && ev.getEnd() != null) {
69                 long f = ev.getStart().getTime();
70                 long t = ev.getEnd().getTime();
71                 // Select only events that overlaps with startDate and
72                 // endDate.
73                 if ((f <= to && f >= from) || (t >= from && t <= to)
74                         || (f <= from && t >= to)) {
75                     activeEvents.add(ev);
76                 }
77             }
78         }
79
80         return activeEvents;
81     }
82
83     /**
84      * Does this event provider container this event.
85      *
86      * @param event
87      *            The event to check for
88      * @return If this provider has the event then true is returned, else false
89      */
90     public boolean containsEvent(BasicEvent event) {
91         return eventList.contains(event);
92     }
93
94     /*
95      * (non-Javadoc)
96      *
97      * @see com.vaadin.addon.calendar.ui.CalendarComponentEvents.
98      * EventSetChangeNotifier #addListener
99      * (com.vaadin.addon.calendar.ui.CalendarComponentEvents.
100      * EventSetChangeListener )
101      */
102     @Override
103     public void addEventSetChangeListener(EventSetChangeListener listener) {
104         listeners.add(listener);
105
106     }
107
108     /*
109      * (non-Javadoc)
110      *
111      * @see com.vaadin.addon.calendar.ui.CalendarComponentEvents.
112      * EventSetChangeNotifier #removeListener
113      * (com.vaadin.addon.calendar.ui.CalendarComponentEvents.
114      * EventSetChangeListener )
115      */
116     @Override
117     public void removeEventSetChangeListener(EventSetChangeListener listener) {
118         listeners.remove(listener);
119     }
120
121     /**
122      * Fires a eventsetchange event. The event is fired when either an event is
123      * added or removed to the event provider
124      */
125     protected void fireEventSetChange() {
126         EventSetChangeEvent event = new EventSetChangeEvent(this);
127
128         for (EventSetChangeListener listener : listeners) {
129             listener.eventSetChange(event);
130         }
131     }
132
133     /*
134      * (non-Javadoc)
135      *
136      * @see
137      * com.vaadin.addon.calendar.ui.CalendarComponentEvents.EventChangeListener
138      * #eventChange
139      * (com.vaadin.addon.calendar.ui.CalendarComponentEvents.EventSetChange)
140      */
141     @Override
142     public void eventChange(EventChangeEvent changeEvent) {
143         // naive implementation
144         fireEventSetChange();
145     }
146
147     /*
148      * (non-Javadoc)
149      *
150      * @see
151      * com.vaadin.addon.calendar.event.CalendarEditableEventProvider#addEvent
152      * (com.vaadin.addon.calendar.event.CalendarEvent)
153      */
154     @Override
155     public void addEvent(CalendarEvent event) {
156         eventList.add(event);
157         if (event instanceof BasicEvent) {
158             ((BasicEvent) event).addEventChangeListener(this);
159         }
160         fireEventSetChange();
161     }
162
163     /*
164      * (non-Javadoc)
165      *
166      * @see
167      * com.vaadin.addon.calendar.event.CalendarEditableEventProvider#removeEvent
168      * (com.vaadin.addon.calendar.event.CalendarEvent)
169      */
170     @Override
171     public void removeEvent(CalendarEvent event) {
172         eventList.remove(event);
173         if (event instanceof BasicEvent) {
174             ((BasicEvent) event).removeEventChangeListener(this);
175         }
176         fireEventSetChange();
177     }
178 }