Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Scout/Concepts/CalendarField"

(Properties)
(Replaced content with "The Scout documentation has been moved to https://eclipsescout.github.io/.")
 
Line 1: Line 1:
{{ScoutPage|cat=Component Model}}
+
The Scout documentation has been moved to https://eclipsescout.github.io/.
 
+
Specific type of {{ScoutLink|Concepts|ValueField|value field}} to represent String.
+
 
+
* implements: {{ScoutJavadoc|ICalendarField|I}}
+
* extends: {{ScoutJavadoc|AbstractCalendarField|C}}
+
 
+
== Description ==
+
The CalendarField is made to represent an {{ScoutJavadoc|AbstractCalendar|C}} 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.
+
 
+
<source lang="java">
+
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
+
        ...
+
    }
+
}
+
</source>
+
 
+
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:
+
 
+
[[image:Sdk_calendar_item_provider.png]]
+
 
+
See the [https://github.com/BSI-Business-Systems-Integration-AG/org.eclipsescout.demo/blob/master/widgets/org.eclipsescout.demo.widgets.client/src/org/eclipsescout/demo/widgets/client/ui/forms/CalendarFieldForm.java implementation] of the calendar field of the [[Scout/Demo#Widgets|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 [http://code.google.com/p/google-api-java-client/wiki/APIs#Calendar_API 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.
+
 
+
<source lang="java">
+
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.
+
  }
+
}
+
</source>
+
 
+
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.
+
 
+
[[image: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 ==
+
{|{{BMTableStyle}}
+
|-{{BMTHStyle}}
+
! Type
+
! RAP
+
! SWT
+
! Swing
+
! Swing Rayo
+
|-
+
| Month || [[Image:Scout_3.8_CalendarField_Month_RAP.png]] || [[Image:Scout_3.8_CalendarField_Month_SWT.png]] || [[Image:Scout_3.8_CalendarField_Month_Swing.png]] || [[Image:Scout_3.8_CalendarField_Month_Swing_Rayo.png]]
+
|-
+
| Week || [[Image:Scout_3.8_CalendarField_Week_RAP.png]] || [[Image:Scout_3.8_CalendarField_Week_SWT.png]] || [[Image:Scout_3.8_CalendarField_Week_Swing.png]] || [[Image:Scout_3.8_CalendarField_Week_Swing_Rayo.png]]
+
|-
+
| Working week || [[Image:Scout_3.8_CalendarField_WorkingWeek_RAP.png]] || [[Image:Scout_3.8_CalendarField_WorkingWeek_SWT.png]] || [[Image:Scout_3.8_CalendarField_WorkingWeek_Swing.png]] || [[Image:Scout_3.8_CalendarField_WorkingWeek_Swing_Rayo.png]]
+
|-
+
| Day || [[Image:Scout_3.8_CalendarField_Day_RAP.png]] || [[Image:Scout_3.8_CalendarField_Day_SWT.png]] || [[Image:Scout_3.8_CalendarField_Day_Swing.png]] || [[Image:Scout_3.8_CalendarField_Day_Swing_Rayo.png]]
+
|-
+
|}
+
 
+
== Properties ==
+
''Defined with {{ScoutLink|Concepts|GetConfigured Methods|getConfiguredXxxxxx()}} methods''.
+
 
+
 
+
See also the {{ScoutLink|Concepts|Field|Field}} and {{ScoutLink|Concepts|ValueField|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 {{ScoutLink|Concepts|Exec_Methods|execXxxxxx()}} methods''.
+
 
+
See also the {{ScoutLink|Concepts|Field|Field}} and {{ScoutLink|Concepts|ValueField|Value field}} pages for the events that all fields have in common.
+
 
+
 
+
== See Also ==
+
* {{ScoutLink|Concepts|ValueField|Value field}}
+
* {{ScoutLink|Concepts|Field|Field}}
+
* {{ScoutLink|Concepts|Form|Form}}
+

Latest revision as of 07:17, 18 March 2024

The Scout documentation has been moved to https://eclipsescout.github.io/.

Back to the top