//=====================================================================

        /// <summary>
        /// This is overridden to create the project node
        /// </summary>
        /// <returns>A project node</returns>
        protected override ProjectNode CreateProject()
        {
            ProjectPackage package = (ProjectPackage)this.Package;

            SandcastleBuilderProjectNode project = new SandcastleBuilderProjectNode(package);

            project.SetSite((IOleServiceProvider)((IServiceProvider)package).GetService(typeof(IOleServiceProvider)));

            return project;
        }
        /// <summary>
        /// View the last built help output
        /// </summary>
        /// <param name="projectNode">The project node for which to open the help file</param>
        internal void ViewBuiltHelpFile(SandcastleBuilderProjectNode projectNode)
        {
            if(projectNode != null)
            {
                SandcastleProject project = projectNode.SandcastleProject;

                if(project == null)
                    return;

                if((project.HelpFileFormat & HelpFileFormats.HtmlHelp1) != 0)
                    ViewBuiltHelpFile(project, PkgCmdIDList.ViewHtmlHelp);
                else
                    if((project.HelpFileFormat & HelpFileFormats.OpenXml) != 0)
                        ViewBuiltHelpFile(project, PkgCmdIDList.ViewDocxHelp);
                    else
                        if((project.HelpFileFormat & HelpFileFormats.Markdown) != 0)
                            ViewBuiltHelpFile(project, 0);
                        else
                            if((project.HelpFileFormat & HelpFileFormats.Website) != 0)
                                Utility.OpenUrl(projectNode.StartWebServerInstance());
                            else
                            {
                                // This format opens a modal dialog box so we'll use it last if nothing else
                                // is selected.
                                var options = this.GeneralOptions;

                                if(options != null)
                                    using(LaunchMSHelpViewerDlg dlg = new LaunchMSHelpViewerDlg(project,
                                        options.MSHelpViewerPath))
                                    {
                                        dlg.ShowDialog();
                                    }
                            }
            }
        }
        //=====================================================================

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="node">The node that contains the properties to expose
        /// via the Property Browser.</param>
        public SandcastleBuilderProjectNodeProperties(SandcastleBuilderProjectNode node) : base(node)
        {
        }
        //=====================================================================

        /// <summary>
        /// Initializes a new instance of the Sandcastle Builder file node class.
        /// </summary>
        /// <param name="root">The root <see cref="SandcastleBuilderProjectNode"/>
        /// that contains this node.</param>
        /// <param name="element">The element that contains MSBuild properties.</param>
        public SandcastleBuilderFileNode(SandcastleBuilderProjectNode root, ProjectElement element) :
            base(root, element)
        {
        }
        //=====================================================================

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="node">The node that contains the properties to expose
        /// via the Property Browser.</param>
        public SandcastleBuilderProjectNodeProperties(SandcastleBuilderProjectNode node) : base(node)
        {
        }
        //=====================================================================

        /// <summary>
        /// Initializes a new instance of the Sandcastle Builder file node class.
        /// </summary>
        /// <param name="root">The root <see cref="SandcastleBuilderProjectNode"/>
        /// that contains this node.</param>
        /// <param name="element">The element that contains MSBuild properties.</param>
        public SandcastleBuilderFileNode(SandcastleBuilderProjectNode root, ProjectElement element) :
          base(root, element)
        {
        }