Scout/Concepts/CalendarField
Scout |
Wiki Home |
Website |
Download • Git |
Community |
Forums • Blog • Twitter • G+ |
Bugzilla |
Bugzilla |
Specific type of value field to represent String.
Contents
Description
The CalendarField is made to represent an AbstractCalendar
with appointments.
The field gets his contents from the CalendarItemProviders defined in the fields source code.
Calendar item providers may also access a (remote) CalendarService.
Calendar Item Provider
A calendar displays calendar items provided by the CalendarItemProviders associated with a calendar field. Calendar item providers are written as inner classes of the calendar field as shown below. In the example snipped below the fields calendar defines two item providers, a local provider and a remote provider.
public class CalendarField extends AbstractCalendarField<CalendarField.Calendar> { @Order(10.0) public class Calendar extends AbstractExtensibleCalendar { @Order(10.0) public class LocalItemProvider extends AbstractExtensibleCalendarItemProvider { @Override protected void execLoadItems(Date minDate, Date maxDate, Holder<ICalendarItem[]> resultHolder) throws ProcessingException { // logic to collect items to display in the range [minDate, maxDate] into the result holder } } @Order(10.0) public class RemoteItemProvider extends AbstractExtensibleCalendarItemProvider { protected void execLoadItems(Date minDate, Date maxDate, Holder<ICalendarItem[]> resultHolder) throws ProcessingException { // access (possibly remote) calendar service to load additional calendar items resultHolder.setValue(SERVICES.getService(IRemoteCalendarService.class).getItems(minDate, maxDate)); } } // additional calendar item providers if necessary ... } }
Adding item providers to a calendar field is also supported by the Scout SDK. A corresponding wizard is provided on the folder Calendar Item Providers as shown below:
See the implementation of the calendar field of the Scout widget demo for an example of a local item provider.
Calendar Services
Calendar services are typically used to implement remote access to a third party calendar application such as Microsoft Outlook, Lotus notes or Google+. Calendar services are realized as standard Scout services that implement the ICalendarService marker interface.
Usually a calendar service implements the following two methods
- getItems
- storeItems
The following snipped provides a small example for such a calendar service that provides a static set of calendar items.
public class RemoteCalendarService extends AbstractService implements IRemoteCalendarService { ArrayList<ICalendarItem> m_items = new ArrayList<ICalendarItem>(); public RemoteCalendarService () { java.util.Calendar cal = java.util.Calendar.getInstance(); cal.add(java.util.Calendar.DAY_OF_YEAR, 1); cal.set(java.util.Calendar.HOUR_OF_DAY, 13); Date start = cal.getTime(); cal.add(java.util.Calendar.MINUTE, 30); Date end = cal.getTime(); m_items.add(new CalendarAppointment(1L, 2L, start, end, false, "Important Meeting", "Product Strategy", "FFCC00")); } @Override public ICalendarItem[] getItems(Date minDate, Date maxDate) throws ProcessingException { return m_items.toArray(new ICalendarItem[m_items.size()]); } @Override public void storeItems(ICalendarItem[] items, boolean delta) throws ProcessingException { // some business logic here. } }
As calendar services are usually implemented as a part of the Scout server application, the Scout SDK supports adding calendar services with a New Calendar Service... wizard on the node Calendar Services. In the Scout Explorer calendar services are listed under the same node.
Calendar Features
A calendar The CalendarField has 4 different views:
- Month: Displays a whole month
- Week: Displays a week
- Working week: Displays a week from Monday to Friday
- Day: Displays only a day
Screenshot
Type | RAP | SWT | Swing | Swing Rayo |
---|---|---|---|---|
Month | ![]() |
![]() |
![]() |
![]() |
Week | ![]() |
![]() |
![]() |
![]() |
Working week | ![]() |
![]() |
![]() |
![]() |
Day | ![]() |
![]() |
![]() |
![]() |
Properties
Defined with getConfiguredXxxxxx() methods.
See also the Field and Value field pages for the properties that all fields have in common.
getConfiguredGridH
To display a calendar field in a meaningful way, its height need to be explicitly set to a couple of rows. To start, use 10 for getConfiguredGridH.
Events
Defined with execXxxxxx() methods.
See also the Field and Value field pages for the events that all fields have in common.