/// <summary>
        /// Called when the Otter.Editor main sceneView loads.  Sets up
        /// the docking views, loads previous data, etc.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OtterEditorMainForm_Load(object sender, EventArgs e)
        {
            mOnlineHelpToolStripMenuItem.ToolTipText = Otter.Editor.Properties.Settings.Default.HelpURL;

            SetupPlugins();

            Otter.Interface.Graphics.Instance = new Otter.Interface.Graphics(this.Handle.ToInt32());
            Otter.Interface.Graphics.Instance.OnTextureLoaded += new Otter.Interface.Graphics.TextureEventHandler(Graphics_OnTextureLoaded);
            Otter.Interface.Graphics.Instance.OnTextureUnloaded += new Otter.Interface.Graphics.TextureEventHandler(Graphics_OnTextureUnloaded);

            bool bLoaded = false;
            try
            {
                if (!File.Exists(mLayoutPath))
                {
                    string name = "Otter.Editor.res.default_layout.xml";
                    Stream stream = null;
                    try
                    {
                        Assembly assembly = Assembly.GetExecutingAssembly();
                        stream = assembly.GetManifestResourceStream(name);

                        mDockPanel.LoadFromXml(stream, mDeserializeDockContent);
                        bLoaded = true;
                    }
                    catch(Exception ex)
                    {
                        System.Console.WriteLine("Failed to load resource " + name + ".  Reason: " + ex.Message);
                    }
                    finally
                    {
                        if (stream != null)
                            stream.Close();
                    }
                }
                else if (File.Exists(mLayoutPath))
                {
                    mDockPanel.LoadFromXml(mLayoutPath, mDeserializeDockContent);
                    bLoaded = true;
                }
            }
            catch(Exception)
            {
                Globals.ControlsView.Hide();
                Globals.HistoryView.Hide();
                Globals.ProjectView.Hide();
                Globals.SceneHierarchyView.Hide();
                Globals.PropertiesView.Hide();
                Globals.TimelineView.Hide();
            }

            if(!bLoaded)
            {
                // Add the different forms to the panel.
                Globals.ControlsView.Show(mDockPanel, DockState.DockRightAutoHide);
                Globals.HistoryView.Show(mDockPanel, DockState.DockRightAutoHide);

                Globals.ProjectView.Show(mDockPanel, DockState.DockLeft);
                Globals.SceneHierarchyView.Show(Globals.ProjectView.Pane, DockAlignment.Bottom, 0.5f);
                Globals.PropertiesView.Show(mDockPanel, DockState.DockRight);
                Globals.TimelineView.Show(mDockPanel, DockState.DockBottom);

                Globals.SceneHierarchyView.Show();
            }

            Globals.PropertiesView.DockStateChanged += new EventHandler(DockContent_DockStateChanged);
            Globals.ProjectView.DockStateChanged += new EventHandler(DockContent_DockStateChanged);
            Globals.TimelineView.DockStateChanged += new EventHandler(DockContent_DockStateChanged);
            Globals.ControlsView.DockStateChanged += new EventHandler(DockContent_DockStateChanged);
            Globals.SceneHierarchyView.DockStateChanged += new EventHandler(DockContent_DockStateChanged);
            Globals.HistoryView.DockStateChanged += new EventHandler(DockContent_DockStateChanged);

            // Set up the dock states.
            UpdateViewMenu();
            
            // Now add the checked-event handler
            projectViewToolStripMenuItem.CheckedChanged += new System.EventHandler(this.viewToolStripMenuItem_CheckedChanged);
            propertiesViewToolStripMenuItem.CheckedChanged += new System.EventHandler(this.viewToolStripMenuItem_CheckedChanged);
            timelineViewToolStripMenuItem.CheckedChanged += new System.EventHandler(this.viewToolStripMenuItem_CheckedChanged);
            controlsViewToolStripMenuItem.CheckedChanged += new System.EventHandler(this.viewToolStripMenuItem_CheckedChanged);
            sceneHierarchyViewToolStripMenuItem.CheckedChanged += new EventHandler(this.viewToolStripMenuItem_CheckedChanged);
            historyViewToolStripMenuItem.CheckedChanged += new EventHandler(this.viewToolStripMenuItem_CheckedChanged);

            // ControlsView events
            Globals.ControlsView.OnControlSelectionChanged += new ControlsView.ControlsViewDelegate(ControlsView_OnControlSelectionChanged);

            // PropertiesView Events
            Globals.PropertiesView.PropertyValueChanged += new PropertyValueChangedEventHandler(PropertiesView_PropertyValueChanged);

            // Project View Events
            Globals.ProjectView.OnCreateEntry += new ProjectView.EntryEventHandler(ProjectView_OnCreateEntry);
            Globals.ProjectView.OnDeleteEntry += new ProjectView.EntryEventHandler(ProjectView_OnDeleteEntry);
            Globals.ProjectView.OnRenameEntry += new ProjectView.EntryEventHandler(ProjectView_OnRenameEntry);
            Globals.ProjectView.OnOpenEntry += new ProjectView.EntryEventHandler(ProjectView_OnOpenEntry);
            Globals.ProjectView.OnClosingEntry += new ProjectView.EntryActionEventHandler(ProjectView_OnClosingEntry);
            Globals.ProjectView.OnCloseEntry += new ProjectView.EntryEventHandler(ProjectView_OnCloseEntry);
            Globals.ProjectView.OnExportEntry += new ProjectView.EntryEventHandler(ProjectView_OnExportEntry);

            // Scene Hierarchy View Events
            Globals.SceneHierarchyView.SelectionChanged += new SceneHierarchyView.HierarchyEventHandler(SceneHierarchyView_SelectionChanged);
            Globals.SceneHierarchyView.ViewChanged += new SceneHierarchyView.ViewEventHandler(SceneHierarchyView_ViewChanged);
            Globals.SceneHierarchyView.SelectedViewRenamed += new SceneHierarchyView.ViewEventHandler(SceneHierarchyView_SelectedViewRenamed);
            Globals.SceneHierarchyView.SelectedControlRenamed += new SceneHierarchyView.ControlEventHandler(SceneHierarchyView_SelectedControlRenamed);

            // Timeline View Events
            Globals.TimelineView.AnimationUpdated += new TimelineView.TimelineViewEventHandler(TimelineView_AnimationUpdated);
            Globals.TimelineView.SelectedControlChanged += new TimelineView.TimelineViewEventHandler(TimelineView_SelectedControlChanged);
            Globals.TimelineView.FrameSelectionChanged += new TimelineView.TimelineViewEventHandler(TimelineView_FrameSelectionChanged);

            mDockPanel.ActiveDocumentChanged += new EventHandler(mDockPanel_ActiveDocumentChanged);
            mDockPanel.ContentRemoved += new EventHandler<DockContentEventArgs>(mDockPanel_ContentRemoved);

            PopulateRecentItemsMenu();

            if (mDefaultProject != "")
            {
                if (OpenProject(mDefaultProject))
                    return;
            }

            if (Otter.Editor.Properties.Settings.Default.ShowWelcome)
            {
                mWelcomeForm = new WelcomeForm();

                mWelcomeForm.OnLoadProject += new WelcomeForm.WelcomeActionDelegate(welcomeForm_OnLoadProject);
                mWelcomeForm.OnLoadRecentProject += new WelcomeForm.LoadRecentProjectDelegate(welcomeForm_OnLoadRecentProject);
                mWelcomeForm.OnNewProject += new WelcomeForm.WelcomeActionDelegate(welcomeForm_OnNewProject);

                mWelcomeForm.Show(this);
            }
        }
 /// <summary>
 /// Closes the welcome form if opened.
 /// </summary>
 private void CloseWelcomeForm()
 {
     if (mWelcomeForm != null)
     {
         mWelcomeForm.Close();
         mWelcomeForm = null;
     }
 }