package tripvisModel.controllers { import flash.events.EventDispatcher; import mx.collections.ArrayCollection; import tripvisModel.TripItem; [Event(name="tripItemAdded", type="tripvisModel.controllers.TimelineControllerEvent")] [Event(name="tripItemsCleared", type="tripvisModel.controllers.TimelineControllerEvent")] [Event(name="tripItemRemoved", type="tripvisModel.controllers.TimelineControllerEvent")] [Event(name="tripItemUpdated", type="tripvisModel.controllers.TimelineControllerEvent")] public class TimelineController extends EventDispatcher { private var _timelineTripItems: ArrayCollection = new ArrayCollection(); private var _timelineStartDate: Date; private var _timelineEndDate: Date; private var _basketController: BasketController; // om items removed te onderscheppen public function TimelineController(basketController: BasketController) { this._basketController = basketController; this._timelineStartDate = new Date(); //opletten, want nu vallen de streepjes van de tijdslijn UI niet meer mooi op het uur this._timelineStartDate.minutes = 0; //maken dat hij op het uur begint this._timelineEndDate = new Date(_timelineStartDate.getTime() + 1000 * 60 * 60 * 24 * 14); this._basketController.addEventListener(BasketControllerEvent.TRIP_ITEM_REMOVED, basketController_tripItemRemoved); } public function get timelineStartDate(): Date { return this._timelineStartDate; } public function get timelineEndDate(): Date { return this._timelineEndDate; } private function basketController_tripItemRemoved(event: BasketControllerEvent): void { if (timelineContains(event.tripItem)) removeTripItem(event.tripItem); } public function addTripItem(tripItem: TripItem): void { tripItem.timePeriod.isSet = true; this._timelineTripItems.addItem( tripItem ); dispatchEvent( new TimelineControllerEvent('tripItemAdded', tripItem) ); dispatchEvent( new TimelineControllerEvent('tripItemUpdated', tripItem) ); // want timePeriod.isSet is veranderd } public function removeTripItem(tripItem: TripItem): void { tripItem.timePeriod.isSet = false; _timelineTripItems.removeItemAt( _timelineTripItems.getItemIndex(tripItem) ); dispatchEvent( new TimelineControllerEvent('tripItemRemoved', tripItem) ); //dispatchEvent( new TimelineControllerEvent('tripItemUpdated', tripItem) ); // want timePeriod.isSet is veranderd } public function clearTripItems(): void { _timelineTripItems.removeAll(); dispatchEvent( new TimelineControllerEvent('tripItemsCleared') ); } public function updateTripItemStartDate(tripItem: TripItem, startDate: Date): void { tripItem.timePeriod.startDate = startDate; dispatchEvent( new TimelineControllerEvent('tripItemUpdated', tripItem) ); } public function updateTripItemEndDate(tripItem: TripItem, endDate: Date): void { tripItem.timePeriod.endDate = endDate; dispatchEvent( new TimelineControllerEvent('tripItemUpdated', tripItem) ); } public function timelineContains(tripItem: TripItem): Boolean { return this._timelineTripItems.contains(tripItem); } public function get timelineTripItems(): ArrayCollection { return this._timelineTripItems; } } }