001/**
002 * CalendarEntry.bbj
003 * @author ndecker
004 *
005 * The <code>CalendarEntry</code> is a BBj Interface that defines a calendar entry, i.e. an appointment or event, for the <code>BBjCalendarWidget</code>.
006 * This file is part of the <code>BBjCalendarWidget</code> plugin.
007 *
008 * For the full copyright and license information, please see the LICENSE.txt files distributed with this source code in the appropriate lib directory.
009 *
010 * @see <a href = 'https://fullcalendar.io' target = '_blank'>FullCalendar</a> for further information on the underlying JavaScript-based calendar
011 * @see <a href = 'https://fullcalendar.io/docs/event-object' target = '_blank'>FullCalendar Event Object</a> for further information
012 * @see <a href = 'https://fullcalendar.io/docs/event-model' target = '_blank'>FullCalendar Event Object</a> for further information
013 *
014 * @since BBj 21.00
015*/
016package BBjCalendarWidget;
017import java.util.HashMap;
018import com.google.gson.Gson;
019import com.google.gson.JsonObject;
020/**
021 * <code>CalendarEntry</code> is a BBj Interface that contains information for a <a href = 'BBjCalendarWidget.html' target = '_blank'>BBjCalendarWidget's</a> entry (event, appointment, etc.).
022 *
023 * <b>Note</b>: The values for date/time parameters should be in ISO 8601 format as in:
024 * <ul>
025 * <li><code>YYYY-MM-DD</code>, e.g. "1997-07-16" for dates.</li>
026 * <li><code>YYYY-MM-DDThh:mm:ss</code>, e.g. "1997-07-16T19:20:00" for dates and times.</li>
027 * <li><code>YYYY-MM-DDThh:mm:ssZ</code>, e.g. "1997-07-16T19:20:00-06:00" for dates and times with timezone information.</li>
028 * </ul>
029 *
030 * <b>Note</b>: All ending date/time parameters are exclusive. For example, an event with the end of 2018-09-03 will appear to span through 2018-09-02 but end before the start of 2018-09-03.
031 *
032 * @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.
033 *
034 * @since BBj 21.00
035*/
036public interface CalendarEntry {
037/**
038 * <p>
039 * When in daygrid view, it renders the entry as a solid rectangle if it is all-day or multi-day.
040 * If it's a timed entry, it renders the entry as a colored a dot. When in other views, the entry will render normally.
041 * @return A BBjString with the 'auto' display style which is the default.
042*/
043public static BBjString CALENDAR_ENTRY_DISPLAY_AUTO() { }
044/**
045 * <p>
046 * When in daygrid view, it renders the entry as a solid rectangle.
047 * When in other views, the entry will render normally.
048 * @return A BBjString with the 'auto' display style which is the default.
049*/
050public static BBjString CALENDAR_ENTRY_DISPLAY_BLOCK() { }
051/**
052 * <p>
053 * When in daygrid view, it renders the entry as a colored dot.
054 * When in other views, the entry will render normally.
055 * @return A BBjString with the 'auto' display style which is the default.
056*/
057public static BBjString CALENDAR_ENTRY_DISPLAY_LIST_ITEM() { }
058/**
059 * <p>
060 * This modifies the background of the entry's date/time frame in the calendar.
061*/
062public static BBjString CALENDAR_ENTRY_DISPLAY_BACKGROUND() { }
063/**
064 * <p>
065 * This inversely modifies the background of the entry's date/time frame in the calendar.
066*/
067public static BBjString CALENDAR_ENTRY_DISPLAY_INVERSE_BACKGROUND() { }
068/**
069 * <p>
070 * This hides the entry on the calendar.
071*/
072public static BBjString CALENDAR_ENTRY_DISPLAY_NONE() { }
073/**
074 * Sets an entry's optional unique ID that can be used later to identify the entry. If the entry's ID is not provided, it will be set to the same value as the UUID, which is guaranteed to be set automatically.
075 *
076 * @param BBjString id! A string to uniquely identify the entry.
077*/
078public void setId(BBjString id!) { }
079/**
080 * Returns an entry's unique ID if it has previously been set. If the entry's ID was set at creation time, it will be set to the same value as the UUID, which is guaranteed to be set automatically.
081 *
082 * @return BBjString The entry's ID, or null() if it has not been previously been set.
083*/
084public BBjString getId() { }
085/**
086 * Returns an entry's unique UUID that is automatically generated for all entries.
087 *
088 * @return BBjString The entry's automatically generated UUID.
089*/
090public BBjString getUuid() { }
091/**
092 * Sets entry's title that is the description/summary text that will appear on an entry.
093 *
094 * @param BBjString title! A string to be used as the entry's title.
095*/
096public void setTitle(BBjString title!) { }
097/**
098 * Returns an entry's optional unique ID if it has previously been set.
099 *
100 * @return BBjString The entry's title.
101*/
102public BBjString getTitle() { }
103/**
104 * Sets an entry's extended information that can be used to further describe the entry beyond the title text.
105 * Note that the description property is not one of the standard FullCalendar fields. The BBjCalendarWidget
106 * will manage this field automatically so that you don't need to use the set/getExtendedProperties() methods
107 * in order to work with this property.
108 *
109 * @param BBjString description! A string that's used to further describe the entry beyond the title text.
110 * @see <a href = 'https://fullcalendar.io/docs/event-object' target = '_blank'>FullCalendar Event Object</a> for information about non-standard fields.
111*/
112public void setDescription(BBjString description!) { }
113/**
114 * Returns an entry's extended information that can be used to further describe the entry beyond the title text.
115 *
116 * @return BBjString The entry's description.
117*/
118public BBjString getDescription() { }
119/**
120 * Sets an entry's location that can be used to define a location for the entry.
121 * Note that the location property is not one of the standard FullCalendar fields. The BBjCalendarWidget
122 * will manage this field automatically so that you don't need to use the set/getExtendedProperties() methods
123 * in order to work with this property.
124 *
125 * @param BBjString location! A string that's used to define a location for the entry.
126 * @see <a href = 'https://fullcalendar.io/docs/event-object' target = '_blank'>FullCalendar Event Object</a> for information about non-standard fields.
127*/
128public void setLocation(BBjString location!) { }
129/**
130 * Returns an entry's extended information that can be used to further describe the entry beyond the title text.
131 *
132 * @return BBjString The entry's location.
133*/
134public BBjString getLocation() { }
135/**
136 * Sets an entry's associated URL that may be visited when this entry is clicked by the user.
137 *
138 * @param BBjString url! A string that contains a URL to be associated with the entry.
139*/
140public void setUrl(BBjString url!) { }
141/**
142 * Returns an entry's associated URL that may be visited when this entry is clicked by the user.
143 *
144 * @return BBjString The entry's URL.
145*/
146public BBjString getUrl() { }
147/**
148 * Sets an entry's group ID. Entries that share a groupId will be dragged and resized together automatically.
149 *
150 * @param BBjString groupId! A string that contains the entry's group ID. Entries that share a groupId will be dragged and resized together automatically.
151*/
152public void setGroupId(BBjString groupId!) { }
153/**
154 * Returns an entry's group ID. Entries that share a groupId will be dragged and resized together automatically.
155 *
156 * @return BBjString The entry's group ID.
157*/
158public BBjString getGroupId() { }
159/**
160 * Sets an entry's all-day status that determines if the entry is shown in the "all-day" section of the view, if applicable.
161 *
162 * @param BBjNumber allDay! A BBjNumber acting as a boolean that determines if the entry lasts all day (1) or not (0).
163*/
164public void setAllDay(BBjNumber allDay!) { }
165/**
166 * Returns an entry's all-day status that determines if the entry is shown in the "all-day" section of the view, if applicable.
167 *
168 * @return BBjNumber The entry's all-day status where 1 = all-day and 0 = a timed entry.
169*/
170public BBjNumber getAllDay() { }
171/**
172 * Sets an entry's overlap status that determines if the entries may be dragged/resized over one another.
173 *
174 * @param BBjNumber overlap! A BBjNumber acting as a boolean that determines if entries can overlap one another (1) or not (0).
175*/
176public void setEnableEntryOverlap(BBjNumber overlap!) { }
177/**
178 * Returns an entry's overlap status that determines if the entries may be dragged/resized over one another.
179 *
180 * @return BBjNumber The entry's overlap status where 1 = entries may overlap and 0 = entries cannot overlap.
181*/
182public BBjNumber getEnableEntryOverlap() { }
183/**
184 * Sets an entry's starting date/time. If the entry is explicitly all-day, then the time portion will be ignored.
185 *
186 * @param BBjString start! A string that contains the starting date/time for the entry.
187*/
188public void setStart(BBjString start!) { }
189/**
190 * Returns an entry's starting date/time.
191 *
192 * @return BBjString The entry's starting date/time.
193*/
194public BBjString getStart() { }
195/**
196 * Sets an entry's exclusive ending date/time. If the entry is explicitly all-day, then the time portion will be ignored.
197 *
198 * @param BBjString end! A string that contains the ending date/time for the entry.
199*/
200public void setEnd(BBjString end!) { }
201/**
202 * Returns an entry's exclusive ending date/time.
203 *
204 * @return BBjString The entry's ending date/time.
205*/
206public BBjString getEnd() { }
207/**
208 * Sets an entry's background color.
209 * <p>
210 * Colors may be specified as any valid CSS color, so <code>"red"</code>, <code>"rgb(255, 0, 0)"</code>, <code>"#ff0000"</code>, <code>"#f00"</code>, <code>"hsl(0, 100%, 50%)"</code>, and all the versions of those formats that include an alpha channel are valid ways of specifying the color red.
211 *
212 * @param BBjString backgroundColor! A string that contains the color for the entry's background.
213*/
214public void setBackgroundColor(BBjString backgroundColor!) { }
215/**
216 * Returns an entry's background color.
217 *
218 * @return BBjString The entry's entry's background color.
219*/
220public BBjString getBackgroundColor() { }
221/**
222 * Sets an entry's border color.
223 * <p>
224 * Colors may be specified as any valid CSS color, so <code>"red"</code>, <code>"rgb(255, 0, 0)"</code>, <code>"#ff0000"</code>, <code>"#f00"</code>, <code>"hsl(0, 100%, 50%)"</code>, and all the versions of those formats that include an alpha channel are valid ways of specifying the color red.
225 *
226 * @param BBjString borderColor! A string that contains the color for the entry's border.
227*/
228public void setBorderColor(BBjString borderColor!) { }
229/**
230 * Returns an entry's border color.
231 *
232 * @return BBjString The entry's border color.
233*/
234public BBjString getBorderColor() { }
235/**
236 * Sets an entry's text color.
237 *<p>
238 * Colors may be specified as any valid CSS color, so <code>"red"</code>, <code>"rgb(255, 0, 0)"</code>, <code>"#ff0000"</code>, <code>"#f00"</code>, <code>"hsl(0, 100%, 50%)"</code>, and all the versions of those formats that include an alpha channel are valid ways of specifying the color red.
239 *
240 * @param BBjString textColor! A string that contains the color for the entry's text.
241*/
242public void setTextColor(BBjString textColor!) { }
243/**
244 * Returns an entry's text color.
245 *
246 * @return BBjString The entry's text color.
247*/
248public BBjString getTextColor() { }
249/**
250 * Sets an entry's combined background and border color.
251 * <b>Note</b>: For a quick way to set a <code>CalendarEvent</code>'s colors, see the <code><a href = '#setColors'>setColors(backgroundColor!, borderColor!, textColor!)</a></code> method.
252 * <p>
253 * <b>Note</b>: This is a shorthand way of specifying the backgroundColor and borderColor at the same time. The color will be passed
254 * to the FullCalendar, but it internally sets the <code>backgroundColor</code> and <code>borderColor</code> to the value of the
255 * specified color and discards the given color. Therefore, you can set colors with this method, but the corresponding <code>getColor()</code>
256 * method may not return anything if you're working with a <code>CalendarEvent</code> object that was returned from the FullCalendar.
257 * <p>
258 * Colors may be specified as any valid CSS color, so <code>"red"</code>, <code>"rgb(255, 0, 0)"</code>, <code>"#ff0000"</code>, <code>"#f00"</code>, <code>"hsl(0, 100%, 50%)"</code>, and all the versions of those formats that include an alpha channel are valid ways of specifying the color red.
259 *
260 * @param BBjString color! A string that contains the color for the entry's background and border.
261*/
262public void setColor(BBjString color!) { }
263/**
264 * Returns an entry's combined background and border color, or null if the <code>CalendarEvent</code> object was provided
265 * by the FullCalendar. This is because the <code>setColor()</code> method is a shorthand way of specifying the
266 * backgroundColor and borderColor at the same time. The color will be passed to the FullCalendar, but it internally sets
267 * the <code>backgroundColor</code> and <code>borderColor</code> to the value of the specified color and discards the given
268 * color. Therefore, you can set colors with the <code>setColor()</code> method, but this <code>getColor()</code>
269 * method may not return anything if you're working with a <code>CalendarEvent</code> object that was returned from the FullCalendar.
270 * <p>
271 * <b>Note</b>: For a quick way to set a <code>CalendarEvent</code>'s colors, see the <code><a href = '#setColors'>setColors(backgroundColor!, borderColor!, textColor!)</a></code> method.
272 * @return BBjString The entry's combined background and border color.
273*/
274public BBjString getColor() { }
275/**
276 * A convenience method that sets an entry's background, border, and text colors in a single method call.
277 * <p>
278 * Colors may be specified as any valid CSS color, so <code>"red"</code>, <code>"rgb(255, 0, 0)"</code>, <code>"#ff0000"</code>, <code>"#f00"</code>, <code>"hsl(0, 100%, 50%)"</code>, and all the versions of those formats that include an alpha channel are valid ways of specifying the color red.
279 *
280 * @param BBjString color! A string that contains the color for the entry's background and border.
281*/
282public void setColors(BBjString backgroundColor!, BBjString borderColor!, BBjString textColor!) { }
283/**
284 * <b>DEPRECATED</b> Sets an entry's class name string (or CSS style) such as <code>"myclass1"</code>, that determines the HTML class that's associated with the entry.
285 * <p>
286 * See the <code>setClassNames()</code> methods to set multiple class names.
287 *
288 * @param BBjString className! A string that contains a class name string (or CSS style), such as <code>"myclass1"</code>, that determines the HTML class that's associated with the entry.
289 * @deprecated Deprecated in BBj 21.12 because this only supports a single class name and the class has methods that support mutliple class names. Please use the either the <code><a href = '#setClassNames'>setClassNames(BBjVector)</a></code> or <code><a href = '#setClassNames'>setClassNames(BBjString)</a></code> method instead.
290*/
291public void setClassName(BBjString className!) { }
292/**
293 * <b>DEPRECATED</b> Returns an entry's a class name string.
294 *
295 * @return BBjString The entry's a class name string.
296 * @deprecated Deprecated in BBj 21.12 because this only supports a single class name and the class has methods that support mutliple class names. Please use the <code><a href = '#getClassNames'>getClassNames()</a></code> method instead.
297*/
298public BBjString getClassName() { }
299/**
300 * Sets an entry's class names (or CSS styles) from a BBjVector that determine the HTML class that's associated with the entry. Class names should NOT be preceeded by a period, so possible class names could be <code>work</code> or <code>personal</code>.
301 * <p>
302 * Note that this sets all the class names at once. It's possible to add class names, regardless of whether they have been set or not, using the <code><a href = '#addClassName'>addClassName()</a></code> method.
303 * To remove a single class name from the entry, you can call the <code><a href = '#removeClassName'>removeClassName()</a></code> method, or get all the class names in a vector, remove the undesired classes, then set the class names.
304 * <p>
305 * Here's an example of how you can use custom class names and the BBjCalendarWidget's <code><a href = 'BBjCalendarWidget.html#injectCss' target = '_blank'>injectCSS()</a></code> method to affect a calendar entry's display:
306 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
307 *
308 * <i><span style = 'color:#080;'>rem Create a calendar entry for 3PM today and give it a custom CSS class name of "small-text", then add it to the calendar</span></i>
309 * myEntry! = CalendarAPI.createCalendarEntry("Write Advantage Article", date(0, "%Yl-%Mz-%Dz") + "T15:00:00")
310 * myEntry!.addClassName("small-text")
311 * myCal!.addEntry(myEntry!)
312 *
313 * <i><span style = 'color:#080;'>rem Inject custom CSS to change the event's text size</span></i>
314 * myCal!.injectCss(" .small-text div { font-size: 7px; } ")
315 * </div></code></pre></blockquote>
316 *
317 * @param BBjVector classNames! A vector of strings with the entry's class names (or CSS styles) such as <code>"myclass1"</code>, that determines the HTML class that's associated with the entry.
318*/
319public void setClassNames(BBjVector classNames!) { }
320/**
321 * Sets an entry's class names (or CSS styles) from a comma-delimited string that determine the HTML class that's associated with the entry. Class names should NOT be preceeded by a period, so possible class names could be <code>work</code> or <code>personal</code>.
322 * <p>
323 * This is similar to the <code>setClassNames()</code> method that takes a BBjVector except that it takes a comma-delimted string of class names for succinctness.
324 * <p>
325 * Note that this sets all the class names at once. It's possible to add class names, regardless of whether they have been set or not, using the <code><a href = '#addClassName'>addClassName()</a></code> method.
326 * To remove a single class name from the entry, you can call the <code><a href = '#removeClassName'>removeClassName()</a></code> method, or get all the class names in a vector, remove the undesired classes, then set the class names.
327 * <p>
328 * Here's an example of how you can use custom class names and the BBjCalendarWidget's <code><a href = 'BBjCalendarWidget.html#injectCss' target = '_blank'>injectCSS()</a></code> method to affect a calendar entry's display:
329 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
330 *
331 * <i><span style = 'color:#080;'>rem Create a calendar entry for 3PM today and give it a custom CSS class name of "small-text", then add it to the calendar</span></i>
332 * myEntry! = CalendarAPI.createCalendarEntry("Write Advantage Article", date(0, "%Yl-%Mz-%Dz") + "T15:00:00")
333 * myEntry!.addClassName("small-text")
334 * myCal!.addEntry(myEntry!)
335 *
336 * <i><span style = 'color:#080;'>rem Inject custom CSS to change the event's text size</span></i>
337 * myCal!.injectCss(" .small-text div { font-size: 7px; } ")
338 * </div></code></pre></blockquote>
339 *
340 * @param BBjString classNames! A comma-delimted string of class names such as <code>"work, personal"</code>.
341 * @since BBj 21.12
342*/
343public void setClassNames(BBjString classNames!) { }
344/**
345 * Returns an entry's class names (or CSS styles) in a vector of strings.
346 *
347 * @return BBjString The entry's class names in a vector of strings.
348*/
349public BBjVector getClassNames() { }
350/**
351 * Adds the provided class name string (or CSS style) such as <code>"myclass1"</code> to the entry's vector of class names.
352 * <p>
353 * This method can be used in place of the <code><a href = '#setClassNames'>setClassNames()</a></code> method as it adds the provided class name to the entry's vector of
354 * class names. It may be easier to call this method if you only need to set a few tags, as the <code><a href = '#setClassNames'>setClassNames()</a></code> method requires
355 * you to create and populate a BBjVector (unless you use the version that takes a comma-delimited string).
356 * <p>
357 * Here's an example of how you can use custom class names and the BBjCalendarWidget's <code><a href = 'BBjCalendarWidget.html#injectCss' target = '_blank'>injectCSS()</a></code> method to affect a calendar entry's display:
358 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
359 *
360 * <i><span style = 'color:#080;'>rem Create a calendar entry for 3PM today and give it a custom CSS class name of "small-text", then add it to the calendar</span></i>
361 * myEntry! = CalendarAPI.createCalendarEntry("Write Advantage Article", date(0, "%Yl-%Mz-%Dz") + "T15:00:00")
362 * myEntry!.addClassName("small-text")
363 * myCal!.addEntry(myEntry!)
364 *
365 * <i><span style = 'color:#080;'>rem Inject custom CSS to change the event's text size</span></i>
366 * myCal!.injectCss(" .small-text div { font-size: 7px; } ")
367 * </div></code></pre></blockquote>
368 *
369 * @param BBjString className! The class name (or CSS style) such as <code>"myclass1"</code> to add to the entry.
370 * @since BBj 21.12
371*/
372public void addClassName(BBjString className!) { }
373/**
374 * Removes the provided class name string (or CSS style) from the entry's vector of class names.
375 *
376 * @param BBjString className! The class name (or CSS style) to remove from the entry's vector of class names.
377 * @since BBj 21.12
378*/
379public void removeClassName(BBjString className!) { }
380/**
381 * Sets an entry's tags that can be used for a variety of purposes such as hiding or showing entries based on given tags.
382 *
383 * @param BBjVector tags! A vector of strings with the entry's tags.
384*/
385public void setTags(BBjVector tags!) { }
386/**
387 * Sets an entry's tags that can be used for a variety of purposes such as hiding or showing entries based on given tags.
388 * <p>
389 * This is similar to the <code>setTags()</code> method that takes a BBjVector except that it takes a comma-delimted string of tags for succinctness.
390 *
391 * @param BBjString tags! A comma-delimted string of tags such as "work, programming".
392*/
393public void setTags(BBjString tags!) { }
394/**
395 * Returns an entry's tags in a vector of strings.
396 *
397 * @return BBjVector The entry's tags in a vector of strings.
398*/
399public BBjVector getTags() { }
400/**
401 * Adds the provided tag to the entry's vector of tags.
402 * <p>
403 * This method can be used in place of the <code>setTags()</code> method as it adds the provided tag to the entry's vector of tags. It may
404 * be easier to call this method if you only need to set a few tags, as the <code>setTags()</code> method requires you to create and
405 * populate a BBjVector or a comma-delimited string.
406 *
407 * @param BBjString tag! The tag to add to the entry.
408*/
409public void addTag(BBjString tag!) { }
410/**
411 * Removes the provided tag from the entry's vector of tags.
412 *
413 * @param BBjString tag! The tag to remove from the entry's vector of tags.
414*/
415public void removeTag(BBjString tag!) { }
416/**
417 * Returns whether the provided tag exists the entry's vector of tags.
418 *
419 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the entry contains the provided tag (1) or not (0).
420*/
421public BBjNumber containsTag(BBjString tag!) { }
422/**
423 * Returns whether an entry contains any of the provided tags in the entry's vector of tags.
424 *
425 * @param BBjVector tags! A BBjVector filled with the tags of interest.
426 *
427 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the entry contains any of the supplied tags (1) or not (0).
428*/
429public BBjNumber containsAnyTag(BBjVector tags!) { }
430/**
431 * Returns whether an entry contains any of the provided tags in the entry's vector of tags.
432 * <p>
433 * This is similar to the <code>containsAnyTag()</code> method that takes a BBjVector except that it takes a comma-delimted string of tags for succinctness.
434 *
435 * @param BBjString tags! A comma-delimted string of tags such as "work, programming, meeting".
436 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the entry contains any of the supplied tags (1) or not (0).
437*/
438public BBjNumber containsAnyTag(BBjString tags!) { }
439/**
440 * Returns whether an entry contains all the provided tags in the entry's vector of tags.
441 *
442 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the entry contains all the supplied tags (1) or not (0).
443*/
444public BBjNumber containsAllTags(BBjVector tags!) { }
445/**
446 * Returns whether a <code>CalendarEntry</code> contains all the provided tags in comma-delimted string in the entry's vector of tags.
447 * <p>
448 * This is similar to the <code>containsAllTags()</code> method that takes a BBjVector except that it takes a comma-delimted string of tags for succinctness.
449 *
450 * @param BBjString tags! A comma-delimted string of tags such as "work, programming, meeting".
451 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the entry contains all the supplied tags (1) or not (0).
452*/
453public BBjNumber containsAllTags(BBjString tags!) { }
454/**
455 * Adds the provided extended property to the entry's HashMap of extended properties given the property key and value.
456 * <p>
457 * Note that this method simply puts the provide key/value pair in the extended properties HashMap. If an entry in the HashMap
458 * already existed with that particular key, then it will be updated with the provided value.
459 * <p>
460 * This method can be used in place of the <code>setExtendedProperties()</code> method as it adds the provided property to the entry's HashMap of extended properties. It may
461 * be easier to call this method if you only need to set a few extended properties, as the <code>setExtendedProperties()</code> method requires you to create and
462 * populate a HashMap.
463 *
464 * @param BBjString key! The key of the extended property to add to the entry.
465 * @param BBjString value! The value of the extended property to add to the entry.
466 * @since BBj 21.12
467*/
468public void addExtendedProperty(BBjString key!, BBjString value!) { }
469/**
470 * Removes the extended property from the entry's HashMap of extended properties given the property key.
471 *
472 * @param BBjString key! The extended property key to remove from the entry's HashMap of extended properties.
473 * @since BBj 21.12
474*/
475public void removeExtendedProperty(BBjString key!) { }
476/**
477 * Returns whether the provided extended property key exists the entry's HashMap of extended properties.
478 *
479 * @param BBjString key! The key that you're checking to see if it exists in the entry's extended properties.
480 *
481 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the entry contains the provided extended property key (1) or not (0).
482 * @since BBj 21.12
483*/
484public BBjNumber containsExtendedPropertyKey(BBjString key!) { }
485/**
486 * Returns the value of the provided extended property if the key exists in the entry's HashMap of extended properties.
487 *
488 * @param BBjString key! The extended property key that you wish to get the associated value
489 *
490 * @return BBjString The value of the extended property key. If the provided key does not exist in the entry's extended properties, this method will return null().
491 * @since BBj 21.12
492*/
493public BBjString getExtendedPropertyValue(BBjString key!) { }
494/**
495 * Sets an entry's extended properties, i.e. custom properties.
496 *
497 * @param HashMap extendedProperties! A HashMap of custom key/value string pairs that define the entry's custom properties.
498*/
499public void setExtendedProperties(HashMap extendedProperties!) { }
500/**
501 * Returns an entry's custom key/value string pairs that define the entry's custom properties
502 *
503 * @return HashMap The entry's custom key/value string pairs that define the entry's custom properties.
504*/
505public HashMap getExtendedProperties() { }
506/**
507 * Sets an entry's alternate rendering style. This overrides the calendar's master EntryDisplay option for this specific entry.
508 * <p>
509 * The display style may be one of the following constants:
510 * <ul>
511 * <li><code><a href = 'CalendarAPI.html#CALENDAR_ENTRY_DISPLAY_AUTO' target = '_blank'>CalendarAPI.CALENDAR_ENTRY_DISPLAY_AUTO()</a></code> - (default) When in daygrid, renders the event as a solid rectangle if it is all-day or multi-day. If a timed event, will render it with a dot. When in other views, will render normally.</li>
512 * <li><code><a href = 'CalendarAPI.html#CALENDAR_ENTRY_DISPLAY_BLOCK' target = '_blank'>CalendarAPI.CALENDAR_ENTRY_DISPLAY_BLOCK()</a></code> - When in daygrid, renders the event as a solid rectangle. When in other views, will render normally.</li>
513 * <li><code><a href = 'CalendarAPI.html#CALENDAR_ENTRY_DISPLAY_LIST_ITEM' target = '_blank'>CalendarAPI.CALENDAR_ENTRY_DISPLAY_LIST_ITEM()</a></code> - When in daygrid, renders the event with a dot. When in other views, will render normally.</li>
514 * <li><code><a href = 'CalendarAPI.html#CCALENDAR_ENTRY_DISPLAY_BACKGROUND' target = '_blank'>CalendarAPI.CALENDAR_ENTRY_DISPLAY_BACKGROUND()</a></code> - Highlights the background of the entry's container.</li>
515 * <li><code><a href = 'CalendarAPI.html#CALENDAR_ENTRY_DISPLAY_INVERSE_BACKGROUND' target = '_blank'>CalendarAPI.CALENDAR_ENTRY_DISPLAY_INVERSE_BACKGROUND()</a></code> - Hightlights the spans of time not occupied by an entry, or the opposite of the background.</li>
516 * <li><code><a href = 'CalendarAPI.html#CALENDAR_ENTRY_DISPLAY_NONE' target = '_blank'>CalendarAPI.CALENDAR_ENTRY_DISPLAY_NONE()</a></code> - Won't render the event at all.</li>
517 * </ul>
518 *
519 * @param BBjString display! A constant that denotes the desired entry display style.
520*/
521public void setDisplay(BBjString display!) { }
522/**
523 * Returns an entry's display style.
524 *
525 * @return BBjString The entry's display style.
526*/
527public BBjString getDisplay() { }
528/**
529 * Sets an entry's editable status that determines if the user can modify the entry, i.e. change the entry's starting date/time and duration.
530 * This overrides the calendar's master EnableEditable option for this specific entry.
531 * <b>Note</b>: This determines if the events can be dragged and resized and enables or disables both settings simultaneously. IOW, it's a shorhand way of setting both
532 * the EnableStartEditable and EnableDurationEditable properties at the same time. If you don’t want to set both, use the more specific
533 * <code><a href = '#setEnableStartEditable'>setEnableStartEditable()</a></code> or <code><a href = '#setEnableDurationEditable'>setEnableDurationEditable()</a></code> methods instead.
534 *
535 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'>
536 *
537 * <i><span style = 'color:#080;'>rem Example 1: The user can move and resize the entry, i.e. change the starting time/date and the duration</span></i>
538 * myEntry! = CalendarAPI.createCalendarEntry("Write Advantage Article", date(0, "%Yl-%Mz-%Dz") + "T15:00:00")
539 * myEntry!.setEnableEditable(1)
540 *
541 * <i><span style = 'color:#080;'>rem Example 2: The user can move and resize the entry, i.e. change the starting time/date and the duration</span></i>
542 * myEntry! = CalendarAPI.createCalendarEntry("Write Advantage Article", date(0, "%Yl-%Mz-%Dz") + "T15:00:00")
543 * myEntry!.setEnableStartEditable(1)
544 * myEntry!.setEnableDurationEditable(1)
545 *
546 * <i><span style = 'color:#080;'>rem Example 3: The user can change the entry's starting time/date but not the duration</span></i>
547 * myEntry! = CalendarAPI.createCalendarEntry("Write Advantage Article", date(0, "%Yl-%Mz-%Dz") + "T15:00:00")
548 * myEntry!.setEnableStartEditable(1)
549 *
550 * <i><span style = 'color:#080;'>rem Example 4: The user can change the entry's duration but not the starting time/date</span></i>
551 * myEntry! = CalendarAPI.createCalendarEntry("Write Advantage Article", date(0, "%Yl-%Mz-%Dz") + "T15:00:00")
552 * myEntry!.setEnableDurationEditable(1)
553 * </div></code></pre></blockquote>
554 *
555 * @param BBjNumber editable! A BBjNumber acting as a boolean that indicates whether the entry can be modified by the user, where 1 = editable and 0 = read-only.
556*/
557public void setEnableEditable(BBjNumber editable!) { }
558/**
559 * Returns the entry's editable status that determines if the entry can be modified by the user.
560 *
561 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the entry's editable status, where 1 = editable and 0 = read-only.
562*/
563public BBjNumber getEnableEditable() { }
564/**
565 * Sets an entry's start time editable status that determines if the entry's start time can be modified by the user by dragging (resizing). This overrides the calendar's master EnableStartEditable option for this specific entry.
566 * <p>
567 * <b>Note</b>: See the <code><a href = '#setEnableEditable'>setEnableEditable()</a></code> method if you wish to set the
568 * <code><a href = '#setEnableStartEditable'>setEnableStartEditable()</a></code> and <code><a href = '#setEnableDurationEditable'>setEnableDurationEditable()</a></code>
569 * parameters simultaneously. That method also contains sample code that demonstrates different ways to affect an entry's editability.
570 *
571 * @param BBjNumber startEditable! A BBjNumber acting as a boolean that indicates whether the entry's starting time can be modified by the user, where 1 = editable and 0 = not editable.
572*/
573public void setEnableStartEditable(BBjNumber startEditable!) { }
574/**
575 * Returns the entry's start time editable status that determines if the entry's start time can be modified by the user by dragging (resizing).
576 *
577 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the entry's starting time can be modified by the user, where 1 = editable and 0 = not editable.
578*/
579public BBjNumber getEnableStartEditable() { }
580/**
581 * Sets an entry's duration editable status that determines if the entry's duration can be modified by the user by dragging (resizing). This overrides the calendar's master EnableDurationEditable option for this specific entry.
582 * <p>
583 * <b>Note</b>: See the <code><a href = '#setEnableEditable'>setEnableEditable()</a></code> method if you wish to set the
584 * <code><a href = '#setEnableStartEditable'>setEnableStartEditable()</a></code> and <code><a href = '#setEnableDurationEditable'>setEnableDurationEditable()</a></code>
585 * parameters simultaneously. That method also contains sample code that demonstrates different ways to affect an entry's editability.
586 *
587 * @param BBjNumber durationEditable! A BBjNumber acting as a boolean that indicates whether the entry's duration can be modified by the user, where 1 = editable and 0 = not editable.
588*/
589public void setEnableDurationEditable(BBjNumber durationEditable!) { }
590/**
591 * Returns the entry's duration editable status that determines if the entry's duration can be modified by the user by dragging (resizing).
592 *
593 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the entry's duration can be modified by the user, where 1 = editable and 0 = not editable.
594*/
595public BBjNumber getEnableDurationEditable() { }
596/**
597 * Returns a stringified JsonObject representation of the <code>CalendarEntry</code> object.
598 *
599 * @return BBjString The calendar entry in stringified JSON format.
600*/
601public BBjString getAsString() { }
602/**
603 * Returns a formatted, i.e. pretty-printed or beautified, stringified JsonObject representation of the <code>CalendarEntry</code> object.
604 *
605 * @return BBjString The calendar entry in stringified JSON format.
606*/
607public BBjString getAsFormattedString() { }
608/**
609 * Returns a JsonObject representation of the <code>CalendarEntry</code> object.
610 *
611 * @return JsonObject The calendar entry as a JsonObject.
612 * @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.
613*/
614public JsonObject getAsJsonObject() { }
615}