/// <summary> /// Construct the sheet message /// </summary> /// <param name="sheet">The sheet to construct the message from</param> /// <param name="collection">The collection that this sheet is part of</param> public QuickPollSheetMessage(QuickPollSheetModel sheet, SheetCollection collection) : base(sheet, collection) { using (Synchronizer.Lock(sheet.SyncRoot)) { this.Id = sheet.QuickPoll.Id; } }
/// <summary> /// Construct the renderer /// </summary> /// <param name="display">The SlideDisplayModel</param> /// <param name="sheet">The QuickPollSheetModel</param> public QuickPollSheetRenderer(SlideDisplayModel display, QuickPollSheetModel sheet) : base(display, sheet) { this.m_Sheet = sheet; repaint_dispatcher_ = new EventQueue.PropertyEventDispatcher(SlideDisplay.EventQueue, this.Repaint); /// Add event listeners this.m_Sheet.QuickPoll.Changed["Updated"].Add(new PropertyEventHandler(this.repaint_dispatcher_.Dispatcher)); this.SlideDisplay.Changed["Slide"].Add(new PropertyEventHandler(this.repaint_dispatcher_.Dispatcher)); }
/// <summary> /// Handle this messsage being received and add this sheet to the appropriate place. /// </summary> /// <param name="context">The receiving context</param> /// <returns>True if handled, false otherwise</returns> protected override bool UpdateTarget(ReceiveContext context) { QuickPollSheetModel sheet = this.Target as QuickPollSheetModel; if (sheet == null) { // Create a new sheet using (context.Model.Workspace.Lock()) { if ((~context.Model.Workspace.CurrentPresentation) != null) { using (Synchronizer.Lock((~context.Model.Workspace.CurrentPresentation).SyncRoot)) { this.Target = sheet = new QuickPollSheetModel(((Guid)this.TargetId), (~context.Model.Workspace.CurrentPresentation).QuickPoll); } } else { using (Synchronizer.Lock(context.Participant.SyncRoot)) { if (context.Participant.Role is Model.Network.InstructorModel) { using (Synchronizer.Lock(context.Participant.Role.SyncRoot)) { using (Synchronizer.Lock(((Model.Network.InstructorModel)context.Participant.Role).CurrentPresentation.SyncRoot)) { this.Target = sheet = new QuickPollSheetModel(((Guid)this.TargetId), ((Model.Network.InstructorModel)context.Participant.Role).CurrentPresentation.QuickPoll); } } } } } } } // Update the parameters of the sheet using (Synchronizer.Lock(sheet.SyncRoot)) { sheet.QuickPollId = this.Id; } base.UpdateTarget(context); return(true); }
public QuickPollSheetNetworkService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, QuickPollSheetModel sheet, SheetMessage.SheetCollection selector) : base(sender, presentation, deck, slide, sheet, selector) { this.sheet = sheet; this.m_SlideModel = slide; }