예제 #1
0
 /// <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;
     }
 }
예제 #2
0
        /// <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));
        }
예제 #3
0
        /// <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;
 }