package com.smartgwt.sample.showcase.client.calendar;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.fields.DataSourceDateField;
import com.smartgwt.client.data.fields.DataSourceSequenceField;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.calendar.Calendar;
import com.smartgwt.client.widgets.form.fields.HeaderItem;
import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.sample.showcase.client.PanelFactory;
import com.smartgwt.sample.showcase.client.ShowcasePanel;
import com.smartgwt.sample.showcase.client.data.CalendarData;
public class CustomEventCalendarSample extends ShowcasePanel {
private static final String DESCRIPTION = "<p>This example illustrates how the Calendar event dialog and editor can be completely customized." +
"The <b>Sharing</b> radio options on the event dialog is custom, as well as the <b>Repeats</b> and <b>Reminder</b> Select Items on the event" +
"details edit dialog.</p>";
public static class Factory implements PanelFactory {
private String id;
public Canvas create() {
CustomEventCalendarSample panel = new CustomEventCalendarSample();
id = panel.getID();
return panel;
}
public String getID() {
return id;
}
public String getDescription() {
return DESCRIPTION;
}
}
public Canvas getViewPanel() {
DataSource eventDS = new DataSource();
DataSourceSequenceField eventIdField = new DataSourceSequenceField("eventId");
eventIdField.setPrimaryKey(true);
DataSourceTextField nameField = new DataSourceTextField("name");
DataSourceTextField descField = new DataSourceTextField("description");
DataSourceDateField startDateField = new DataSourceDateField("startDate");
DataSourceDateField endDateField = new DataSourceDateField("endDate");
eventDS.setFields(eventIdField, nameField, descField, startDateField, endDateField);
eventDS.setClientOnly(true);
eventDS.setTestData(CalendarData.getRecords());
Calendar calendar = new Calendar();
calendar.setDataSource(eventDS);
calendar.setAutoFetchData(true);
//specify the last field from the default fields so that subsequent fields come after the
//default fields
TextItem descItem = new TextItem();
descItem.setName("description");
//custom fields below
HeaderItem eventOptions = new HeaderItem();
eventOptions.setDefaultValue("Event Options");
SelectItem repeatsItem = new SelectItem();
repeatsItem.setName("repeats");
repeatsItem.setTitle("Repeats");
repeatsItem.setColSpan(4);
repeatsItem.setDefaultToFirstOption(true);
repeatsItem.setValueMap("Does not repeat", "Daily", "Weekly", "Monthly", "Yearly");
SelectItem reminderItem = new SelectItem();
reminderItem.setName("reminderType");
reminderItem.setTitle("Reminder");
reminderItem.setWidth(70);
reminderItem.setDefaultToFirstOption(true);
reminderItem.setValueMap("Pop-up", "Email");
TextItem reminderValue = new TextItem();
reminderValue.setName("reminderValue");
reminderValue.setShowTitle(false);
reminderValue.setWidth(60);
reminderValue.setDefaultValue(10);
SelectItem reminderUnits = new SelectItem();
reminderUnits.setName("reminderUnits");
reminderUnits.setShowTitle(false);
reminderUnits.setWidth(70);
reminderUnits.setDefaultToFirstOption(false);
reminderUnits.setValueMap("minutes", "hours", "days");
calendar.setEventEditorFields(descItem, eventOptions, repeatsItem, reminderItem, reminderValue, reminderUnits);
TextItem nameItem = new TextItem();
nameItem.setType("text");
nameItem.setName("name");
RadioGroupItem radioGroupItem = new RadioGroupItem("sharing");
radioGroupItem.setTitle("Sharing");
radioGroupItem.setVertical(false);
radioGroupItem.setValueMap("Public", "Private");
radioGroupItem.setWidth(50);
calendar.setEventDialogFields(nameItem, radioGroupItem);
return calendar;
}
public String getIntro() {
return DESCRIPTION;
}
}