Пример #1
0
 public RealTimeInkSheetMessage(RealTimeInkSheetModel sheet, SheetMessage.SheetCollection collection) : base(sheet, collection)
 {
     using (Synchronizer.Lock(sheet.SyncRoot)) {
         this.CurrentDrawingAttributes = sheet.CurrentDrawingAttributes == null ? null
             : new DrawingAttributesSerializer(sheet.CurrentDrawingAttributes);
     }
 }
Пример #2
0
            public SheetsCollectionHelper(SlideNetworkService service, string property, SheetMessage.SheetCollection selector) : base(service.m_Sender, service.m_Slide, property)
            {
                this.m_Service  = service;
                this.m_Selector = selector;

                base.Initialize();
            }
Пример #3
0
        public void SendSheetInformation(SheetModel sheet, SheetMessage.SheetCollection selector, Group receivers)
        {
            // TODO: Also pass the index so the sheet can be inserted into the correct index on the remote side.
            Message message, deck, slide;

            message                  = new PresentationInformationMessage(this.m_Presentation);
            message.Group            = receivers;
            message.InsertChild(deck = new DeckInformationMessage(this.m_Deck));
            deck.InsertChild(slide   = new SlideInformationMessage(this.m_Slide));
            Message sm = SheetMessage.RemoteForSheet(sheet, selector);

            //if sm is null that means that the sheet is an instructor note and shouldn't be sent.
            if (sm != null)
            {
                slide.InsertChild(sm);
            }
            using (Synchronizer.Lock(this.m_Slide.SyncRoot)) {
                message.Tags         = new MessageTags();
                message.Tags.SlideID = this.m_Slide.Id;
            }
            if (sheet is ImageSheetModel && ((ImageSheetModel)sheet).Image != null)
            {
                using (Synchronizer.Lock(sheet.SyncRoot)) {
                    this.m_Sender.Send(message);
                }
            }
            else
            {
                this.m_Sender.Send(message);
            }
        }
Пример #4
0
 public SSSheetNetworkService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, SheetModel sheet, SheetMessage.SheetCollection selector)
 {
     this.m_Sender       = sender;
     this.m_Presentation = presentation;
     this.m_Deck         = deck;
     this.m_Slide        = slide;
     this.m_Sheet        = sheet;
     this.m_Selector     = selector;
 }
 public SSSheetNetworkService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, SheetModel sheet, SheetMessage.SheetCollection selector)
 {
     this.m_Sender = sender;
     this.m_Presentation = presentation;
     this.m_Deck = deck;
     this.m_Slide = slide;
     this.m_Sheet = sheet;
     this.m_Selector = selector;
 }
Пример #6
0
        public SheetNetworkService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, SheetModel sheet, SheetMessage.SheetCollection selector)
        {
            this.m_Sender       = sender;
            this.m_Presentation = presentation;
            this.m_Deck         = deck;
            this.m_Slide        = slide;
            this.m_Sheet        = sheet;
            this.m_Selector     = selector;

            this.m_BoundsChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.Sender, new PropertyEventHandler(this.HandleBoundsChanged));
            this.m_Sheet.Changed["Bounds"].Add(this.m_BoundsChangedDispatcher.Dispatcher);
        }
Пример #7
0
        /// <summary>
        /// Construct a listener for a generic sheet
        /// </summary>
        /// <param name="sender">The event queue</param>
        /// <param name="presentation">The presentation</param>
        /// <param name="deck">The deck</param>
        /// <param name="slide">The slide</param>
        /// <param name="sheet">The sheet</param>
        /// <param name="selector">The collection that this is part of</param>
        public SheetWebService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, SheetModel sheet, SheetMessage.SheetCollection selector)
        {
            this.m_Sender = sender;
            this.m_Presentation = presentation;
            this.m_Deck = deck;
            this.m_Slide = slide;
            this.m_Sheet = sheet;
            this.m_Selector = selector;

            //            this.m_BoundsChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.Sender, new PropertyEventHandler(this.HandleBoundsChanged));
            //            this.m_Sheet.Changed["Bounds"].Add(this.m_BoundsChangedDispatcher.Dispatcher);
        }
Пример #8
0
 public RealTimeInkSheetInformationMessage(RealTimeInkSheetModel sheet, SheetMessage.SheetCollection collection) : base(sheet, collection)
 {
 }
Пример #9
0
            public SheetsCollectionHelper(SlideNetworkService service, string property, SheetMessage.SheetCollection selector)
                : base(service.m_Sender, service.m_Slide, property)
            {
                this.m_Service = service;
                this.m_Selector = selector;

                base.Initialize();
            }
        public RealTimeInkSheetNetworkService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, RealTimeInkSheetModel sheet, SheetMessage.SheetCollection selector) : base(sender, presentation, deck, slide, sheet, selector)
        {
            this.m_Sheet = sheet;

            using (Synchronizer.Lock(slide.SyncRoot)) {
                m_SlideID = slide.Id;
            }

            this.PacketBuffers    = new Dictionary <int, List <int> >();
            this.PacketFlushTimes = new Dictionary <int, long>();

            this.m_CurrentDrawingAttributesChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.Sender, new PropertyEventHandler(this.HandleCurrentDrawingAttributesChanged));
            this.m_Sheet.Changed["CurrentDrawingAttributes"].Add(this.m_CurrentDrawingAttributesChangedDispatcher.Dispatcher);
            this.m_Sheet.StylusUp   += new RealTimeInkSheetModel.StylusUpEventHandler(this.HandleStylusUp);
            this.m_Sheet.Packets    += new RealTimeInkSheetModel.PacketsEventHandler(this.HandlePackets);
            this.m_Sheet.StylusDown += new RealTimeInkSheetModel.StylusDownEventHandler(this.HandleStylusDown);
        }
Пример #11
0
        /// <summary>
        /// Construct the InkSheetWebService, this class listens for strokes to finish
        /// and sends them across the network
        /// </summary>
        /// <param name="sender">The queue to use</param>
        /// <param name="presentation">The presentation model</param>
        /// <param name="deck">The deck model</param>
        /// <param name="slide">The slide model</param>
        /// <param name="sheet">The sheet model</param>
        /// <param name="selector">The sheet collection we are part of</param>
        public InkSheetWebService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, SheetModel sheet, SheetMessage.SheetCollection selector)
            : base(sender, presentation, deck, slide, sheet, selector)
        {
            // Keep track of our sheet
            this.m_Sheet = (InkSheetModel)sheet;

            // Get the slide ID
            using (Synchronizer.Lock(slide.SyncRoot)) {
                m_SlideID = slide.Id;
            }

            // Set Events
            this.m_Sheet.InkAdded += new StrokesEventHandler(this.HandleInkAdded);
//            this.m_Sheet.InkDeleting += new StrokesEventHandler(this.HandleInkDeleting);
        }
 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;
 }
Пример #13
0
 public static SheetNetworkService ForSheet(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, SheetModel sheet, SheetMessage.SheetCollection selector)
 {
     if (sheet is RealTimeInkSheetModel)
     {
         return(new RealTimeInkSheetNetworkService(sender, presentation, deck, slide, ((RealTimeInkSheetModel)sheet), selector));
     }
     else if (sheet is InkSheetModel)
     {
         return(new InkSheetNetworkService(sender, presentation, deck, slide, ((InkSheetModel)sheet), selector));
     }
     else if (sheet is ImageSheetModel)
     {
         return(new ImageSheetNetworkService(sender, presentation, deck, slide, ((ImageSheetModel)sheet), selector));
     }
     else if (sheet is TextSheetModel)
     {
         return(new TextSheetNetworkService(sender, presentation, deck, slide, ((TextSheetModel)sheet), selector));
     }
     else if (sheet is QuickPollSheetModel)
     {
         return(new QuickPollSheetNetworkService(sender, presentation, deck, slide, ((QuickPollSheetModel)sheet), selector));
     }
     else
     {
         return(null);
     }
 }
Пример #14
0
        public InkSheetNetworkService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, InkSheetModel sheet, SheetMessage.SheetCollection selector) : base(sender, presentation, deck, slide, sheet, selector)
        {
            this.m_Sheet = sheet;
            using (Synchronizer.Lock(slide.SyncRoot)) {
                m_SlideID = slide.Id;
            }

            this.m_Sheet.InkAdded    += new StrokesEventHandler(this.HandleInkAdded);
            this.m_Sheet.InkDeleting += new StrokesEventHandler(this.HandleInkDeleting);

            Group receivers = Group.AllParticipant;

            if ((deck.Disposition & (DeckDisposition.StudentSubmission | DeckDisposition.QuickPoll)) != 0)
            {
                receivers = Group.Submissions;
            }

            this.SendExistingInk(receivers);
        }
Пример #15
0
/*
 *      protected virtual void HandleBoundsChanged(object sender, PropertyEventArgs args) {
 *          // Send a generic update with information about the sheet (including the new bounds).
 *          Message message, deck, slide, sheet;
 *          message = new PresentationInformationMessage(this.Presentation);
 *          message.InsertChild(deck = new DeckInformationMessage(this.Deck));
 *          deck.InsertChild(slide = new SlideInformationMessage(this.Slide));
 *          slide.InsertChild( sheet = SheetMessage.RemoteForSheet( this.Sheet, this.SheetCollectionSelector ) );
 *          using (Synchronizer.Lock(this.m_Slide.SyncRoot)) {
 *              message.Tags = new MessageTags();
 *              message.Tags.SlideID = this.m_Slide.Id;
 *          }
 *          this.Sender.Send(message);
 *      }
 */
        #endregion

        #region SheetWebService Factory

        /// <summary>
        /// Construct the appropriate sheet web service
        /// </summary>
        /// <param name="sender">The queue</param>
        /// <param name="presentation">The presentation</param>
        /// <param name="deck">The deck</param>
        /// <param name="slide">The slide</param>
        /// <param name="sheet">The sheet</param>
        /// <param name="selector">The sheet collection type</param>
        /// <returns>A sheet web service appropriate for the sheet model</returns>
        public static SheetWebService ForSheet(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, SheetModel sheet, SheetMessage.SheetCollection selector)
        {
            if (sheet is InkSheetModel)
            {
                return(new InkSheetWebService(sender, presentation, deck, slide, sheet, selector));
            }
            else
            {
                return(new SheetWebService(sender, presentation, deck, slide, sheet, selector));
            }
        }
Пример #16
0
        public TextSheetNetworkService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, TextSheetModel sheet, SheetMessage.SheetCollection selector) : base(sender, presentation, deck, slide, sheet, selector)
        {
            this.sheet_ = sheet;

            this.sheet_.Changed["Font"].Add(new PropertyEventHandler(this.SendText));
            this.sheet_.Changed["Text"].Add(new PropertyEventHandler(this.SendText));
            this.sheet_.Changed["Color"].Add(new PropertyEventHandler(this.SendText));
            this.sheet_.Changed["IsPublic"].Add(new PropertyEventHandler(this.SendPublic));
        }
Пример #17
0
        public SSInkSheetNetworkService(SendingQueue sender, PresentationModel presentation, DeckModel deck, SlideModel slide, InkSheetModel sheet, SheetMessage.SheetCollection selector) : base(sender, presentation, deck, slide, sheet, selector)
        {
            this.m_Sheet = sheet;

            this.m_Sheet.InkAdded    += new StrokesEventHandler(this.HandleInkAdded);
            this.m_Sheet.InkDeleting += new StrokesEventHandler(this.HandleInkDeleting);

            this.SendExistingInk();
        }