/// <summary>
        /// Closes a specific file or the opened design and optionally updates the design tab control.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="updateDesignControl"></param>
        /// <returns></returns>
        public string CloseFile(string name = null, bool updateDesignControl = true)
        {
            // Get active design
            Design activeDesign = DesignController.GetActiveDesign();
            string designName   = name ?? activeDesign.FileName;
            Design design       = designName == null ? activeDesign : DesignController.GetDesign(designName);

            bool save = true;

            if (design.IsDirty)
            {
                DialogResult result = DialogBox.New("Confirm", $"{designName} has unsaved changes. Would you like to save these changes?", DialogType.YesNoCancel);
                if (result == DialogResult.No)
                {
                    save = false;
                }
                else if (result == DialogResult.Cancel)
                {
                    return(null);
                }
            }

            // Remove nav tree node of the design
            MainWindow.RemoveNavTreeNode(designName);
            // If design tab control needs to be updated
            if (updateDesignControl)
            {
                // Close design tab and design
                DisplayController.CloseDesignTab(designName);
            }
            // Close design
            DesignController.CloseDesign(designName, save);


            return(designName);
        }