001/**
002 * CalendarEvents.bbj
003 * @author ndecker
004 *
005 * The <code>CalendarEvents</code> is a BBj Interface that defines custom events for the <code>BBjCalendarWidget</code>.
006 * This file is part of the <code>BBjCalendarWidget</code> plugin.
007 *
008 * For the full copyright and license information, please see the LICENSE.txt files distributed with this source code in the appropriate lib directory.
009 *
010 * @see <a href = 'https://fullcalendar.io' target = '_blank'>FullCalendar</a> for further information on the underlying JavaScript-based calendar.
011 *
012 * @since BBj 21.00
013*/
014package BBjCalendarWidget;
015import com.google.gson.JsonObject;
016import com.google.gson.JsonArray;
017/**
018 * <code>CalendarEvent</code> is a BBj Interface that contains event information for
019 * a <a href = 'BBjCalendarWidget.html' target = '_blank'>BBjCalendarWidget</a>. This is
020 * the base class for all <code>BBjCalendarWidget</code> events.
021 *
022 * @since BBj 21.00
023*/
024public interface CalendarEvent {
025/**
026 * Returns the event number that corresponds to one of the <code>CalendarAPI.ON_CALENDAR_*</code> callback constants.
027 *
028 * @return BBjNumber The event number that corresponds to one of the <code>CalendarAPI.ON_CALENDAR_*</code> callback constants.
029*/
030public BBjNumber getEventNumber() { }
031/**
032 * Returns a unique ID that identifes the calendar instance to which the event belongs.
033 *
034 * @return BBjString The calendar instance's unique auto-generated ID that is used in the client to distinguish between instances of the class.
035*/
036public BBjString getCalendarUuid() { }
037/**
038 * Returns the calendar's <code>CalendarView</code> object.
039 *
040 * @return CalendarView The calendar's current <code>CalendarView</code> object.
041*/
042public CalendarView getCalendarView() { }
043/**
044 * Returns a stringified JsonObject representation of the <code>CalendarEvent</code>.
045 *
046 * @return BBjString The <code>CalendarEvent</code> in stringified JSON format.
047*/
048public BBjString getAsString() { }
049/**
050 * Returns a formatted, i.e. pretty-printed or beautified, stringified JsonObject representation of the <code>CalendarEvent</code> object.
051 *
052 * @return BBjString The <code>CalendarEvent</code> in stringified JSON format.
053*/
054public BBjString getAsFormattedString() { }
055/**
056 * Returns a JsonObject representation of the <code>CalendarEvent</code>.
057 *
058 * @return JsonObject The <code>CalendarEvent</code> as a JsonObject.
059 * @see <a href = 'https://www.javadoc.io/doc/com.google.code.gson/gson/2.8.5/com/google/gson/JsonObject.html' target = '_blank'>JsonObject</a> for information about an object in JSON format.
060*/
061public JsonObject getAsJsonObject() { }
062}
063/**
064 * <code>CalendarEventWithJavaScriptEvent</code> is a BBj Interface that contains event information for
065 * a <a href = 'BBjCalendarWidget.html' target = '_blank'>BBjCalendarWidget</a>. This is
066 * the base class for all <code>BBjCalendarWidget</code> events that also contain the underlying native JavaScript event object.
067 *
068 * This interface that provides methods that simplify retreiving useful information from the underly native JavaScript event object. For example,
069 * it gives developers easy access to mouse coordinates for events that have a native JavaScript event (see the hyperlinked list of qualifying events below).
070 * The data in this class is technically available in the JavaScript JSON event object if you call the <code>getJsEvent()</code> method and parse the resultant JSON for the desired coordinates.
071 * The purpose of this class is to simplify getting the mouse coordinates from the <code>CalendarEvent</code> instead of having to parse them out of the native JavaScript event.
072 * This makes it much easier to display a popup menu as a result of a user clicking on the calendar or a calendar entry, as you would usually call the
073 * BBjPopupMenu::show() method which takes a control (the calendar's control) and X and Y coordinates that are relative to the control. For example:
074 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
075 *
076 * <i><span style = 'color:#080;'>rem Display the popup menu based on the calendar control and the mouse's X and Y positions</span></i>
077 * myPopupMenu!.show(myCal!.getHtmlView(), myEvent!.getCalendarX(), myEvent!.getCalendarY())
078 * </div></code></pre></blockquote>
079 *
080 * This class provides the X/Y coordinates of the user's mouse for calendar events that contain such information, namely:
081 * <ul>
082 * <li><code><a href = 'CalendarSelectEvent.html' target = '_blank'>CalendarSelectEvent</a></code></li>
083 * <li><code><a href = 'CalendarUnselectEvent.html' target = '_blank'>CalendarUnselectEvent</a></code></li>
084 * <li><code><a href = 'CalendarDateClickEvent.html' target = '_blank'>CalendarDateClickEvent</a></code></li>
085 * <li><code><a href = 'CalendarEntryEvent.html' target = '_blank'>CalendarEntryEvent and the classes that extend it:</a></code></li>
086 * <ul>
087 * <li><code><a href = 'CalendarEntryResizeEvent.html' target = '_blank'>CalendarEntryResizeEvent</a></code></li>
088 * <li><code><a href = 'CalendarEntryResizeStartEvent.html' target = '_blank'>CalendarEntryResizeStartEvent</a></code></li>
089 * <li><code><a href = 'CalendarEntryResizeStopEvent.html' target = '_blank'>CalendarEntryResizeStopEvent</a></code></li>
090 * <li><code><a href = 'CalendarEntryDropEvent.html' target = '_blank'>CalendarEntryDropEvent</a></code></li>
091 * <li><code><a href = 'CalendarEntryClickEvent.html' target = '_blank'>CalendarEntryClickEvent</a></code></li>
092 * <li><code><a href = 'CalendarEntryMouseEnterEvent.html' target = '_blank'>CalendarEntryMouseEnterEvent</a></code></li>
093 * <li><code><a href = 'CalendarEntryMouseLeaveEvent.html' target = '_blank'>CalendarEntryMouseLeaveEvent</a></code></li>
094 * </ul>
095 * </ul>
096 *
097 * The class parses out X/Y coordinates from the native JavaScript event for the screenX, screenY, clientX, and clientY values. It
098 * also provides computed coordinates called calendarX and calendarY. This values are relative to the calendar control, and they are determined
099 * by taking the mouse's clientX value and subtracting the calendar's X coordinate. This makes the X/Y values relative to the calendar
100 * control instead of the screen or client area of the browser.
101 *
102 * @since BBj 21.12
103*/
104public interface CalendarEventWithJavaScriptEvent extends CalendarEvent {
105/**
106 * Returns the native JavaScript event for the calendar event with low-level information such as click coordinates.
107 *
108 * @return JsonObject Returns the native JavaScript event for the calendar event in JSON format.
109 * @since BBj 21.12
110*/
111public JsonObject getJsEvent() { }
112/**
113 * Returns a stringified JsonObject representation of the native JavaScript event.
114 *
115 * @return BBjString The native JavaScript event in stringified JSON format.
116 * @since BBj 21.12
117*/
118public BBjString getJsEventAsString() { }
119/**
120 * Returns a formatted, i.e. pretty-printed or beautified, stringified JsonObject representation of the native JavaScript event object.
121 *
122 * @return BBjString The native JavaScript event in stringified JSON format.
123 * @since BBj 21.12
124*/
125public BBjString getJsEventAsFormattedString() { }
126/**
127 * Returns the X-coordinate of the user's mouse relative to the screen.
128 * <p>
129 * In the BUI and DWC clients, this value increases as the browser's position moves further right on the screen.
130 * In the GUI client, this value increases as the window moves further right on the screen.
131 *
132 * @return BBjNumber The X-coordinate of the user's mouse relative to the screen.
133 * @since BBj 21.12
134*/
135public BBjNumber getScreenX() { }
136/**
137 * Returns the Y-coordinate of the user's mouse relative to the screen.
138 *
139 * @return BBjNumber The Y-coordinate of the user's mouse relative to the screen.
140 * @since BBj 21.12
141*/
142public BBjNumber getScreenY() { }
143/**
144 * Returns the X-coordinate of the user's mouse relative to the calendar's window.
145 * <p>
146 * In the BUI and DWC clients, this value increases as the windows's position moves further right on the browser.
147 * In the GUI client, this value increases as the mouse moves further right on the calendar.
148 *
149 * @return BBjNumber The X-coordinate of the user's mouse relative to the calendar's window.
150 * @since BBj 21.12
151*/
152public BBjNumber getClientX() { }
153/**
154 * Returns the Y-coordinate of the user's mouse relative to the calendar's window.
155 *
156 * @return BBjNumber The Y-coordinate of the user's mouse relative to the calendar's window.
157 * @since BBj 21.12
158*/
159public BBjNumber getClientY() { }
160/**
161 * Returns the X-coordinate of the user's mouse relative to the calendar control. This can be used along with <code>getCalendarY()</code> to show a popup at the user's click location relative to the calendar control.
162 * <p>
163 * This value is calculated to be the horizontal offset of the mouse compared to the calendar control. It's technically the clientX of the mouse minus the calendar's X coordinate.
164 * This method can be used to show a popup when the user clicks on the calendar or an entry in the calendar:
165 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
166 *
167 * <i><span style = 'color:#080;'>rem Display the popup menu based on the calendar control and the click X and Y positions</span></i>
168 * myPopupMenu!.show(myCal!.getHtmlView(), myEvent!.getCalendarX(), myEvent!.getCalendarY())
169 * </div></code></pre></blockquote>
170 *
171 * @return BBjNumber The X-coordinate of the user's mouse relative to the calendar control.
172 * @since BBj 21.12
173*/
174public BBjNumber getCalendarX() { }
175/**
176 * Returns the Y-coordinate of the user's mouse relative to the calendar control. This can be used along with <code>getCalendarX()</code> to show a popup at the user's click location relative to the calendar control.
177 * <p>
178 * This value is calculated to be the vertical offset of the mouse compared to the calendar control. It's technically the clientY of the mouse minus the calendar's Y coordinate.
179 * This method can be used to show a popup when the user mouses on the calendar or an entry in the calendar:
180 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
181 *
182 * <i><span style = 'color:#080;'>rem Display the popup menu based on the calendar control and the click X and Y positions</span></i>
183 * myPopupMenu!.show(myCal!.getHtmlView(), myEvent!.getCalendarX(), myEvent!.getCalendarY())
184 * </div></code></pre></blockquote>
185 *
186 * @return BBjNumber The Y-coordinate of the user's mouse relative to the calendar control.
187 * @since BBj 21.12
188*/
189public BBjNumber getCalendarY() { }
190/**
191 * Returns whether the user's control key was pressed when the event occurred.
192 *
193 * @return BBjNumber A BBjNumber acting as a boolean that determines whether the user's control key was pressed when the event occurred.
194 * @see <a href = 'https://www.w3schools.com/jsref/obj_mouseevent.asp' target = '_blank'>HTML DOM MouseEvent</a> for information about a native HTML mouse event.
195 * @since BBj 21.12
196*/
197public BBjNumber getControlKey() { }
198/**
199 * Returns whether the user's shift key was pressed when the event occurred.
200 *
201 * @return BBjNumber A BBjNumber acting as a boolean that determines whether the user's shift key was pressed when the event occurred.
202 * @see <a href = 'https://www.w3schools.com/jsref/obj_mouseevent.asp' target = '_blank'>HTML DOM MouseEvent</a> for information about a native HTML mouse event.
203 * @since BBj 21.12
204*/
205public BBjNumber getShiftKey() { }
206/**
207 * Returns whether the user's alt key was pressed when the event occurred.
208 *
209 * @return BBjNumber A BBjNumber acting as a boolean that determines whether the user's alt key was pressed when the event occurred.
210 * @see <a href = 'https://www.w3schools.com/jsref/obj_mouseevent.asp' target = '_blank'>HTML DOM MouseEvent</a> for information about a native HTML mouse event.
211 * @since BBj 21.12
212*/
213public BBjNumber getAltKey() { }
214/**
215 * Returns whether the user's meta key was pressed when the event occurred.
216 *
217 * @return BBjNumber A BBjNumber acting as a boolean that determines whether the user's meta key was pressed when the event occurred.
218 * @see <a href = 'https://www.w3schools.com/jsref/obj_mouseevent.asp' target = '_blank'>HTML DOM MouseEvent</a> for information about a native HTML mouse event.
219 * @since BBj 21.12
220*/
221public BBjNumber getMetaKey() { }
222}
223/**
224 * <code>CalendarReadyEvent</code> is a BBj Interface that contains event information when the calendar has been initialized and may be interacted with.
225 * This data class will be made available to your custom callback routine after the calendar has initialized and
226 * you have previously executed the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
227 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_READY' target = '_blank'>CalendarAPI.ON_CALENDAR_READY</a></code> event.
228*/
229public interface CalendarReadyEvent extends CalendarEvent {
230}
231/**
232 * <code>CalendarViewChangeEvent</code> is a BBj Interface that contains event information for a calendar's view change event.
233 * This data class will be made available to your custom callback routine after the user changes the calendar's view type and
234 * you have previously executed the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
235 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_VIEW_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_VIEW_CHANGE</a></code> event.
236*/
237public interface CalendarViewChangeEvent extends CalendarEvent {
238/**
239 * Returns the native HTML element with low-level information such as content, size, and position.
240 *
241 * @return JsonObject Returns the native HTML element with low-level information such as content, size, and position.
242 * @see <a href = 'https://www.w3schools.com/jsref/dom_obj_all.asp' target = '_blank'>HTML DOM Element Object</a> for information about a native HTML element.
243*/
244public JsonObject getHtmlElement() { }
245}
246/**
247 * <code>CalendarSelectEvent</code> is a BBj Interface that contains event information after the user selects a date and/or time.
248 * This data class will be made available to your custom callback routine after the user clicks on a date or time and
249 * you have previously executed the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
250 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_SELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_SELECT</a></code> event.
251*/
252public interface CalendarSelectEvent extends CalendarEventWithJavaScriptEvent {
253/**
254 * Returns the calendar's selected starting date, which may include timezone information.
255 *
256 * @return BBjString The calendar's selected starting date, which may include timezone information.
257 *
258 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats.
259*/
260public BBjString getStart() { }
261/**
262 * Returns the calendar's ending date of the selection, which may include timezone information and is <b><i>exclusive</b></i>.
263 *
264 * @return BBjString The calendar's ending date of the selection, which may include timezone information and is <b><i>exclusive</b></i>.
265 *
266 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats.
267*/
268public BBjString getEnd() { }
269/**
270 * Returns the calendar's selected starting date in ISO 8601 format. Depending on what the user selected, it may or may not include a time and time zone portion.
271 *
272 * @return BBjString The calendar's selected starting date in ISO 8601 format. Depending on what the user selected, it may or may not include a time and time zone portion.
273 *
274 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats.
275*/
276public BBjString getStartString() { }
277/**
278 * Returns the calendar's selected ending date in ISO 8601 format and is <b><i>exclusive</b></i>. Depending on what the user selected, it may or may not include a time and time zone portion.
279 *
280 * @return BBjString The calendar's selected ending date in ISO 8601 format and is <b><i>exclusive</b></i>. Depending on what the user selected, it may or may not include a time and time zone portion.
281 *
282 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats.
283*/
284public BBjString getEndString() { }
285/**
286 * Returns a BBjNumber acting as a boolean that determines whether the user selected all-day cells (1) or not (0).
287 *
288 * @return BBjNumber A BBjNumber acting as a boolean that determines whether the user selected all-day cells.
289*/
290public BBjNumber getAllDay() { }
291}
292/**
293 * <code>CalendarUnselectEvent</code> is a BBj Interface that contains event information after the user deselects a
294 * previously-selected date and/or time. This data class will be made available to your custom callback routine after the
295 * user clears their date/time selection if you have previously executed the
296 * <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
297 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_UNSELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_UNSELECT</a></code> event.
298*/
299public interface CalendarUnselectEvent extends CalendarEventWithJavaScriptEvent {
300}
301/**
302 * <code>CalendarDateClickEvent</code> is a BBj Interface that contains event information after the user clicks on a date or time.
303 * This data class will be made available to your custom callback routine after the user clicks on a date or time and
304 * you have previously executed the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
305 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_DATE_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_DATE_CLICK</a></code> event.
306*/
307public interface CalendarDateClickEvent extends CalendarEventWithJavaScriptEvent {
308/**
309 * Returns the native HTML element with low-level information such as content, size, and position.
310 *
311 * @return JsonObject Returns the native HTML element with low-level information such as content, size, and position.
312 * @see <a href = 'https://www.w3schools.com/jsref/dom_obj_all.asp' target = '_blank'>HTML DOM Element Object</a> for information about a native HTML element.
313*/
314public JsonObject getHtmlElement() { }
315/**
316 * Returns the calendar's date (day/time) that was clicked.
317 *
318 * @return BBjString The calendar's date (day/time) that was clicked.
319*/
320public BBjString getDate() { }
321/**
322 * Returns the calendar's date in ISO 8601 format. Depending on what the user clicked, it may or may not include a time and time zone portion.
323 *
324 * @return BBjString The calendar's date in ISO 8601 format. Depending on what the user clicked, it may or may not include a time and time zone portion.
325 *
326 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats.
327*/
328public BBjString getDateString() { }
329/**
330 * Returns a BBjNumber acting as a boolean that determines whether the user clicked on an all-day cell (1) or not (0).
331 *
332 * @return BBjNumber A BBjNumber acting as a boolean that determines whether the user clicked on an all-day cell (1) or not (0).
333*/
334public BBjNumber getAllDay() { }
335}
336/**
337 * <code>CalendarDatesSetEvent</code> is a BBj Interface that contains event information after the calendar's date range
338 * has been initially set or changed in some way and the DOM has been updated. The dates can also change when the
339 * current-date is manipulated via the API, such as when gotoDate is called.
340 * This data class will be made available to your custom callback routine after the user clicks the prev/next buttons, changes the view, clicks a navlink, etc.
341 * you have previously executed the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
342 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_DATES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_DATES_SET</a></code> event.
343*/
344public interface CalendarDatesSetEvent extends CalendarEvent {
345/**
346 * Returns the calendar's starting date for the current range.
347 *
348 * @return BBjString The calendar's starting date for the current range.
349 *
350 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats.
351*/
352public BBjString getStart() { }
353/**
354 * Returns the calendar's ending date for the current range.
355 *
356 * @return BBjString The calendar's ending date for the current range.
357 *
358 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats.
359*/
360public BBjString getEnd() { }
361/**
362 * Returns the calendar's starting date in ISO 8601 format for the current range.
363 *
364 * @return BBjString The calendar's starting date in ISO 8601 format.
365 *
366 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats.
367*/
368public BBjString getStartStr() { }
369/**
370 * Returns the calendar's ending date in ISO 8601 format for the current range.
371 *
372 * @return BBjString The calendar's ending date in ISO 8601 format.
373 *
374 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats.
375*/
376public BBjString getEndStr() { }
377/**
378 * Returns the calendar's time zone setting.
379 *
380 * @return BBjString A BBjString with the calendar's time zone setting.
381*/
382public BBjString getTimeZone() { }
383}
384/**
385 * <code>CalendarEntriesSetEvent</code> is a BBj Interface that contains event information after the calendar's entry data
386 * has been initially set or changed in some way.
387 * This data class will be made available to your custom callback routine after the user clicks the prev/next buttons, changes the view, adds events, clicks a navlink, etc.
388 * you have previously executed the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
389 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRIES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRIES_SET</a></code> event.
390*/
391public interface CalendarEntriesSetEvent extends CalendarEvent {
392/**
393 * Returns the calendar's entries as a BBjVector filled with <code>CalendarEntry</code> objects.
394 *
395 * @return BBjVector The calendar's entries as a BBjVector filled with <code>CalendarEntry</code> objects.
396*/
397public BBjVector getEntries() { }
398}
399/**
400 * <code>CalendarEntryEvent</code> is a BBj Interface that contains event information for a calendar's entry
401 * (appointment, event, etc.) object. It's the base class for several calendar events that deal with the calendar's
402 * entries (appointments, events, etc.) including the <code>CalendarEntryClickEvent</code>,
403 * <code>CalendarEntryMouseEnterEvent</code>, and <code>CalendarEntryMouseLeaveEvent</code>.
404*/
405public interface CalendarEntryEvent extends CalendarEventWithJavaScriptEvent {
406/**
407 * Returns the entry (appointment, event, etc.) from the calendar.
408 *
409 * @return CalendarEntry The calendar entry (appointment, event, etc.)
410*/
411public CalendarEntry getCalendarEntry() { }
412/**
413 * Returns the native HTML element with low-level information such as content, size, and position.
414 *
415 * @return JsonObject Returns the native HTML element with low-level information such as content, size, and position.
416 * @see <a href = 'https://www.w3schools.com/jsref/dom_obj_all.asp' target = '_blank'>HTML DOM Element Object</a> for information about a native HTML element.
417*/
418public JsonObject getHtmlElement() { }
419}
420/**
421 * <code>CalendarEntryResizeEvent</code> is a BBj Interface that contains event information for a calendar's entry resize event.
422 * This data class will be made available to your custom callback routine after the user finishes resizing a calendar entry
423 * if you have previously executed the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
424 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE()</a></code> event.
425*/
426public interface CalendarEntryResizeEvent extends CalendarEntryEvent {
427/**
428 * Returns the old version of the calendar entry, e.g. the entry as it existed before the user resized it.
429 *
430 * @return CalendarEntry The old verison of the calendar entry, e.g. the entry as it existed before the user resized it.
431*/
432public CalendarEntry getOldCalendarEntry() { }
433/**
434 * Returns a BBjVector filled with related entries, such as recurring entries or entries with the same groupId.
435 *
436 * @return BBjVector a BBjVector filled with related entries, such as recurring entries or entries with the same groupId.
437*/
438public BBjVector getRelatedEntries() { }
439/**
440 * Returns the native JavaScript Duration Object as a JsonObject that represents the amount of time the entry's start date was moved by.
441 *
442 * @return JsonObject The native JavaScript Duration Object as a JsonObject that represents the amount of time that the entry's start date was moved.
443*/
444public JsonObject getStartDelta() { }
445/**
446 * Returns the native JavaScript Duration Object as a JsonObject that represents the amount of time the entry's end date was moved by.
447 *
448 * @return JsonObject The native JavaScript Duration Object as a JsonObject that represents the amount of time that the entry's end date was moved.
449*/
450public JsonObject getEndDelta() { }
451}
452/**
453 * <code>CalendarEntryDropEvent</code> is a BBj Interface that contains event information for a calendar's entry drop event.
454 * This data class will be made available to your custom callback routine after the user finishes repositioning a calendar entry
455 * if you have previously executed the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
456 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DROP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DROP()</a></code> event.
457*/
458public interface CalendarEntryDropEvent extends CalendarEntryEvent {
459/**
460 * Returns the old version of the calendar entry, e.g. the entry as it existed before the user resized it.
461 *
462 * @return CalendarEntry The old verison of the calendar entry, e.g. the entry as it existed before the user resized it.
463*/
464public CalendarEntry getOldCalendarEntry() { }
465/**
466 * Returns a BBjVector filled with related entries, such as recurring entries or entries with the same groupId.
467 *
468 * @return BBjVector a BBjVector filled with related entries, such as recurring entries or entries with the same groupId.
469*/
470public BBjVector getRelatedEntries() { }
471/**
472 * Returns the native JavaScript Duration Object as a JsonObject that represents the amount of time the entry's date/time was moved by.
473 *
474 * @return JsonObject The native JavaScript Duration Object as a JsonObject that represents the amount of time that the entry was moved.
475*/
476public JsonObject getDelta() { }
477}
478/**
479 * <code>CalendarEntryClickEvent</code> is a BBj Interface that contains event information for a calendar's entry click.
480 * This data class will be made available to your custom callback routine after the user executes a click on a calendar entry
481 * if you have previously executed the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code>
482 * method to register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CLICK</a></code> event.
483*/
484public interface CalendarEntryClickEvent extends CalendarEntryEvent {
485}
486/**
487 * <code>CalendarEntryMouseEnterEvent</code> is a BBj Interface that contains event information for a calendar's entry mouse enter event.
488 * This data class will be made available to your custom callback routine after mouses over a calendar entry if you have previously executed
489 * the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method to
490 * register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_ENTER' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_ENTER</a></code> event.
491*/
492public interface CalendarEntryMouseEnterEvent extends CalendarEntryEvent {
493}
494/**
495 * <code>CalendarEntryMouseLeaveEvent</code> is a BBj Interface that contains event information for a calendar's entry mouse leave event.
496 * This data class will be made available to your custom callback routine after mouses out of a calendar entry if you have previously executed
497 * the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method to
498 * register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_LEAVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_LEAVE</a></code> event.
499*/
500public interface CalendarEntryMouseLeaveEvent extends CalendarEntryEvent {
501}
502/**
503 * <code>CalendarEntryModificationEvent</code> is a BBj Interface that contains event information for a calendar's
504 * entry (appointment, event, etc.) object. It's never instantiated as it's the base class for several calendar
505 * events that deal with the calendar's entries (appointments, events, etc.) including the <code>CalendarEntryAddEvent</code>,
506 * <code>CalendarEntryRemoveEvent</code>, and <code>CalendarEntryChangeEvent</code>.
507*/
508public interface CalendarEntryModificationEvent extends CalendarEvent {
509/**
510 * Returns the entry (appointment, event, etc.) from the calendar.
511 *
512 * @return CalendarEntry The calendar entry (appointment, event, etc.)
513*/
514public CalendarEntry getCalendarEntry() { }
515/**
516 * Returns a BBjVector filled with related entries, such as recurring entries or entries with the same groupId.
517 *
518 * @return BBjVector a BBjVector filled with related entries, such as recurring entries or entries with the same groupId.
519*/
520public BBjVector getRelatedEntries() { }
521}
522/**
523 * <code>CalendarEntryAddEvent</code> is a BBj Interface that contains event information for when a single entry (not an event source) has
524 * been added to the calendar via the <code>BBjCalendarWidget::addEntry()</code> method. This data class will be made available to your
525 * custom callback routine after mouses over a calendar entry if you have previously executed the
526 * <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method to
527 * register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> event.
528*/
529public interface CalendarEntryAddEvent extends CalendarEntryModificationEvent {
530}
531/**
532 * <code>CalendarEntryRemoveEvent</code> is a BBj Interface that contains event information when an entry has been removed from the calendar.
533 * This data class will be made available to your custom callback routine after mouses over a calendar entry if you have previously executed
534 * the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method to
535 * register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> event.
536*/
537public interface CalendarEntryRemoveEvent extends CalendarEntryModificationEvent {
538}
539/**
540 * <code>CalendarEntryChangeEvent</code> is a BBj Interface that contains event information for when a calendar entry has been changed.
541 * This data class will be made available to your custom callback routine after the user changes calendar entry if you have previously executed
542 * the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method to
543 * register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CHANGE</a></code> event.
544*/
545public interface CalendarEntryChangeEvent extends CalendarEntryModificationEvent {
546/**
547 * Returns the old version of the calendar entry, e.g. the entry as it existed before the changes were applied.
548 *
549 * @return CalendarEntry The old verison of the calendar entry, e.g. the entry as it existed before the changes were applied.
550*/
551public CalendarEntry getOldCalendarEntry() { }
552}
553/**
554 * <code>CalendarEntrySourceSuccessEvent</code> is a BBj Interface that contains event information for the case where fetching a <code>CalendarEntrySource</code> succeeded.
555 * This data class will be made available to your custom callback routine after the entry source was successfully queried if you have previously executed
556 * the <a href = 'BBjCalendarWidget.html#setCallback-BBjNumber-BBjString-' target = '_blank'>BBjCalendarWidget::setCallback()</a> method to
557 * register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_SUCCESS' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_SUCCESS</a></code> event.
558*/
559public interface CalendarEntrySourceSuccessEvent extends CalendarEvent {
560/**
561 * Returns a BBjVector filled with <code>CalendarEntry</code> objects for all the fetched entries.
562 *
563 * @return BBjVector A BBjVector that filled with the fetched entries from the source.
564*/
565public BBjVector getEntriesFetched() { }
566/**
567 * Returns the number of fetched entries.
568 *
569 * @return JsonObject The number of entries successfully fetched from the source.
570*/
571public BBjNumber getNumberOfEntriesFetched() { }
572}
573/**
574 * <code>CalendarEntrySourceFailureEvent</code> is a BBj Interface that contains event information for the case where fetching a <code>CalendarEntrySource</code> failed.
575 * This data class will be made available to your custom callback routine after fetching the entry source failed if you have previously executed
576 * the <a href = 'BBjCalendarWidget.html#setCallback-BBjNumber-BBjString-' target = '_blank'>BBjCalendarWidget::setCallback()</a> method to
577 * register for the <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_FAILURE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_FAILURE</a></code> event.
578*/
579public interface CalendarEntrySourceFailureEvent extends CalendarEvent {
580/**
581 * Returns a the error message associate with the fetching failure.
582 *
583 * @return BBjString A BBjString with the information associated with the fetching error.
584*/
585public BBjString getErrorMessage() { }
586}