001/**
002 * BBjCalendarWidget
003 * @author ndecker
004 *
005 * The <code>BBjCalendarWidget</code> is a BBj Interface that serves as a plug-in to the
006 * <a href = 'https://fullcalendar.io/' target = '_blank'>FullCalendar</a> JavaScript-based calendar control.
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 java.util.HashSet;
016import java.util.HashMap;
017import java.util.TreeMap;
018import java.io.File;
019import java.util.Vector;
020import com.google.gson.Gson;
021import com.google.gson.JsonParser;
022import com.google.gson.JsonObject;
023import com.google.gson.JsonArray;
024import com.google.gson.JsonPrimitive;
025import com.google.gson.JsonElement;
026import com.google.gson.GsonBuilder;
027/**
028 * <code>BBjCalendarWidget</code> is a BBj Interface that serves as a plug-in to the
029 * <a href = 'https://fullcalendar.io/' target = '_blank'>FullCalendar</a> JavaScript-based calendar control.
030 * <p>
031 * For the full copyright and license information, please view the LICENSE file that was distributed with this source code.
032 *
033 * <code>THROW</code>n Error Codes:
034 * <ul>
035 * <li><b><code>500</code></b>: The calendar is not ready for interaction. Setting a callback for the
036 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_READY' target = '_blank'>CalendarAPI.ON_CALENDAR_READY</a></code> event
037 * will result in your application getting a <code><a href = 'CalendarReadyEvent.html' target = '_blank'>CalendarReadyEvent</a></code>
038 * event signaling that the calendar is ready for interaction.</li>
039 * <li><b><code>510</code></b>: Invalid theme specified. The specified theme file does not exist.
040 * See the <code><a href = 'BBjCalendarWidget.html#getThemes' target = '_blank'>getThemes()</a></code> method for more
041 * information on installing and getting valid theme names.</li>
042 * <li><b><code>512</code></b>: Invalid parameter. The parameter provided to a method is null() or invalid. The error message may indicate which method call failed.</li>
043 * <li><b><code>514</code></b>: Invalid configuration. The specified object has not been configured correctly or is missing required properties.</li>
044 * <li><b><code>530</code></b>: Invalid date or time specified. The specified date or time string is not valid or cannot be parsed.</li>
045 * <li><b><code>700</code></b>: Missing file. The specified file does not exist. This may occur when the library attempts to read in an HTML, CSS, JavaScript, or theme file.</li>
046 * </ul>
047 *
048 * @see <a href = 'https://fullcalendar.io/' target = '_blank'>FullCalendar</a> for information on the FullCalendar JavaScript-based calendar control.
049 *
050 * @since BBj 21.00
051*/
052public interface BBjCalendarWidget {
053/**
054 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the <code>BBjCalendarWidget</code> is ready.
055 * <p>
056 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarReadyEvent.html' target = '_blank'>CalendarReadyEvent</a></code> object.
057*/
058public static BBjNumber ON_CALENDAR_READY() { }
059/**
060 * <p>
061 * <b>Note</b>: This <b>only</b> fires when the type of view changes, not when the user changes the view from one subtype to another. For example,
062 * the event <b>will</b> be triggered when the user switches from the
063 * <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_MONTH()</a></code> to the
064 * <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_MONTH()</a></code> view. But it <b>won't</b> be triggerd when the user changes from
065 * <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_MONTH()</a></code> to
066 * <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_WEEK()</a></code> since both views are
067 * the same type (dayGrid) and just the subtype (week vs. month) changes.
068*/
069public static BBjNumber ON_CALENDAR_VIEW_CHANGE() { }
070/**
071 * If you set a callback for this event, then add several entries to the calendar, your callback routine may be flooded because the event will fire for every entry that you add.
072 * <p>
073 * When responding to this event, the <code><a href = 'https://documentation.basis.com/BASISHelp/WebHelp/bbjobjects/bbjapi/bbjapi_getlastevent.htm' target = '_blank'>BBjAPI().getLastEvent()</a></code> call
074 * will return a <code><a href = 'CalendarEntriesSetEvent.html' target = '_blank'>CalendarEntriesSetEvent</a></code> object.
075 * You can call the <code><a href = 'CalendarEntriesSetEvent.html#getEntries' target = '_blank'>CalendarEntriesSetEvent::getEntries()</a></code> method to return a BBjVector of
076 * <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects that corresponds to all the known entries in the calendar at that instant in time.
077 * <p>
078 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntriesSetEvent.html' target = '_blank'>CalendarEntriesSetEvent</a></code> object.
079 *
080 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/index.htm#gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a>.
081*/
082public static BBjNumber ON_CALENDAR_ENTRIES_SET() { }
083/**
084 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has clicked on a calendar's event.
085 * <p>
086 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryClickEvent.html' target = '_blank'>CalendarEntryClickEvent</a></code> object.
087*/
088public static BBjNumber ON_CALENDAR_ENTRY_CLICK() { }
089/**
090 * <p>
091 * <b>Note</b>: If you set a callback for this event, then add several events to the calendar, your callback routine may be flooded.
092 * <p>
093 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryAddEvent.html' target = '_blank'>CalendarEntryAddEvent</a></code> object.
094*/
095public static BBjNumber ON_CALENDAR_ENTRY_ADD() { }
096/**
097 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the calendar's event data has changed in any way.
098 * <p>
099 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryChangeEvent.html' target = '_blank'>CalendarEntryChangeEvent</a></code> object.
100*/
101public static BBjNumber ON_CALENDAR_ENTRY_CHANGE() { }
102/**
103 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that an entry has been removed from the calendar.
104 * If you set a callback for this event, then remove several entries from the calendar, your callback routine may be flooded because
105 * the event will fire for every entry that was removed.
106 * <p>
107 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryRemoveEvent.html' target = '_blank'>CalendarEntryRemoveEvent</a></code> object.
108*/
109public static BBjNumber ON_CALENDAR_ENTRY_REMOVE() { }
110/**
111 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user moved the mouse into the bounds of a calendar event.
112 * <p>
113 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryMouseEnterEvent.html' target = '_blank'>CalendarEntryMouseEnterEvent</a></code> object.
114*/
115public static BBjNumber ON_CALENDAR_ENTRY_MOUSE_ENTER() { }
116/**
117 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user moved the mouse out of the bounds of a calendar event.
118 * <p>
119 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryMouseLeaveEvent.html' target = '_blank'>CalendarEntryMouseLeaveEvent</a></code> object.
120*/
121public static BBjNumber ON_CALENDAR_ENTRY_MOUSE_LEAVE() { }
122/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has started dragging an event. */
123
124public static BBjNumber ON_CALENDAR_ENTRY_DRAG_START() { }
125/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has stopped dragging an event. */
126
127public static BBjNumber ON_CALENDAR_ENTRY_DRAG_STOP() { }
128/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has started resizing an event. */
129
130public static BBjNumber ON_CALENDAR_ENTRY_RESIZE_START() { }
131/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has stopped resizing an event. */
132
133public static BBjNumber ON_CALENDAR_ENTRY_RESIZE_STOP() { }
134/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has stopped resizing an event and the event has a different duration. */
135
136public static BBjNumber ON_CALENDAR_ENTRY_RESIZE() { }
137/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has dropped the event to a different day/time. */
138
139public static BBjNumber ON_CALENDAR_ENTRY_DROP() { }
140/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the calendar has received an external draggable element with event data from another source or another calendar. */
141
142public static BBjNumber ON_CALENDAR_ENTRY_RECEIVE() { }
143/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user is about to drop one of the calendar events on to another calendar. */
144
145public static BBjNumber ON_CALENDAR_ENTRY_LEAVE() { }
146/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that fetching a <code>CalendarEntrySource</code> succeeded. */
147
148public static BBjNumber ON_CALENDAR_ENTRY_SOURCE_SUCCESS() { }
149/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that fetching a <code>CalendarEntrySource</code> failed. */
150
151public static BBjNumber ON_CALENDAR_ENTRY_SOURCE_FAILURE() { }
152/**
153 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the calendar's date range has changed in any way.
154 * <p>
155 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarDatesSetEvent.html' target = '_blank'>CalendarDatesSetEvent</a></code> object.
156*/
157public static BBjNumber ON_CALENDAR_DATES_SET() { }
158/**
159 * <p>
160 * Note that <code>ON_CALENDAR_DATE_CLICK</code> event is not fired when the user clicks a day heading in a list view.
161 * <p>
162 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarDateClickEvent.html' target = '_blank'>CalendarDateClickEvent</a></code> object.
163*/
164public static BBjNumber ON_CALENDAR_DATE_CLICK() { }
165/**
166 * <p>
167 * <b>Note</b>: You must configure the calendar to enable user selections via the <code>CalendarOptions:setEnableSelectable()</code> method
168 * if you intend to set a callback for the <code>BBjCalendarWidget:ON_CALENDAR_SELECT</code> or <code>BBjCalendarWidget:ON_CALENDAR_UNSELECT</code> events.
169 * <p>
170 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarSelectEvent.html' target = '_blank'>CalendarSelectEvent</a></code> object.
171*/
172public static BBjNumber ON_CALENDAR_SELECT() { }
173/**
174 * <p>
175 * <b>Note</b>: You must configure the calendar to enable user selections via the <code>CalendarOptions:setEnableSelectable()</code> method
176 * if you intend to set a callback for the <code>BBjCalendarWidget:ON_CALENDAR_SELECT</code> or <code>BBjCalendarWidget:ON_CALENDAR_UNSELECT</code> events.
177 * <p>
178 * A selection might be cleared for a number of reasons:
179 * <ul>
180 * <li>The user clicks away from the current selection (doesn't happen when EnableUnselectAuto is false).</li>
181 * <li>The user makes a new selection. The unselect callback will be fired before the new selection occurs.</li>
182 * <li>The user moves forward or backward in the current view, or switches to a new view.</li>
183 * <li>The unselect method is called through the API.</li>
184 * </ul>
185 * <p>
186 * The <code>CalendarOptions::setEnableUnselectAuto()</code> impacts what causes the <code>BBjCalendarWidget.ON_CALENDAR_UNSELECT</code> event to be fired.
187 * If automatic unselection is enabled, then the unselection event will typically be fired after the user releases their selection mouse button.
188 * <p>
189 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarUnselectEvent.html' target = '_blank'>CalendarUnselectEvent</a></code>.
190*/
191public static BBjNumber ON_CALENDAR_UNSELECT() { }
192/**
193 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user dropped an external draggable element or an event from another calendar onto this calendar.
194*/
195public static BBjNumber ON_CALENDAR_DROP() { }
196/**
197 * Returns a unique auto-generated ID for the calendar instance that may be used to distinguish between instances of the class.
198 *
199 * @return BBjString The calendar's unique ID.
200*/
201public BBjString getUuid() { }
202/**
203 * Returns the underlying BBjHtmlView control that contains the JavaScript FullCalendar.
204 *
205 * @return BBjHtmlView The underlying BBjHtmlView control that contains the JavaScript FullCalendar.
206 *
207 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl2/bbjhtmlview.htm' target = '_blank'>BBjHtmlView</a> for more information on the BBjHtmlView control.
208*/
209public BBjHtmlView getHtmlView() { }
210/**
211 * Returns a BBjNumber acting as a boolean that indicates whether the widget is ready to be interacted with (1) or not (0).
212 *
213 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the widget is ready to be interacted with (1) or not (0).
214*/
215public BBjNumber getIsReady() { }
216/**
217 * Sets whether the <code>BBjCalendarWidget</code> should run in debug mode (1) or not (0), where the default is 0.
218 * <p>
219 * When this is set to true (1), the <code>BBjCalendarWidget</code> will:
220 * <ul>
221 * <li>use unminified JavaScript and CSS when possible</li>
222 * <li>display the debugger console in a browser when run in GUI if your <code>!CHROMIUM_SWITCHES</code> global string entry is properly set before instantiating the <code>BBjCalendarWidget</code>, as in: <code>chromium_switches$ = stbl("!CHROMIUM_SWITCHES", "--remote-debugging-port = 9223")</code></li>
223 * <li>log messages to the console from both the BBj programs and the JavaScript code</li>
224 * </ul>
225 *
226 * @param BBjNumber enableDebug A BBjNumber acting as a boolean that determines whether the <code>BBjCalendarWidget</code> should run in debug mode (1) or not (0).
227*/
228public void setEnableDebug(BBjNumber enableDebug) { }
229/**
230 * Returns whether the <code>BBjCalendarWidget</code> should run in debug mode (1) or not (0).
231 *
232 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the <code>BBjCalendarWidget</code> is running in debug mode.
233*/
234public BBjNumber getEnableDebug() { }
235/**
236 * Sets the calendar's options given an instance of the <code><a href = 'CalendarOptions.html' target = '_blank'>CalendarOptions</a></code> class.
237 * <p>
238 * <b>Note</b>: After setting the calendar's options inline (see example #1 below), you will need to call the calendar's <code>render()</code> method to apply the changes to the calendar in order for them to take effect.
239 * <p>
240 * There are a couple of ways to set options for the calendar:
241 *
242 * 1) Get and then set the desired options inline dynamically, calling the render() method afterwards to force the calendar to update with the new configuration:
243 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
244 *
245 * <i><span style = 'color:#080;'>rem Get and then set the desired options inline dynamically, calling the render() method afterwards to force the calendar to update with the new configuration:</span></i>
246 * myCal!.getOptions().setEnableEntryDurationEditable(1)
247 * myCal!.getOptions().setEnableEntryResizableFromStart(1)
248 * myCal!.getOptions().setEnableEntryStartEditable(1)
249 * myCal!.getOptions().setEnableSlotEntryOverlap(0)
250 * myCal!.render()
251 * </div></code></pre></blockquote>
252 *
253 * 2) Get the options instance, call setter methods on it, then use it to set the calendar's options:
254 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
255 *
256 * <i><span style = 'color:#080;'>rem Get the calendar's options object, then call the desired set methods, then apply the updated options to the calendar:</span></i>
257 * opts! = myCal!.getOptions()
258 * opts!.setEnableEntryDurationEditable(1)
259 * opts!.setEnableEntryResizableFromStart(1)
260 * opts!.setEnableEntryStartEditable(1)
261 * opts!.setEnableSlotEntryOverlap(0)
262 * myCal!.setOptions(opts!)
263 * </div></code></pre></blockquote>
264 *
265 * @param CalendarOptions options! An instance of the <code><a href = 'CalendarOptions.html' target = '_blank'>CalendarOptions</a></code> class that has been configured with the desired settings.
266*/
267public void setOptions(CalendarOptions options!) { }
268/**
269 * Returns the calendar's current options in an instance of the <code><a href = 'CalendarOptions.html' target = '_blank'>CalendarOptions</a></code> class.
270 *
271 * @return CalendarOptions
272*/
273public CalendarOptions getOptions() { }
274/**
275 * Injects the provided CSS string into the <code>&lt;head&gt;</code> element of the HTML document in the BBjHtmlView that contains the calendar.
276 * <p>
277 * This method provides a simple way to add custom CSS that affects the calendar. For more advanced use cases, see the
278 * <code><a href = 'BBjCalendarWidget.html#injectCss' target = '_blank'>injectCss()</a></code> method that takes several
279 * parameters to provide greater control over the injection.
280 *
281 * @param BBjString css! The CSS to inject into the BBjHtmlView's DOM.
282*/
283public void injectCss(BBjString css!) { }
284/**
285 * Injects the provided CSS string into the <code>head</code> or <code>body</code> of the HTML DOM (as specified by the location! parameter)
286 * in the BBjHtmlView that contains the calendar, as well as providing the ability to tag the CSS and replace it in subsequent calls.
287 *
288 * @param BBjString css! The CSS to inject into the BBjHtmlView's DOM.
289 * @param BBjString location! The target for injection which can be 'head' or 'body'. If it's an empty string, it will default to 'body'.
290 * @param BBjString description! The description of the CSS, which is used to replace it in subsequent calls.
291 * @param BBjNumber removePrevious! A BBjNumber acting as a boolean that determines whether the CSS should replace existing CSS with the same description.
292*/
293public void injectCss(BBjString css!, BBjString location!, BBjString description!, BBjNumber removePrevious!) { }
294/**
295 * Injects the CSS contained in the specified file into the <code>&lt;head&gt;</code> element of the HTML document in the BBjHtmlView that contains the calendar.
296 * This is a convenience method that reads in the contents of the provided CSS file and injects it into the HtmlView control that contains the calendar.
297 *
298 * @param BBjString cssPath! A string representing the full path and filename of the file that contains the CSS to be injected.
299*/
300public void injectCssFile(BBjString cssPath!) { }
301/**
302 * Injects the provided JavaScript string at the top-level window.
303 *
304 * @param BBjString script! The JavaScript to inject into the BBjHtmlView.
305 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/index.htm#sysguicontmethods/bbjhtmlview/bbjhtmlview_injectscript.htm' target = '_blank'>BBjHtmlView::injectScript</a>.
306*/
307public void injectScript(BBjString script!) { }
308/**
309 * Injects the JavaScript contained in the specified script file into the top-level window. This is a convenience method
310 * that reads in the contents of the provided JavaScript file and injects it into the HtmlView control that contains the calendar.
311 *
312 * @param BBjString scriptPath! A string representing the full path and filename of the file that contains the JavaScript to be injected.
313 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/index.htm#sysguicontmethods/bbjhtmlview/bbjhtmlview_injectscript.htm' target = '_blank'>BBjHtmlView::injectScript</a>.
314*/
315public void injectScriptFile(BBjString scriptPath!) { }
316/**
317 * Injects the specified JavaScript URL into the HTML DOM, making it available for subsequent use by client-side JavaScript.
318 *
319 * @param BBjString url! The URL string containing JavaScript to be injected into the HTML DOM.
320*/
321public void injectUrl(BBjString url!) { }
322/**
323 * Executes the provided JavaScript via the BBjJavaScriptExecutor class which results in a debounced execution, which
324 * is useful when you don't need the return value from the script and the script can be batched with other scripts. If you
325 * need the return value from the script, then you need to call the
326 * <code><a href = 'BBjCalendarWidget.html#executeScriptImmediately' target = '_blank'>executeScriptImmediately()</a></code> method instead.
327 * <p>
328 * <b>Note</b>: The executor handles JSNI automatically so you don't have to check for BUI and adjust the window and document JavaScript objects.
329 *
330 * If the BBjHtmlView is not ready yet then the script will be queued. After the BBjHtmlView control is ready then the executor will execute it on the client.
331 *
332 * @param BBjString script$ The JavaScript code to execute.
333 *
334 * @return Object The result of the JavaScript code execution if the script returns a value.
335*/
336public Object executeScript(BBjString script!) { }
337/**
338 * Executes the provided JavaScript immediately via the BBjJavaScriptExecutor class without debouncing, which
339 * is necessary when you need the return value from the script.
340 * <p>
341 * <b>Note</b>: The executor handles JSNI automatically so you don't have to check for BUI and adjust the window and document JavaScript objects.
342 *
343 * If the BBjHtmlView is not ready then this method will throw an error 500. Setting a callback for the
344 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_READY' target = '_blank'>CalendarAPI.ON_CALENDAR_READY</a></code>
345 * will result in your application getting a <code><a href = 'CalendarReadyEvent.html' target = '_blank'>CalendarReadyEvent</a></code>
346 * event signaling that the calendar is ready for interaction.
347 *
348 * @param BBjString script$ The JavaScript code to execute.
349 *
350 * @return Object The result of the JavaScript code execution if the script returns a value.
351*/
352public Object executeScriptImmediately(BBjString script!) { }
353/**
354 * Supresses JavaScript debouncing for BUI.
355 * <p>
356 * Setting this to "0" may help to improve the communication performance between BBj and the calendar in the BBjHtmlViewControl when running in BUI.
357 *
358 * @param BBjNumber suppress! A BBjNumber acting as a boolean that determines whether the BBjJavaScriptExecutor should disable debouncing or not where 1 = suppressDebouncing and 0 = doNotSuppressDebouncing (default).
359 *
360 * @see <a href = '#render'>#suppressDebouncing()</a>.
361 * @see <a href = '#render'>#suppressGuiDebouncing()</a>.
362*/
363public void suppressBuiDebouncing(BBjNumber suppress!) { }
364/**
365 * Supresses JavaScript debouncing when running in GUI.
366 * <p>
367 * Setting this to "0" may help to improve the communication performance between BBj and the calendar in the BBjHtmlViewControl when running in GUI.
368 *
369 * @param BBjNumber suppress! A BBjNumber acting as a boolean that determines whether the BBjJavaScriptExecutor should disable debouncing or not where 1 = suppressDebouncing and 0 = doNotSuppressDebouncing (default).
370 *
371 * @see <a href = '#render'>#suppressDebouncing()</a>.
372 * @see <a href = '#render'>#suppressBuiDebouncing()</a>.
373*/
374public void suppressGuiDebouncing(BBjNumber suppress!) { }
375/**
376 * Supressesss JavaScript debouncing for both GUI and BUI.
377 *
378 * @param BBjNumber suppress! A BBjNumber acting as a boolean that determines whether the BBjJavaScriptExecutor should disable debouncing or not where 1 = suppressDebouncing and 0 = doNotSuppressDebouncing (default).
379 *
380 * @see <a href = '#render'>#suppressBuiDebouncing()</a>.
381 * @see <a href = '#render'>#suppressGuiDebouncing()</a>.
382*/
383public void suppressDebouncing(BBjNumber suppress!) { }
384/**
385 * Renders the calendar inside the HtmlView and applies the current calendar options.
386 * <p>
387 * This composes the calendar configuration and sends it to the client for a full rerendering. This is the
388 * difference between the <code>render()</code> and the <code>redraw()</code> method - the <code>redraw()</code> method
389 * only instructs the calendar to repaint itself; it doesn't change or apply any configuration options.
390 * <p>
391 * You can call this method to force the calendar to be updated after you modify its setup configuration, as in:
392 *
393 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
394 *
395 * <i><span style = 'color:#080;'>rem Get and then set the desired options inline dynamically, calling the render() method afterwards to force the calendar to update with the new configuration:</span></i>
396 * myCal!.getOptions().setEnableEntryDurationEditable(1)
397 * myCal!.getOptions().setEnableEntryResizableFromStart(1)
398 * myCal!.getOptions().setEnableEntryStartEditable(1)
399 * myCal!.getOptions().setEnableSlotEntryOverlap(0)
400 * myCal!.render()
401 * </div></code></pre></blockquote>
402 *
403 * <b>Note</b>: You don't have to call the <code>render()</code> method if you update the calendar's configuration via the <code>setOptions()</code> method.
404*/
405public void render() { }
406/**
407 * Causes the calendar to refetch entries from all sources and rerender.
408 * <p>
409 * If you've previously added events to the calendar from a remote source, such
410 * as a web service or Google Calendar, then the calendar will requery those sources
411 * for an updated entry set. If the entries on the backend have changed, such as
412 * some entries have been added and others deleted, then those changes will be
413 * reflected on the calendar after calling this method.
414*/
415public void refetchAllEntries() { }
416/**
417 * Logs a debug string to the browser's console for debugging purposes if the EnableDebug option has been set. This method is used
418 * internally by the BBjCalendarWidget and may also be used in your applications. To <b><i>always</i></b> log information to the console
419 * regardless of whether the EnableDebug option has been set, use the <code><a href = '#consoleLog'>consoleLog()</a></code> method instead.
420 * <p>
421 * If you provide a simple string, like
422 * <p>"<code>Got Here!</code>"
423 * <p>then you'll see an entry in the console that looks like
424 * <p>"<code><span style = 'background: hsl(40, 90%, 95%); color: hsl(40, 100%, 25%); 'background: hsl(40, 90%, 95%); color: hsl(40, 100%, 25%);'><b>BBjCalendarWidget Debug: </b>Got Here!</span></code>"
425 * <p>
426 * <b>Note</b>: If you provide a static string with single quotes, then you can print out JavaScript objects
427 * if they're not enclosed in the single quotes. For example, calling the method with the string
428 * <p>"<code><span style = 'background: yellow;'>'</span>Calendar View: <span style = 'background: yellow;'>'</span>, window.calendar.view.type</code>"
429 * <p>(note the single quotes) results in the following message being printed in the console:
430 * <p>"<code><span style = 'background: hsl(40, 90%, 95%); color: hsl(40, 100%, 25%); 'background: hsl(40, 90%, 95%); color: hsl(40, 100%, 25%);'><b>BBjCalendarWidget Debug: </b>Calendar View: timeGridWeek</code>".
431 * <p>In other words, if you supply single quotes then the entire parameter is applied to the <code>console.log()</code> JavaScript function without any modifications.
432*/
433public void debugLog(BBjString msg!) { }
434/**
435 * Logs the provided string to the browser's console for debugging purposes <b><i>regardless</i></b> of whether the EnableDebug option has been set.
436 * <p>
437 * If you provide a simple string, like
438 * <p>"<code>Got Here!</code>"
439 * <p>then you'll see an entry in the console that looks like
440 * <p>"<code><span style = 'background: hsl(60, 100%, 65%); color: hsl(350, 100%, 25%);'><b>BBjCalendarWidget Debug: </b>Got Here!</span></code>"
441 * <p>
442 * <b>Note</b>: If you provide a static string with single quotes, then you can print out JavaScript objects
443 * if they're not enclosed in the single quotes. For example, calling the method with the string
444 * <p>"<code><span style = 'background: yellow;'>'</span>Calendar View: <span style = 'background: yellow;'>'</span>, window.calendar.view.type</code>"
445 * <p>(note the single quotes) results in the following message being printed in the console:
446 * <p>"<code><span style = 'background: hsl(60, 100%, 65%); color: hsl(350, 100%, 25%);'><b>BBjCalendarWidget Debug: </b>Calendar View: timeGridWeek</code>".
447 * <p>In other words, if you supply single quotes then the entire parameter is applied to the <code>console.log()</code> JavaScript function without any modifications.
448 * @since BBj 21.12
449*/
450public void consoleLog(BBjString msg!) { }
451/**
452 * An internal event handler for native JavaScript events from the BBjHtmlView control that converts a JavaScript calendar event to a BBj callback event.
453 *
454 * @param BBjNativeJavaScriptEvent ev! The Javascript event from the client.
455*/
456public void onNativeEvent(BBjNativeJavaScriptEvent ev!) { }
457/**
458 * Initially draws or redraws the widget whenever it needs to be rendered.
459 * <p>
460 * Your application code won't ever have to call this method under normal conditions. It's typically only used internally
461 * to redraw the calendar after the the <code>setSize()</code> method has been called. However, if you may want to call
462 * the <code><a href = '#render'>render()</a></code> method if you modified the calendar's options inline (as opposed to using the <code>setOptions()</code> method.
463 *
464 * @param BBjNumber shouldCreate! A BBjNumber acting as a boolean that indicates if the control should be (re)created (1) or just redrawn (0).
465 * @see <a href = '#render'>render()</a>
466*/
467public void redraw(BBjNumber shouldCreate!) { }
468/**
469 * Returns the calendar's options as a JsonObject.
470 *
471 * @return JsonObject The calendar's options as a JsonObject.
472 * @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.
473*/
474public JsonObject getOptionsAsJsonObject() { }
475/**
476 * Forces the calendar to resize itself based on the available space in the container DIV.
477 * <p>
478 * Using the default index.html template, the calendar is contained within the DIV that has the class 'BBjCalendarWidgetContainer'.
479 * Whenever you modify the container DIV in such a way that it affects the calendar's size, such as dynamically changing
480 * its margin CSS, you may want to call this method afterwards to cause the calendar to adjust to the new container size.
481 * <p>
482 * <b>Note</b>: If you call one of the setPadding() methods then this will be executed automatically after
483 * the padding has been added to the container DIV, so this method isn't likely to be needed very often.
484 *
485*/
486public void updateSize() { }
487/**
488 * Sets the padding, or spacing around the calendar control, to the same number of pixels for all four sides.
489 * <p>
490 * Using the default index.html template, the calendar is contained within the DIV that has the class 'BBjCalendarWidgetContainer'.
491 * This method modifies the CSS for the container DIV by setting its padding to the provided padding size in pixels.
492 *
493 * @param BBjNumber padding! The numeric value of the desired padding in pixels, e.g. '5' for a 5-pixel padding on all sides.
494*/
495public void setPadding(BBjNumber padding!) { }
496/**
497 * Sets the padding, or spacing around the calendar control, to the specified number of pixels for the top, right, bottom, and left sides.
498 * <p>
499 * Using the default index.html template, the calendar is contained within the DIV that has the class 'BBjCalendarWidgetContainer'.
500 * This method modifies the CSS for the container DIV by setting its padding to the provided padding size in pixels.
501 *
502 * @param BBjNumber paddingTop! The numeric value of the desired top padding in pixels, e.g. '5' for a 5-pixel padding on the top of the container.
503 * @param BBjNumber paddingRight! The numeric value of the desired right padding in pixels, e.g. '5' for a 5-pixel padding on the right side of the container.
504 * @param BBjNumber paddingBottom! The numeric value of the desired bottom padding in pixels, e.g. '5' for a 5-pixel padding on the bottom of the container.
505 * @param BBjNumber paddingLeft! The numeric value of the desired left in pixels, e.g. '5' for a 5-pixel padding on the left side of the container.
506*/
507public void setPadding(BBjNumber paddingTop!, BBjNumber paddingRight!, BBjNumber paddingBottom!, BBjNumber paddingLeft!) { }
508/**
509 * Returns the unique control type for the <code>BBjCalendarWidget</code>, which is 65050.
510 *
511 * @return int controlType = 65050
512*/
513public int getControlType() { }
514/**
515 * Returns a BBjImage screenshot of the <code>BBjCalendarWidget</code>.
516 *
517 * @return BBjImage A screenshot of the calendar in BBjImage format.
518 *
519 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjimage.htm' target = '_blank'>BBjImage</a>
520*/
521public BBjImage getImage() { }
522/**
523 * Saves a BBjImage screenshot of the <code>BBjCalendarWidget</code> to the specified file path.
524 *
525 * @param BBjString path! A string representing the full path and filename for the saved screenshot of the calendar.
526*/
527public void saveAsPngImage(BBjString path!) { }
528/**
529 * Returns a BBjVector filled with optional custom tags that were previously set with the setVisibleTags() method and determine which calendar entries should be displayed.
530 * <p>
531 * When dealing with entry tags, there are three sets to be aware of:
532 * <ol>
533 * <li> The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers setTags() methods that give you the opportunity to add custom tags to any entry.</li>
534 * <li> The <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> methods allow you to set which entries will be visible in the calendar, as any entries that share a tag with the visible tag set will be displayed normally.</li>
535 * <li> The <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods allow you to set which entries will be hidden in the calendar, as any entries that share a tag with the hidden tag set will be be hidden from view.</li>
536 * </ol>
537 * <p>
538 * <b>Note</b>: If the <code>BBjCalendarWidget</code>'s set of visible tags is empty then all calendar entries will be visible.
539 * If the <code>BBjCalendarWidget</code>'s set of hidden tags is empty then all calendar entries will be visible.
540 * <p>
541 * <b>Note</b>: You will typically affect the calendar's entry visibility by calling either the setVisibleTags() or setHiddenTags() methods, but not both.
542 *
543 * @return BBjVector A vector filled with tags such as "work", "programming", "meeting", etc. that has been previously filled via one of the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> methods.
544 *
545 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a>
546*/
547public BBjVector getVisibleTags() { }
548/**
549 * Sets one or more optional, custom tags that determine which calendar
550 * entries should be displayed. The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers
551 * setTags() methods that give you the opportunity to add custom tags to any entry. After
552 * adding tags to one or more entries, you can call methods on the calendar to show or
553 * hide entries based on their tags by calling the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> and
554 * <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods.
555 * <p>
556 * This is similar to the <code>setVisibleTags()</code> method that takes a BBjVector except that it takes a comma-delimted string of tags for succinctness.
557 *
558 * @param BBjString tags! A comma-delimted string of tags such as "work, programming".
559*/
560public void setVisibleTags(BBjString tags!) { }
561/**
562 * Sets one or more optional, custom tags that determine which calendar
563 * entries should be displayed. The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers
564 * setTags() methods that give you the opportunity to add custom tags to any entry. After
565 * adding tags to one or more entries, you can call methods on the calendar to show or
566 * hide entries based on their tags by calling the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> and
567 * <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods.
568 *
569 * @param BBjVector A vector filled with tags such as "work", "programming", "meeting", etc.
570*/
571public void setVisibleTags(BBjVector tags!) { }
572/**
573 * Returns a BBjVector filled with optional custom tags that were previously set with the setHiddenTags() method and determine which calendar entries should be hidden.
574 * <p>
575 * When dealing with entry tags, there are three sets to be aware of:
576 * <ol>
577 * <li> The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers setTags() methods that give you the opportunity to add custom tags to any entry.</li>
578 * <li> The <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> methods allow you to set which entries will be visible in the calendar, as any entries that share a tag with the visible tag set will be displayed normally.</li>
579 * <li> The <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods allow you to set which entries will be hidden in the calendar, as any entries that share a tag with the hidden tag set will be be hidden from view.</li>
580 * </ol>
581 * <p>
582 * <b>Note</b>: If the <code>BBjCalendarWidget</code>'s set of visible tags is empty then all calendar entries will be visible.
583 * If the <code>BBjCalendarWidget</code>'s set of hidden tags is empty then all calendar entries will be visible.
584 * <p>
585 * <b>Note</b>: You will typically affect the calendar's entry visibility by calling either the setVisibleTags() or setHiddenTags() methods, but not both.
586 *
587 * @return BBjVector A vector filled with tags such as "work", "programming", "meeting", etc. that has been previously filled via one of the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> methods.
588 *
589 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a>
590*/
591public BBjVector getHiddenTags() { }
592/**
593 * Sets one or more optional, custom tags that determine which calendar
594 * entries should be hidden. The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers
595 * setTags() methods that give you the opportunity to add custom tags to any entry. After
596 * adding tags to one or more entries, you can call methods on the calendar to show or
597 * hide entries based on their tags by calling the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> and
598 * <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods.
599 * <p>
600 * This is similar to the <code>setHiddenTags()</code> method that takes a BBjVector except that it takes a comma-delimted string of tags for succinctness.
601 *
602 * @param BBjString A comma-delimted string of tags such as "work, programming, personal".
603*/
604public void setHiddenTags(BBjString tags!) { }
605/**
606 * Sets one or more optional, custom tags that determine which calendar
607 * entries should be hidden. The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers
608 * setTags() methods that give you the opportunity to add custom tags to any entry. After
609 * adding tags to one or more entries, you can call methods on the calendar to show or
610 * hide entries based on their tags by calling the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> and
611 * <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods.
612 *
613 * @param BBjVector A vector filled with tags such as "work", "programming", "meeting", etc.
614*/
615public void setHiddenTags(BBjVector tags!) { }
616/**
617 * Returns the calendar's view type which will be one of the following constants:
618 * <ul>
619 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_WEEK()</a></code>.</li>
620 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_MONTH()</a></code>.</li>
621 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_DAY' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_DAY()</a></code>.</li>
622 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_WEEK()</a></code>.</li>
623 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_DAY' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_DAY()</a></code>.</li>
624 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_WEEK()</a></code>.</li>
625 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_MONTH()</a></code>.</li>
626 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_YEAR' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_YEAR()</a></code>.</li>
627 * </ul>
628 *
629 * @return BBjString The calendar's current view type, such as <code>CalendarAPI.CALENDAR_VIEW_DAY_GRID_WEEK()</code>.
630*/
631public BBjString getViewType() { }
632/**
633 * Sets the calendar's view type.
634 * <p>
635 * <b>Note</b>: Calling this method causes the calendar to change its view, which then results in a
636 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_VIEW_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_VIEW_CHANGE</a></code> event.
637 * <p>
638 * The provided view type should be one of the following constants:
639 * <ul>
640 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_WEEK()</a></code>.</li>
641 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_MONTH()</a></code>.</li>
642 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_DAY' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_DAY()</a></code>.</li>
643 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_WEEK()</a></code>.</li>
644 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_DAY' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_DAY()</a></code>.</li>
645 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_WEEK()</a></code>.</li>
646 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_MONTH()</a></code>.</li>
647 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_YEAR' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_YEAR()</a></code>.</li>
648 * </ul>
649 *
650 * @param BBjString viewType! The desired calendar view type, such as <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_WEEK()</a></code>.
651*/
652public void setViewType(BBjString viewType!) { }
653/**
654 * Returns all of the calendar's available themes as an alphabetized list in a BBjVector filled with the theme names.
655 * <p>
656 * After determining which themes are available, you can call the <code><a href = 'BBjCalendarWidget.html#setTheme' target = '_blank'>setTheme()</a></code>
657 * method specifying any of the theme names in the return vector to change the calendar's theme.
658 * <p>
659 * Note that the installed themes are located in the BBjCalendarWidget's <code>lib/bootstrap/themes/</code> directory. The installed themes
660 * are free Bootstrap themes from <code><a href = 'https://bootswatch.com/' target = '_blank'>https://bootswatch.com/</a></code>, although free
661 * Bootstrap themes are available from many other sites such as
662 * <code><a href = 'https://startbootstrap.com/themes?showPro = false&showVue = false&showAngular = false' target = '_blank'>https://startbootstrap.com/themes</a></code>.
663 * If you would like to add more themes, create a subdirectory under the calendar's themes directory and copy the <code>bootstrap.css</code> and
664 * <code>bootstrap.min.css</code> files in the newly-created subdirectory. The calendar will attempt to find and use the
665 * <code>bootstrap.min.css</code> first due to its reduced size.
666 *
667 * @return BBjVector A BBjVector filled with the alphabetized list of available theme names.
668*/
669public static BBjVector getThemes() { }
670/**
671 * Sets the calendar's theme to one of the installed Boostrap themes, which modifies the calendar's fonts and color scheme.
672 * <p>
673 * To determine which themes are available, you can call the <code><a href = 'BBjCalendarWidget.html#getThemes' target = '_blank'>getThemes()</a></code>
674 * method which returns a BBjVector filled with the installed theme names.
675 * <p>
676 * Note that the installed themes are located in the BBjCalendarWidget's <code>lib/bootstrap/themes/</code> directory. The installed themes
677 * are free Bootstrap themes from <code><a href = 'https://bootswatch.com/' target = '_blank'>https://bootswatch.com/</a></code>, although free
678 * Bootstrap themes are available from many other sites such as
679 * <code><a href = 'https://startbootstrap.com/themes?showPro = false&showVue = false&showAngular = false' target = '_blank'>https://startbootstrap.com/themes</a></code>.
680 * If you would like to add more themes, create a subdirectory under the calendar's themes directory and copy the <code>bootstrap.css</code> and
681 * <code>bootstrap.min.css</code> files in the newly-created subdirectory. The calendar will attempt to find and use the
682 * <code>bootstrap.min.css</code> first due to its reduced size.
683 *
684 * @param BBjString theme!
685*/
686public void setTheme(BBjString theme!) { }
687/**
688 * Registers a callback in a procedural program for the provided event type.
689 * <p>
690 * These are the valid callback event type options:
691 * <ul>
692 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_READY' target = '_blank'>CalendarAPI.ON_CALENDAR_READY</a></code> - the calendar is ready for interaction</li>
693 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_VIEW_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_VIEW_CHANGE</a></code> - the calendar's view has changed</li>
694 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRIES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRIES_SET</a></code> - entries have been changed or initialized in any way</li>
695 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CLICK</a></code> - the user clicked on an entry</li>
696 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> - an entry was added to the calendar</li>
697 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CHANGE</a></code> - the entry has been modified</li>
698 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> - the entry has been removed from the calendar</li>
699 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_ENTER' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_ENTER</a></code> - the user moved the mouse on an entry</li>
700 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_LEAVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_LEAVE</a></code> - the user moved the mouse off an entry</li>
701 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DRAG_START' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DRAG_START</a></code> - the user began dragging an entire entry</li>
702 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DRAG_STOP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DRAG_STOP</a></code> - the user stopped dragging the entry</li>
703 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DROP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DROP</a></code> - the user has completed dragging and dropping the entire entry</li>
704 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE_START' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE_START</a></code> - the user began to resize the entry to change its duration</li>
705 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE_STOP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE_STOP</a></code> - the user stopped resizing the entry</li>
706 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE</a></code> - the user completed resizing the entry resulting in a changed duration</li>
707 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RECEIVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RECEIVE</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li>
708 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_LEAVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_LEAVE</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li>
709 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DROP' target = '_blank'>CalendarAPI.ON_CALENDAR_DROP</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li>
710 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DATES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_DATES_SET</a></code> - the calendar's range has been initially set or changed in some way</li>
711 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DATE_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_DATE_CLICK</a></code> - the user clicked on a date or time in the calendar</li>
712 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_SELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_SELECT</a></code> - the user selected a date or time in the calendar (not an entry)</li>
713 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_UNSELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_UNSELECT</a></code> - the date/time selection has been cleared</li>
714 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_SUCCESS' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_SUCCESS</a></code> - fetching a CalendarEntrySource has succeded</li>
715 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_FAILURE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_FAILURE</a></code> - fetching a CalendarEntrySource has failed</li>
716 * </ul>
717 * <p>
718 * <b>Note</b>: Callbacks associated with dragging/dropping calendar entries between two different calendars has not yet been implemented.
719 *
720 * @param BBjNumber event! The event number which is one of the <code>CalendarAPI.ON_CALENDAR_*</code> constants.
721 * @param BBjString callback! The program's callback subroutine label.
722*/
723public void setCallback(BBjNumber event!, BBjString callback!) { }
724/**
725 * Registers a callback in an object-oriented program for the provided event type.
726 * <p>
727 * These are the valid callback event type options:
728 * <ul>
729 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_READY' target = '_blank'>CalendarAPI.ON_CALENDAR_READY</a></code> - the calendar is ready for interaction</li>
730 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_VIEW_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_VIEW_CHANGE</a></code> - the calendar's view has changed</li>
731 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRIES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRIES_SET</a></code> - entries have been changed or initialized in any way</li>
732 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CLICK</a></code> - the user clicked on an entry</li>
733 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> - an entry was added to the calendar</li>
734 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CHANGE</a></code> - the entry has been modified</li>
735 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> - the entry has been removed from the calendar</li>
736 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_ENTER' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_ENTER</a></code> - the user moved the mouse on an entry</li>
737 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_LEAVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_LEAVE</a></code> - the user moved the mouse off an entry</li>
738 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DRAG_START' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DRAG_START</a></code> - the user began dragging an entire entry</li>
739 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DRAG_STOP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DRAG_STOP</a></code> - the user stopped dragging the entry</li>
740 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DROP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DROP</a></code> - the user has completed dragging and dropping the entire entry</li>
741 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE_START' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE_START</a></code> - the user began to resize the entry to change its duration</li>
742 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE_STOP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE_STOP</a></code> - the user stopped resizing the entry</li>
743 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE</a></code> - the user completed resizing the entry resulting in a changed duration</li>
744 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RECEIVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RECEIVE</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li>
745 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_LEAVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_LEAVE</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li>
746 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DROP' target = '_blank'>CalendarAPI.ON_CALENDAR_DROP</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li>
747 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DATES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_DATES_SET</a></code> - the calendar's range has been initially set or changed in some way</li>
748 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DATE_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_DATE_CLICK</a></code> - the user clicked on a date or time in the calendar</li>
749 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_SELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_SELECT</a></code> - the user selected a date or time in the calendar (not an entry)</li>
750 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_UNSELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_UNSELECT</a></code> - the date/time selection has been cleared</li>
751 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_SUCCESS' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_SUCCESS</a></code> - fetching a CalendarEntrySource has succeded</li>
752 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_FAILURE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_FAILURE</a></code> - fetching a CalendarEntrySource has failed</li>
753 * </ul>
754 * <p>
755 * <b>Note</b>: Callbacks associated with dragging/dropping calendar entries between two different calendars has not yet been implemented.
756 *
757 * @param BBjNumber event! The event number which is one of the <code>CalendarAPI.ON_CALENDAR_*</code> constants.
758 * @param CustomObject instance! The program's custom class instance, usually #this!
759 * @param BBjString method! The program's custom class's method name.
760*/
761public void setCallback(BBjNumber event!, CustomObject instance!, BBjString method!) { }
762/**
763 * Removes the callback given the callback number.
764 *
765 * @param BBjNumber event! The event number which is one of the <code>CalendarAPI.ON_CALENDAR_*</code> constants.
766*/
767public void clearCallback(BBjNumber event!) { }
768/**
769 * Sets the background color of the calendar's containing window.
770 *
771 * @param BBjColor backColor! A BBjColor that defines the containing window's background color.
772*/
773public void setBackColor(BBjColor backColor!) { }
774/**
775 * Returns the background color of the calendar's containing window.
776 *
777 * @return BBjColor The containing window's background color as a BBjColor.
778*/
779public BBjColor getBackColor() { }
780/**
781 * Sets a custom, arbitrary object to be associated with the widget which can be retrieved later via the <code>getUserData()</code> method.
782 *
783 * @param Object userData! The object to associate with the widget.
784*/
785public void setUserData(Object userData!) { }
786/**
787 * Returns the custom object that was previously associated with the widget by calling the <code>setUserData()</code> method.
788 *
789 * @return Object The custom object associated with the widget.
790*/
791public Object getUserData() { }
792/**
793 * Sets whether the widget should be enabled.
794 *
795 * @param boolean enabled! A boolean that indicates whether the widget should be enabled (1) or not (0).
796*/
797public void setEnabled(boolean enabled!) { }
798/**
799 * Returns whether the widget is enabled or disabled.
800 *
801 * @return boolean A boolean that indicates whether the widget is enabled (1) or not (0).
802*/
803public boolean isEnabled() { }
804/**
805 * Sets whether the widget should be visible or hidden.
806 *
807 * @param boolean visible! A boolean that indicates whether the widget should be visible (1) or not (0).
808*/
809public void setVisible(boolean visible!) { }
810/**
811 * Returns whether the widget is visible or hidden.
812 *
813 * @return boolean A boolean that indicates whether the widget is visible (1) or not (0).
814*/
815public boolean isVisible() { }
816/**
817 * Returns the widget's width.
818 *
819 * @return BBjNumber The widget's width.
820*/
821public BBjNumber getWidth() { }
822/**
823 * Returns the widget's height.
824 *
825 * @return BBjNumber The widget's height.
826*/
827public BBjNumber getHeight() { }
828/**
829 * Sets the size of the calendar widget given the provided width and height.
830 *
831 * @param BBjNumber width! The widget's width.
832 * @param BBjNumber height! The widget's height.
833*/
834public void setSize(BBjNumber width!, BBjNumber height!) { }
835/**
836 * Returns the widget's X coordinate, or horizontal position.
837 *
838 * @return BBjNumber The widget's X coordinate.
839*/
840public BBjNumber getX() { }
841/**
842 * Returns the widget's Y coordinate, or vertical position.
843 *
844 * @return BBjNumber The widget's Y coordinate.
845*/
846public BBjNumber getY() { }
847/**
848 * Sets the location of the calendar widget given the provided X and Y coordinates.
849 *
850 * @param BBjNumber x! The widget's X coordinate.
851 * @param BBjNumber y! The widget's Y coordinate.
852*/
853public void setLocation(BBjNumber x!, BBjNumber y!) { }
854/**
855 * Returns the widget's name as previously-set via the <code>setName()</code> method.
856 *
857 * @return String The widget's name.
858*/
859public String getName() { }
860/**
861 * Sets the widget's name, which can later be retrieved via the <code>getName()</code> method.
862 * This value is propagated to the CSS class attribute of the HTML element representing the control in BUI.
863 *
864 * @param BBjString name! The widget's name.
865*/
866public void setName(BBjString name!) { }
867/**
868 * Adds the provided CSS style name to the widget.
869 *
870 * @param BBjString style! The CSS style name to add to the widget.
871 * @return boolean A boolean that indicates whether the style name was added to the widget (1) or not (0).
872*/
873public boolean addStyle(BBjString style!) { }
874/**
875 * Removes the provided CSS style name from the widget.
876 *
877 * @param BBjString style! The CSS style name to remove from the widget.
878 * @return boolean A boolean that indicates whether the style name was removed from the widget (1) or not (0).
879*/
880public boolean removeStyle(BBjString style!) { }
881/**
882 * Clears all the CSS styles from the widget.
883*/
884public void clearStyles() { }
885/**
886 * Sets a CSS property on the widget.
887 *
888 * @param BBjString property! The CSS property name to set.
889 * @param BBjString style! The CSS value to be assigned to the provided CSS property.
890*/
891public void setStyle(BBjString property!, BBjString style!) { }
892/**
893 * Returns the widget's name as previously-set via the <code>setName()</code> method.
894 *
895 * @return BBjVector A BBjVector filled with a list of all the CSS style names that have been added to the widget.
896*/
897public BBjVector getStyles() { }
898/**
899 * Returns the value of the specified CSS property.
900 *
901 * @param BBjString property! The CSS property name to get the value of.
902 *
903 * @return BBjString The value of the specified CSS property.
904*/
905public BBjString getStyle(BBjString property!) { }
906/**
907 * Navigates the calendar programmatically one step back (by a month or week for example),
908 * and is the same as the user clicking on the 'prev' toolbar button. The amount of time
909 * moved depends on the current view type.
910*/
911public void navigatePrev() { }
912/**
913 * Navigates the calendar programmatically one step forward (by a month or week for example),
914 * and is the same as the user clicking on the 'next' toolbar button. The amount of time
915 * moved depends on the current view type.
916*/
917public void navigateNext() { }
918/**
919 * Navigates the calendar programmatically back one year, and is the same as the user clicking on the 'prevYear' toolbar button.
920*/
921public void navigatePrevYear() { }
922/**
923 * Navigates the calendar programmatically forward one year, and is the same as the user clicking on the 'nextYear' toolbar button.
924*/
925public void navigateNextYear() { }
926/**
927 * Navigates the calendar programmatically to the current date, and is the same as the user clicking on the 'today' toolbar button.
928*/
929public void navigateToday() { }
930/**
931 * Navigates the calendar programmatically to the specified date. To ensure the calendar navigates to the correct date, the provided
932 * date should be in the ISO 8601 format. However, this method attempts to parse ambiguous dates and is often able to construct
933 * a date in the format <code>"YYYY-MM-DD"</code> given a date string in another format.
934 * <p>
935 * If the provided string is ambiguous, there are no guarantees that the method will be able to resolve the date/time string correctly.
936 * The success of this method depends on the format of the supplied date/time string and the client's browser. For example, a date of
937 * <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular
938 * date that you had in mind. That's because there is no good way to know which number corresponds to the year, month, and day. However,
939 * a string like <code>"Jan 1, 2000"</code> is far less ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>.
940 * <p>
941 * Additionally, since the method uses JavaScript when parsing dates and time, the success is dependant on the browser's JavaScript implementation.
942 * For example, at the time of this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>.
943 * However, Firefox returns an "Invalid Date" for those values.
944 * <p>
945 * The date string should ideally be in the <code>"YYYY-MM-DD"</code> format at a minimum, but the parser should be able to interpret various formats.
946 *
947 * @param BBjString date! The date string that will be parsed and then passed to the FullCalendar's gotoDate() method.
948 *
949 * @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.
950 * @see <a href = 'https://fullcalendar.io/docs/Calendar-gotoDate' target = '_blank'>Calendar::gotoDate</a> for information on the FullCalendar's gotoDate() method.
951*/
952public void navigateDate(BBjString date!) { }
953/**
954 * Navigates the calendar programmatically to the specified time. To ensure the calendar navigates to the correct time, the provided
955 * time should be in the ISO 8601 format or <code>"hh:mm"</code> format at a minimum.. However, this method attempts to parse ambiguous
956 * times and is often able to construct a time in the format <code>"hh:mm:ss"</code> given a time string in another format.
957 * <p>
958 * If the provided string is ambiguous, there are no guarantees that the method will be able to resolve the date/time string correctly.
959 * The success of this method depends on the format of the supplied date/time string and the client's browser. For example, a date of
960 * <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular
961 * date that you had in mind. That's because there is no good way to know which number corresponds to the year, month, and day. However,
962 * a string like <code>"Jan 1, 2000"</code> is far less ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>.
963 * <p>
964 * Additionally, since the method uses JavaScript when parsing dates and time, the success is dependant on the browser's JavaScript implementation.
965 * For example, at the time of this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>.
966 * However, Firefox returns an "Invalid Date" for those values.
967 * <p>
968 * The time string should ideally be in one of the following formats.
969 * <ul>
970 * <li>"hh:mm:ss.sss"</li>
971 * <li>"hh:mm:ss"</li>
972 * <li>"hh:mm"</li>
973 * </ul>
974 * but the parser should be able to interpret various formats.
975 *
976 * @param BBjString time! The time string that will be parsed and then passed to the FullCalendar's scrollToTime() method.
977 *
978 * @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.
979 * @see <a href = 'https://fullcalendar.io/docs/scrollToTime' target = '_blank'>Calendar::scrollToTime</a> for information on the FullCalendar's scrollToTime() method.
980 *
981 * @since BBj 22.00
982*/
983public void navigateTime(BBjString time!) { }
984/**
985 * Returns the calendar's currently selected date.
986 *
987 * @return BBjString The calendar's current date as a string.
988*/
989public BBjString getDate() { }
990/**
991 * Returns the calendar's currently selected date in ISO format.
992 *
993 * @return BBjString The calendar's current date as a string in 8601 format (YYYY-MM-DD), such as "2020-12-31"
994 *
995 * @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.
996*/
997public BBjString getDateAsISOString() { }
998/**
999 * A utility method that returns a formatted, or pretty-printed version of the supplied JSON object sorted alphabetically by key.
1000 *
1001 * @param JsonObject json! The JSON object to be formatted.
1002 * @return BBjString A BBjString that is a string representation of the supplied JSON object after it has been formatted, or an empty string if the provided JsonObject was null().
1003*/
1004public static BBjString getJsonObjectAsFormattedString(JsonObject json!) { }
1005/**
1006 * A utility method that returns a JSON array version of the supplied BBjVector.
1007 *
1008 * @param BBjVector vector! The BBjVector to be converted to a JSON array.
1009 * @return JsonArray A JSON array version of the supplied BBjVector.
1010*/
1011public static JsonArray getBBjVectorAsJsonArray(BBjVector vector!) { }
1012/**
1013 * A utility method that returns a BBjVector version of the supplied JSON array.
1014 *
1015 * @param JsonArray array! The JSON array to be converted to a BBjVector.
1016 * @return BBjVector A BBjVector version of the supplied JSON array.
1017*/
1018public static BBjVector getJsonArrayAsBBjVector(JsonArray array!) { }
1019/**
1020 * A utility method that converts a BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> object to a JSON array of calendar entries.
1021 *
1022 * @param BBjVector entries! A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects.
1023 * @return JsonArray A JsonArray filled with Json entry objects.
1024*/
1025public static JsonArray convertEntriesBBjVectorToJsonArray(BBjVector entries!) { }
1026/**
1027 * A utility method that converts a JSON array of calendar entries, such as what's received from
1028 * the JavaScript code, into a BBjVector filled with CalendarEntry objects.
1029 *
1030 * @param JsonArray entries! A JsonArray of calendar entries.
1031 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects.
1032*/
1033public static BBjVector convertEntriesArrayToBBjVector(JsonArray entries!) { }
1034/**
1035 * A utility method that converts a stringified JSON array of calendar entries, such as what's received
1036 * from the JavaScript code, into a BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects.
1037 *
1038 * @param BBjString entries! A stringified JSON array of calendar entries.
1039 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects.
1040*/
1041public static BBjVector convertEntriesArrayToBBjVector(BBjString entries!) { }
1042/**
1043 * A utility method that returns a descriptive string given an event number based on the <code>CalendarAPI.ON_CALENDAR_*</code> callback constants.
1044 *
1045 * @param BBjNumber eventNumber! The event number that is one of the <code>CalendarAPI.ON_CALENDAR_*</code> callback constants.
1046 *
1047 * @return BBjString A string description of the event number.
1048*/
1049public BBjString getEventDescription(BBjNumber eventNumber!) { }
1050/**
1051 * Returns a date string formatted as YYYY-MM-DD if the provided date string can be parsed into a valid date, or null() if the date string is invalid.
1052 * <p>
1053 * <b>Note</b>: An ISO 8601 formatted date/time string (<code>YYYY-MM-DDTHH:mm:ss.sssZ</code>) is never ambiguous, but this method exists to attempt to parse an ambiguous
1054 * date/time string into an ISO 8601 formatted date/time string. If the provided string is ambiguous, there are no guarantees that the method will be able to
1055 * resolve the date/time string correctly. The success of this method depends on the format of the supplied date/time string and the client's browser. For example,
1056 * a date of <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular date that you had in mind.
1057 * That's because there is no good way to know which number corresponds to the year, month, and day. However, a string like <code>"Jan 1, 2000"</code> is far less
1058 * ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>.
1059 * <p>
1060 * Additionally, since the method uses JavaScript when parsing dates, the success is dependant on the browser's JavaScript implementation. For example, at the time of
1061 * this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>. However, Firefox returns an "Invalid Date" for those values.
1062 *
1063 * @param BBjString dateString! A string that contains a date representation. If you provide a ISO formatted date, such as 2022-12-25, then
1064 *
1065 * @return BBjString A YYYY-MM-DD formatted date representation of the provided date string, or null() if the date string cannot be parsed into an ISO formatted date.
1066 *
1067 * @since BBj 22.00
1068*/
1069public BBjString getValidDateString(BBjString dateString!) { }
1070/**
1071 * Returns a time string formatted as HH:MM:SS using 24-hour format if the provided time string can be parsed into a valid time, or null() if the time string is invalid.
1072 * <p>
1073 * <b>Note</b>: An ISO 8601 formatted date/time string (<code>YYYY-MM-DDTHH:mm:ss.sssZ</code>) is never ambiguous, but this method exists to attempt to parse an ambiguous
1074 * date/time string into an ISO 8601 formatted date/time string. If the provided string is ambiguous, there are no guarantees that the method will be able to
1075 * resolve the date/time string correctly. The success of this method depends on the format of the supplied date/time string and the client's browser. For example,
1076 * a date of <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular date that you had in mind.
1077 * That's because there is no good way to know which number corresponds to the year, month, and day. However, a string like <code>"Jan 1, 2000"</code> is far less
1078 * ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>.
1079 * <p>
1080 * Additionally, since the method uses JavaScript when parsing dates, the success is dependant on the browser's JavaScript implementation. For example, at the time of
1081 * this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>. However, Firefox returns an "Invalid Date" for those values.
1082 *
1083 * @param BBjString timeString! A string that contains a time representation.
1084 *
1085 * @return BBjString A 24-hour HH:MM:SS formatted time representation of the provided time string, or null() if the time string cannot be parsed into an ISO formatted time.
1086 *
1087 * @since BBj 22.00
1088*/
1089public BBjString getValidTimeString(BBjString timeString!) { }
1090/**
1091 * Returns an ISO 8601 formatted date/time string if the provided date/time string can be parsed into a valid date, or null() if it can't be parsed.
1092 * <p>
1093 * <b>Note</b>: An ISO 8601 formatted date/time string (<code>YYYY-MM-DDTHH:mm:ss.sssZ</code>) is never ambiguous, but this method exists to attempt to parse an ambiguous
1094 * date/time string into an ISO 8601 formatted date/time string. If the provided string is ambiguous, there are no guarantees that the method will be able to
1095 * resolve the date/time string correctly. The success of this method depends on the format of the supplied date/time string and the client's browser. For example,
1096 * a date of <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular date that you had in mind.
1097 * That's because there is no good way to know which number corresponds to the year, month, and day. However, a string like <code>"Jan 1, 2000"</code> is far less
1098 * ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>.
1099 * <p>
1100 * Additionally, since the method uses JavaScript when parsing dates, the success is dependant on the browser's JavaScript implementation. For example, at the time of
1101 * this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>. However, Firefox returns an "Invalid Date" for those values.
1102 *
1103 * @param BBjString dateTimeString! A string that contains a date/time representation.
1104 *
1105 * @return BBjString An ISO 8601 formatted date representation of the provided date string, or null() if the date string cannot be parsed into an ISO formatted date/time string.
1106 *
1107 * @since BBj 22.00
1108*/
1109public BBjString getValidDateTimeString(BBjString dateTimeString!) { }
1110/**
1111 * Returns the difference between the client's local time and UTC in minutes. For example, if your time zone is
1112 * UTC+10, then -600 will be returned because UTC is 600 minutes behind the local time zone. Another way to view
1113 * it is that the return value is the number of minutes that should be added to the local time in order to find
1114 * UTC. Note that daylight savings time prevents this value from being a constant.
1115 *
1116 * @return BBjNumber The number of minutes needed to add to the local time to result in UTC.
1117 *
1118 * @since BBj 22.00
1119*/
1120public BBjNumber getLocalTimeZoneOffsetFromUtc() { }
1121/**
1122 * Adds an entry to the calendar given a JsonObject representation of the calendar entry.
1123 * <p>
1124 * <b>Note</b>: Adding entries to the calendar via this method will trigger the
1125 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD()</a></code> event.
1126 *
1127 * @param JsonObject entry! The entry to be added to the calendar.
1128*/
1129public void addEntry(JsonObject entry!) { }
1130/**
1131 * Adds an entry to the calendar given a <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> object.
1132 * <p>
1133 * <b>Note</b>: Adding entries to the calendar via this method will trigger the
1134 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD()</a></code> event.
1135 *
1136 * @param CalendarEntry entry! The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> to be added to the calendar.
1137*/
1138public void addEntry(CalendarEntry entry!) { }
1139/**
1140 * Adds several JsonObject entries in a JsonArray to the calendar at once for improved performance.
1141 * <p>
1142 * <b>Note</b>: Adding multiple entries to the calendar via this method will <b>not</b> trigger the
1143 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD()</a></code> event.
1144 *
1145 * @param JsonArray entries! A JsonArray filled with JSON objects to be added to the calendar.
1146*/
1147public void addEntries(JsonArray entries!) { }
1148/**
1149 * Adds several entries of type <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> to the calendar at once for improved performance.
1150 * <p>
1151 * <b>Note</b>: Adding multiple entries to the calendar via this method will <b>not</b> trigger the
1152 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD()</a></code> event.
1153 *
1154 * @param BBjVector entries! A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects to be added to the calendar.
1155*/
1156public void addEntries(BBjVector entries!) { }
1157/**
1158 * Adds entries to the calendar from a <code>CalendarEntrySource</code>.
1159 *
1160 * @param CalendarEntrySource entrySource! A previously-defined <code>CalendarEntrySource</code>.
1161*/
1162public void addEntrySource(CalendarEntrySource entrySource!) { }
1163/**
1164 * Returns a BBjVector filled with IDs for all the <code>CalendarEntrySource</code> objects that have previously been added to the calendar via the <code>addEntrySource()</code> method.
1165 *
1166 * @return BBjVector A BBjVector filled with the current <code>CalendarEntrySource</code> object IDs that have previously been added to the calendar, or null() if none have been added.
1167*/
1168public BBjVector getEntrySourceIds() { }
1169/**
1170 * Removes a <code>CalendarEntrySource<code> and its entries from the calendar given its unique ID.
1171 *
1172 * @param BBjString id! A BBjString filled with the unique ID for the <code>CalendarEntrySource<code> to remove.
1173*/
1174public void removeEntrySource(BBjString id!) { }
1175/**
1176 * Refetches the <code>CalendarEntrySource<code> object in the calendar given its unique ID, causing it to retrieve its entries again.
1177 *
1178 * @param BBjString id! A BBjString filled with the unique ID for the <code>CalendarEntrySource<code> to remove.
1179*/
1180public void refetchEntrySource(BBjString id!) { }
1181/**
1182 * Removes all <code>CalendarEntrySource<code> objects from the calendar.
1183 *
1184 * @return BBjNumber A BBjNumber indicating the number of entries that were removed from the calendar.
1185*/
1186public BBjNumber removeAllEntrySources() { }
1187/**
1188 * Refetches all <code>CalendarEntrySource<code> objects in the calendar, causing them to retrieve their entries again.
1189*/
1190public void refetchAllEntrySources() { }
1191/**
1192 * Returns all of the calendar's entries as a BBjVector of <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects.
1193 *
1194 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects for all the events in the calendar.
1195 *
1196 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a>
1197*/
1198public BBjVector getEntries() { }
1199/**
1200 * Returns all of the calendar's entries as a JsonArray of JsonObject events.
1201 *
1202 * @return JsonArray A JsonArray filled with JsonObjects for all the events in the calendar.
1203*/
1204public JsonArray getEntriesAsJsonArray() { }
1205/**
1206 * Returns all of the calendar's entries as a BBjVector of <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects.
1207 *
1208 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects for all the events in the calendar.
1209 *
1210 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a>
1211*/
1212public BBjVector getEntriesWithTag(BBjString tag!) { }
1213/**
1214 * Returns all of the calendar's entries as a BBjVector of <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects.
1215 *
1216 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects for all the events in the calendar.
1217 *
1218 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a>
1219*/
1220public BBjVector getEntriesWithTags(BBjVector tags!) { }
1221/**
1222 * Removes an entry from the calendar given its optional unique ID which must have previously been set.
1223 *
1224 * @param BBjString id! A BBjString containing the entry's unique ID.
1225 *
1226 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the event was removed (1) or not (0).
1227*/
1228public BBjNumber removeEntryById(BBjString id!) { }
1229/**
1230 * Removes an entry from the calendar.
1231 *
1232 * @param CalendarEntry entry! The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> to remove from the calendar.
1233 *
1234 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the event was removed (1) or not (0).
1235*/
1236public BBjNumber removeEntry(CalendarEntry entry!) { }
1237/**
1238 * Removes all the entries contained in the BBjVector from the calendar.
1239 * <p>
1240 * <b>Note</b>: Removing entries from the calendar via this method will trigger the
1241 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE()</a></code> event for each entry that was removed.
1242 *
1243 * @param BBjVector entries! A BBjVector filled with the <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects to remove from the the calendar.
1244 *
1245 * @return BBjNumber A BBjNumber indicating the number of entries that were removed from the calendar.
1246*/
1247public BBjNumber removeEntries(BBjVector entries!) { }
1248/**
1249 * Removes all the entries in the calendar.
1250 * <p>
1251 * <b>Note</b>: Removing entries from the calendar via this method will trigger the
1252 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE()</a></code> event for each entry that was removed.
1253 *
1254 * @return BBjNumber A BBjNumber indicating the number of entries that were removed from the calendar.
1255*/
1256public BBjNumber removeAllEntries() { }
1257/**
1258 * Updates an entry in the calendar.
1259 * <p>
1260 * This method uses the <code>CalendarEntry</code>'s ID (if set) or UUID (if the ID isn't set) to find the entry in the calendar. If found, it removes the
1261 * old version of the entry from the calendar, then adds the new version of the entry to the calendar. Because of that, if you've registered for the
1262 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> or
1263 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> events then your callback
1264 * code will executed as a result of calling this method.
1265 *
1266 * @param CalendarEntry entry! The updated <code>CalendarEntry</code> object
1267 *
1268 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the event was updated (1) or not (0). If the entry could not be found in the calendar, the method will return a 0.
1269 * @since BBj 21.12
1270*/
1271public void updateEntry(CalendarEntry entry!) { }
1272/**
1273 * Updates several JsonObject entries in a JsonArray to the calendar at once for improved performance.
1274 * <p>
1275 * This method iterates through the <code>CalendarEntry</code> objects and calls the same code as the <code>updateEntry()</code> method does. Therefore, it
1276 * uses the <code>CalendarEntry</code>'s ID (if set) or UUID (if the ID isn't set) to find the entry in the calendar. If found, it removes the
1277 * old version of the entry from the calendar, then adds the new version of the entry to the calendar. Because of that, if you've registered for the
1278 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> or
1279 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> events then your callback
1280 * code will executed once for each entry in the array as a result of calling this method.
1281 *
1282 * @param JsonArray entries! A JsonArray filled with JSON objects to be added to the calendar.
1283 * @since BBj 21.12
1284*/
1285public void updateEntries(JsonArray entries!) { }
1286/**
1287 * Updates several entries of type <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> to the calendar at once for improved performance.
1288 * <p>
1289 * This method iterates through the <code>CalendarEntry</code> objects and calls the same code as the <code>updateEntry()</code> method does. Therefore, it
1290 * uses the <code>CalendarEntry</code>'s ID (if set) or UUID (if the ID isn't set) to find the entry in the calendar. If found, it removes the
1291 * old version of the entry from the calendar, then adds the new version of the entry to the calendar. Because of that, if you've registered for the
1292 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> or
1293 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> events then your callback
1294 * code will executed once for each <code>CalendarEntry</code> in the BBjVector as a result of calling this method.
1295 *
1296 * @param BBjVector entries! A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects to be updated in the calendar.
1297 * @since BBj 21.12
1298*/
1299public void updateEntries(BBjVector entries!) { }
1300}