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}