<?xml version="1.0" encoding="utf-8"?>
<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:containers="containers.*"
xmlns:data="containers.data.*"
xmlns:dataTypes="ardisia.scheduling.dataTypes.*"
xmlns:datePicker="ardisia.scheduling.datePicker.*"
xmlns:calendar="ardisia.scheduling.calendar.*"
xmlns:calendarClasses="components.shared.calendarClasses.*"
xmlns:separators="ardisia.components.separators.*"
frameRate="60"
width="100%" height="100%"
removedFromStage="removedFromStageHandler(event)">
<fx:Script>
<![CDATA[
import mx.collections.IList;
import ardisia.scheduling.dataTypes.CalendarDefinitionData;
import ardisia.scheduling.dataTypes.iCalendarData;
import ardisia.scheduling.iCalendarParser.iCalendarParser;
import components.shared.calendarClasses.skins.LeftArrowButtonSkin;
import components.shared.calendarClasses.skins.RightArrowButtonSkin;
private var iCalendarReference:FileReference;
public function creationComplete():void
{
interactionManager.calendar = calendar;
interactionManager.calendars = [testCalendar];
interactionManager.dateDisplay = dateDisplayLabel;
interactionManager.datePicker = datePicker;
interactionManager.addNewButton = addNewButton;
interactionManager.incrementDisplayedDatesButton = incrementDisplayedDatesButton;
interactionManager.decrementDisplayedDatesButton = decrementDisplayedDatesButton;
}
protected function export(event:Event):void
{
var icalData:iCalendarData = new iCalendarData(testCalendar, calendar.dataProvider);
var icalFeed:String = iCalendarParser.exportICalendar(icalData);
var fileReference:FileReference = new FileReference();
fileReference.save(icalFeed, "iCal_Ardisia_test.ics");
}
protected function importFile(event:Event):void
{
var fileFilter:FileFilter = new FileFilter("ics Files (*.ics)", "*.ics");
iCalendarReference = new FileReference();
iCalendarReference.addEventListener(Event.SELECT, onFileSelected);
iCalendarReference.browse([fileFilter]);
}
protected function onFileSelected(evt:Event):void
{
iCalendarReference.removeEventListener(Event.SELECT, onFileSelected);
iCalendarReference.addEventListener(Event.COMPLETE, onComplete);
iCalendarReference.load();
}
protected function onComplete(evt:Event):void
{
iCalendarReference.removeEventListener(Event.COMPLETE, onComplete);
var feed:String = String(iCalendarReference.data);
var newData:iCalendarData = iCalendarParser.importICalendar(feed);
var newCalendar:CalendarDefinitionData = newData.calendarDefinition;
var dp:IList = newData.schedulingData;
newCalendar.color = 0x662C91;
interactionManager.calendars = [newCalendar];
calendar.dataProvider = newData.schedulingData;
}
protected function removedFromStageHandler(event:Event):void
{
}
]]>
</fx:Script>
<fx:Declarations>
<dataTypes:CalendarDefinitionData id="testCalendar"
title="Test Calendar"
color="#662C91"/>
<calendarClasses:CalendarInteractionManager id="interactionManager"
disableGridLabelDayZoom="true"/>
</fx:Declarations>
<s:states>
<s:State name="stockholm" />
<s:State name="london" />
<s:State name="spark" />
</s:states>
<containers:DemoApplicationWrapper id="demoAppWrapper"
width="100%" height="100%"
westRegionTitle="iCalendarParser Description"
description="The Ardisia iCalendarParser both (A) exports scheduling data to an iCalendar (*.ics) file for import by other calendar clients and (B) imports iCalendar files and converts them to Ardisia scheduling data. Useful way to share scheduling data with other calendar programs, like Google Calendar. Each file supports a single calendar definition. Supports repeating events."
currentState.stockholm="stockholm" currentState.london="london" currentState.spark="spark">
<containers:expandingContainerContent>
<!--- expanding container #1 -->
<data:ExpandingContainerData>
<data:label>DatePicker</data:label>
<data:content>
<datePicker:DatePicker id="datePicker"
height="200"
firstDayOfWeek="1"/>
</data:content>
</data:ExpandingContainerData>
</containers:expandingContainerContent>
<containers:centerContent>
<!--- example #1 -->
<data:PrimaryContentData>
<data:tabLabel>Example</data:tabLabel>
<data:exampleDescription>Use the buttons below to import an iCalendar (*.ics) file and the data should display in the month calendar below. Also, after adding/removing/editing events in the calendar below, export the calendar to an iCalendar file using the buttons below. Only 1 calendar definition is supported per file. To import/export multiple calendars, create an *.ics file for each calendar.</data:exampleDescription>
<data:toolbarContent>
<s:VGroup width="100%"
horizontalAlign="justify">
<s:HGroup>
<s:Button label="Import *.ics File"
click="importFile(event)"/>
<s:Button label="Export Calendar as *.ics File"
click="export(event)"/>
</s:HGroup>
<separators:HSeparator width="100%"/>
<s:Group height="30" width="100%">
<s:Label id="dateDisplayLabel"
verticalCenter="2"
left="0"
fontSize="14"
fontWeight="bold"/>
<s:HGroup verticalCenter="0" horizontalCenter="0"
verticalAlign="middle"
gap="-1">
<s:Button id="decrementDisplayedDatesButton"
icon="@Embed(source='icons/arrow-left.png')"
skinClass.london="components.shared.calendarClasses.skins.LeftArrowButtonSkin"/>
<s:Button id="incrementDisplayedDatesButton"
icon="@Embed(source='icons/arrow-right.png')"
skinClass.london="components.shared.calendarClasses.skins.RightArrowButtonSkin"/>
</s:HGroup>
<s:Button id="addNewButton"
right="10"
verticalCenter="0"
label="Add New"
icon="@Embed(source='icons/plus.png')"/>
</s:Group>
</s:VGroup>
</data:toolbarContent>
<data:primaryContent>
<calendar:Calendar id="calendar"
width="100%" height="100%"/>
</data:primaryContent>
</data:PrimaryContentData>
</containers:centerContent>
</containers:DemoApplicationWrapper>
</s:Module>