Jump to: navigation, search

Scout/Concepts/CalendarField

< Scout‎ | Concepts
Revision as of 09:42, 2 September 2013 by Matthias.zimmermann.bsiag.com (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Scout
Wiki Home
Website
DownloadGit
Community
ForumsBlogTwitter
Bugzilla
Bugzilla


Specific type of value field to represent String.

  • implements: I obj.pngICalendarField
  • extends: C obj.pngAbstractCalendarField

Description

The CalendarField is made to represent an C obj.pngAbstractCalendar 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:

Sdk calendar item provider.png

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.

Sdk calendar service.png

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 Scout 3.8 CalendarField Month RAP.png Scout 3.8 CalendarField Month SWT.png Scout 3.8 CalendarField Month Swing.png Scout 3.8 CalendarField Month Swing Rayo.png
Week Scout 3.8 CalendarField Week RAP.png Scout 3.8 CalendarField Week SWT.png Scout 3.8 CalendarField Week Swing.png Scout 3.8 CalendarField Week Swing Rayo.png
Working week Scout 3.8 CalendarField WorkingWeek RAP.png Scout 3.8 CalendarField WorkingWeek SWT.png Scout 3.8 CalendarField WorkingWeek Swing.png Scout 3.8 CalendarField WorkingWeek Swing Rayo.png
Day Scout 3.8 CalendarField Day RAP.png Scout 3.8 CalendarField Day SWT.png Scout 3.8 CalendarField Day Swing.png Scout 3.8 CalendarField Day Swing Rayo.png

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.


See Also