001/**
002 * CalendarEntrySource.bbj
003 * @author ndecker
004 *
005 * <code>CalendarEntrySource</code> is a BBj Custom Class that defines entry feeds for the <code>BBjCalendarWidget</code>.
006 * Entry feeds are a way to add multiple calendar entries to the calendar at once from a source like a public Google
007 * calendar, a web service that provides entries in JSON format, etc.
008 *
009 * This file is part of the <code>BBjCalendarWidget</code> plugin.
010 *
011 * For the full copyright and license information, please see the LICENSE.txt files distributed with this source code in the appropriate lib directory.
012 *
013 * @see <a href = 'https://fullcalendar.io' target = '_blank'>FullCalendar</a> for further information on the underlying JavaScript-based calendar
014 * @see <a href = 'https://fullcalendar.io/docs/eventSources' target = '_blank'>eventSources</a> for information on the FullCalendar eventSources
015 * @see <a href = 'https://fullcalendar.io/docs/google-calendar' target = '_blank'>events from Google Calendar</a> for information integrating Google Calendars with the FullCalendar library
016 * @see <a href = 'https://developers.google.com/calendar/quickstart/js' target = '_blank'>Google Calendar API</a> for information about creating a Google developer account and creating an API key
017 * @see <a href = 'https://fullcalendar.io/docs/icalendar' target = '_blank'>events from an iCalendar feed</a> for information integrating iCalendars with the FullCalendar library
018 * @see <a href = 'https://icalendar.org/' target = '_blank'>https://icalendar.org/</a> for information on the iCalendar specification
019 *
020 * @since BBj 21.00
021*/
022package BBjCalendarWidget;
023import com.google.gson.Gson;
024import com.google.gson.JsonParser;
025import com.google.gson.JsonObject;
026import com.google.gson.JsonArray;
027/**
028 * <code>CalendarEntrySource</code> is a BBj Custom Class that defines entry feeds for the <code>BBjCalendarWidget</code> and
029 * serves as a base class for more specific entry sources such as the <code>CalendarEntrySourceGoogle</code> and
030 * <code>CalendarEntrySourceiCalendar</code> classes.
031 * <p>
032 * Entry source feeds are a way to add multiple calendar entries to the calendar at once from a source like a public Google
033 * calendar, a web service that provides entries in JSON format, an iCalendar (ICS) file or document, etc.
034 *
035 * @see <a href = 'https://fullcalendar.io' target = '_blank'>FullCalendar</a> for further information on the underlying JavaScript-based calendar
036 * @see <a href = 'https://fullcalendar.io/docs/eventSources' target = '_blank'>eventSources</a> for information on the FullCalendar eventSources
037 * @see <a href = 'https://fullcalendar.io/docs/google-calendar' target = '_blank'>events from Google Calendar</a> for information integrating Google Calendars with the FullCalendar library
038 * @see <a href = 'https://developers.google.com/calendar/quickstart/js' target = '_blank'>Google Calendar API</a> for information about creating a Google developer account and creating an API key
039 * @see <a href = 'https://fullcalendar.io/docs/icalendar' target = '_blank'>events from an iCalendar feed</a> for information integrating iCalendars with the FullCalendar library
040 * @see <a href = 'https://icalendar.org/' target = '_blank'>https://icalendar.org/</a> for information on the iCalendar specification
041 *
042 * @since BBj 21.00
043*/
044public interface CalendarEntrySource {
045/**
046 * Returns the source's unique ID that identifes the entry source for later use, such as with the <code>getEntrySourceById()</code> method.
047 * <p>
048 * Note that if you create a <code>CalendarEntrySource</code> with a constructor that doesn't take any parameters
049 * then the ID will be set automatically. If you wish to specify the ID, you should use the constructor that
050 * takes an ID as a parameter.
051 *
052 * @return BBjString The entry source's unique ID.
053*/
054public BBjString getId() { }
055/**
056 * Sets the source's URL parameter.
057 *
058 * @param BBjString url! A BBjString filled with the URL for the entry source.
059*/
060public void setUrl(BBjString url!) { }
061/**
062 * Returns the source's URL parameter.
063 *
064 * @return BBjString A BBjString filled with the URL for the entry source.
065*/
066public BBjString getUrl() { }
067/**
068 * Sets the source's entry background color.
069 * <p>
070 * 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.
071 *
072 * @param BBjString backgroundColor! A string that contains the color for the entry's background.
073*/
074public void setBackgroundColor(BBjString backgroundColor!) { }
075/**
076 * Returns the source's entry background color.
077 *
078 * @return BBjString The entry's entry's background color.
079*/
080public BBjString getBackgroundColor() { }
081/**
082 * Sets the source's entry border color.
083 * <p>
084 * 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.
085 *
086 * @param BBjString borderColor! A string that contains the color for the entry's border.
087*/
088public void setBorderColor(BBjString borderColor!) { }
089/**
090 * Returns the source's entry border color.
091 *
092 * @return BBjString The entry's border color.
093*/
094public BBjString getBorderColor() { }
095/**
096 * Sets the source's entry text color.
097 *<p>
098 * 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.
099 *
100 * @param BBjString textColor! A string that contains the color for the entry's text.
101*/
102public void setTextColor(BBjString textColor!) { }
103/**
104 * Returns the source's entry text color.
105 *
106 * @return BBjString The entry's text color.
107*/
108public BBjString getTextColor() { }
109/**
110 * Sets the source's entry combined background and border color.
111 * <p>
112 * 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.
113 *
114 * @param BBjString color! A string that contains the color for the entry's background and border.
115*/
116public void setColor(BBjString color!) { }
117/**
118 * Returns the source's entry combined background and border color.
119 *
120 * @return BBjString The entry's combined background and border color.
121*/
122public BBjString getColor() { }
123/**
124 * Sets the source's entry class name string (or CSS style).
125 *
126 * @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.
127*/
128public void setClassName(BBjString className!) { }
129/**
130 * Returns the source's entry class name string.
131 *
132 * @return BBjString The entry's a class name string.
133*/
134public BBjString getClassName() { }
135/**
136 * Sets whether the source's entries being dragged and resized are allowed to overlap one other (1) or not (0), where the default value is 1.
137 *
138 * @param BBjNumber enableOverlap A BBjNumber acting as a boolean that determines whether entries being dragged and resized are allowed to overlap one other (1) or not (0).
139*/
140public void setEnableOverlap(BBjNumber overlap!) { }
141/**
142 * Returns whether the source's entries being dragged and resized are allowed to overlap one other (1) or not (0).
143 *
144 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether entries being dragged and resized are allowed to overlap one other (1) or not (0).
145*/
146public BBjNumber getEnableOverlap() { }
147/**
148 * Sets the source's extended information that can be used to further describe the source.
149 *
150 * @param BBjString description! A string that's used to further describe the source.
151*/
152public void setDescription(BBjString description!) { }
153/**
154 * Returns a source's extended information that can be used to further describe the source.
155 *
156 * @return BBjString The source's description.
157*/
158public BBjString getDescription() { }
159/**
160 * Sets a source's alternate rendering style. This overrides the calendar's master EntryDisplay option for this specific entry.
161 * <p>
162 * The display style may be one of the following constants:
163 * <ul>
164 * <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>
165 * <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>
166 * <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>
167 * <li><code><a href = 'CalendarAPI.html#CALENDAR_ENTRY_DISPLAY_BACKGROUND' target = '_blank'>CalendarAPI.CALENDAR_ENTRY_DISPLAY_BACKGROUND()</a></code> - Highlights the background of the entry's container.</li>
168 * <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>
169 * <li><code><a href = 'CalendarAPI.html#CALENDAR_ENTRY_DISPLAY_NONE' target = '_blank'>CalendarAPI.CALENDAR_ENTRY_DISPLAY_NONE()</a></code> - Disables the rendering of the event.</li>
170 * </ul>
171 *
172 * @param BBjString display! A constant that denotes the desired entry display style.
173*/
174public void setDisplay(BBjString display!) { }
175/**
176 * Returns the source's display style.
177 *
178 * @return BBjString The source's display style.
179*/
180public BBjString getDisplay() { }
181/**
182 * Sets the source's entry editable status that determines if the entry can be modified by the user. This overrides the calendar's master EnableEditable option for this specific entry.
183 *
184 * @param BBjNumber editable! A BBjNumber acting as a boolean that indicates whether the source's entries can be modified by the user, where 1 = editable and 0 = read-only.
185*/
186public void setEnableEditable(BBjNumber editable!) { }
187/**
188 * Returns the source's entry editable status that determines if the entry can be modified by the user.
189 *
190 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the source's entry editable status, where 1 = editable and 0 = read-only.
191*/
192public BBjNumber getEnableEditable() { }
193/**
194 * Sets the source's entry start time editable status that determines if the source's entry start time can be modified by the user by dragging (resizing).
195 *
196 * @param BBjNumber startEditable! A BBjNumber acting as a boolean that indicates whether the source's entry starting time can be modified by the user, where 1 = editable and 0 = not editable.
197*/
198public void setEnableStartEditable(BBjNumber startEditable!) { }
199/**
200 * Returns the source's entry start time editable status that determines if the entry's start time can be modified by the user by dragging (resizing).
201 *
202 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the sources entry starting time can be modified by the user, where 1 = editable and 0 = not editable.
203*/
204public BBjNumber getEnableStartEditable() { }
205/**
206 * Sets the source's entry duration editable status that determines if the source's entry duration can be modified by the user by dragging (resizing).
207 *
208 * @param BBjNumber durationEditable! A BBjNumber acting as a boolean that indicates whether the source's entry duration can be modified by the user, where 1 = editable and 0 = not editable.
209*/
210public void setEnableDurationEditable(BBjNumber durationEditable!) { }
211/**
212 * Returns the source's entry duration editable status that determines if the source's entry duration can be modified by the user by dragging (resizing).
213 *
214 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the source's entry duration can be modified by the user, where 1 = editable and 0 = not editable.
215*/
216public BBjNumber getEnableDurationEditable() { }
217/**
218 * Returns the options object as a JsonObject.
219 *
220 * @return JsonObject The <code>CalendarEntrySource</code> object as a JsonObject.
221 * @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.
222*/
223public JsonObject getAsJsonObject() { }
224/**
225 * Returns a stringified JsonObject representation of the <code>CalendarEntrySource</code> object.
226 *
227 * @return BBjString The <code>CalendarEntrySource</code> object in stringified JSON format.
228*/
229public BBjString getAsString() { }
230/**
231 * Returns a formatted, i.e. pretty-printed or beautified, stringified JsonObject representation of the <code>CalendarEntrySource</code> object.
232 *
233 * @return BBjString The <code>CalendarEntrySource</code> in formatted stringified JSON format.
234*/
235public BBjString getAsFormattedString() { }
236}
237/**
238 * <code>CalendarEntrySource</code> is a BBj Interface that defines entry feeds for the <code>BBjCalendarWidget</code>
239 * in the <code><a href = 'http://calendar.google.com/' target = '_blank'>Google Calendar</a></code> format.
240 * <p>
241 * Entry source feeds are a way to add multiple calendar entries to the calendar at once from a source like a public Google
242 * calendar, a web service that provides entries in JSON format, an iCalendar (ICS) file or document, etc.
243 *
244 * @see <a href = 'https://fullcalendar.io/docs/eventSources' target = '_blank'>eventSources</a> for information on the FullCalendar eventSources
245 * @see <a href = 'https://fullcalendar.io/docs/google-calendar' target = '_blank'>events from Google Calendar</a> for information integrating Google Calendars with the FullCalendar library
246 * @see <a href = 'https://developers.google.com/calendar/quickstart/js' target = '_blank'>Google Calendar API</a> for information about creating a Google developer account and creating an API key
247*/
248public interface CalendarEntrySourceGoogle extends CalendarEntrySource {
249/**
250 * Returns the source's "Calendar ID" string from the settings page for the specific public Google calendar, e.g. "abcd1234@group.calendar.google.com".
251 *
252 * @return BBjString The entry source's Calendar ID.
253*/
254public BBjString getCalendarId() { }
255/**
256 * Sets the source's "Calendar ID" string from the settings page for the specific public Google calendar, e.g. "abcd1234@group.calendar.google.com".
257 *
258 * @param BBjString calendarId! The "Calendar ID" string from the settings page for the specific public Google calendar, e.g. "abcd1234@group.calendar.google.com".
259*/
260public BBjString setCalendarId(BBjString calendarId!) { }
261}
262/**
263 * <code>CalendarEntrySourceiCalendar</code> is a BBj Interface that defines entry feeds for the <code>BBjCalendarWidget</code>
264 * in the <code><a href = 'https://icalendar.org/' target = '_blank'>iCalendar</a></code> format.
265 * <p>
266 * Entry source feeds are a way to add multiple calendar entries to the calendar at once from a source like a public Google
267 * calendar, a web service that provides entries in JSON format, an iCalendar (ICS) file or document, etc.
268 * <p>
269 * Note that iCalendar feeds will be queried upon calendar load and will not be queried after. Unlike a JSON or Google feed,
270 * the URL will not be queried when the user navigates forward or backward in time. However, calling the calendar's
271 * <code><a href = 'BBjCalendarWidget.html#refetchEntrySource' target = '_blank'>refetchEntrySource()</a></code> or
272 * <code><a href = 'BBjCalendarWidget.html#refetchAllEntrySources' target = '_blank'>refetchAllEntrySources()</a></code> or
273 * methods will cause the source feed to be requeried.
274 *
275 * @see <a href = 'https://fullcalendar.io/docs/eventSources' target = '_blank'>eventSources</a> for information on the FullCalendar eventSources
276 * @see <a href = 'https://fullcalendar.io/docs/icalendar' target = '_blank'>events from an iCalendar feed</a> for information integrating iCalendars with the FullCalendar library
277 * @see <a href = 'https://icalendar.org/' target = '_blank'>https://icalendar.org/</a> for information on the iCalendar specification
278*/
279public interface CalendarEntrySourceiCalendar extends CalendarEntrySource {
280}