private bool blankDeckPreCheck()
        {
            bool newDeck = false;
            if (this.deck == null) {
                this.deck = new DeckModel(Guid.NewGuid(), DeckDisposition.Empty);
                newDeck = true;
            }

            if (this.traversal == null) {
                this.traversal = new SlideDeckTraversalModel(Guid.NewGuid(), this.deck);
                newDeck = true;
            }
            if (this.dtma == null) {
                this.dtma = new Viewer.Slides.DeckTraversalModelAdapter(this.eventQueue, this.slidePanel, this.traversal);
                newDeck = true;
            }
            return newDeck;
        }
 private void closeDeck(bool force)
 {
     if (this.deck != null) {
         //Check if it needs to be saved
         if (!force && this.dirtySave() == DialogResult.Cancel) {
             //Cancel!
             return;
         }
         this.deck.TableOfContents.Changed["SlideCount"].Remove(new Model.PropertyEventHandler(this.handleSlideIndexChange));
         this.traversal.Changed["AbsoluteCurrentSlideIndex"].Remove(new Model.PropertyEventHandler(this.handleSlideIndexChange));
         this.deck = null;
         this.traversal = null;
         this.dtma.Dispose();
         this.dtma = null;
         this.slidePanel.Slide = null;
         this.statusBar.Panels[0].Text = "";
         this.updateSlideMenu();
         //Clear dirty flag, since nothing is open anymore
         this.isDirty = false;
     }
 }
        private void openFileCompleteHelper(DeckModel deck)
        {
            if (deck != null) {
                this.deck = deck;

                //Finish the opening process
                this.traversal = new SlideDeckTraversalModel(Guid.NewGuid(), this.deck);
                this.dtma = new Viewer.Slides.DeckTraversalModelAdapter(this.eventQueue, this.slidePanel, this.traversal);
                //Set up event handlers and refresh slide counts
                this.blankDeckPostCheck(true);
            }
        }