/// <summary>
 /// Gets the dialog element location given the filename and the dialog id.
 /// </summary>
 static Location GetDialogElementLocation(string fileName, string id)
 {
     try {
         WorkbenchTextFileReader workbenchTextFileReader = new WorkbenchTextFileReader();
         using (TextReader reader = workbenchTextFileReader.Create(fileName)) {
             return(WixDocument.GetStartElementLocation(reader, "Dialog", id));
         }
     } catch (XmlException ex) {
         WixBindingService.ShowErrorInErrorList(fileName, ex);
     }
     return(Location.Empty);
 }
        /// <summary>
        /// Adds all the dialog ids from all the files in the project to the list view.
        /// </summary>
        /// <remarks>
        /// If an error occurs an error item is added to the list. The error
        /// list is only cleared the first time an error occurs
        /// since there may be multiple errors, one in each Wix file.
        /// Also we do not clear the error list unless we have an error
        /// so any previously added errors from a build, for example, are not
        /// cleared unless we have to.
        /// </remarks>
        void ShowDialogList()
        {
            // Make sure we do not leave any errors in the error list from a previous call.
            if (setupDialogListView.HasErrors)
            {
                WixBindingService.ClearErrorList();
            }

            setupDialogListView.Items.Clear();

            WixProject openWixProject = ProjectService.CurrentProject as WixProject;

            if (openWixProject != null)
            {
                bool clearedErrorList = false;
                foreach (FileProjectItem wixFile in openWixProject.WixFiles)
                {
                    if (File.Exists(wixFile.FileName))
                    {
                        try {
                            AddDialogListItems(wixFile.FileName);
                        } catch (XmlException ex) {
                            // Clear the error list the first time only.
                            if (!clearedErrorList)
                            {
                                clearedErrorList = true;
                                WixBindingService.ClearErrorList();
                            }
                            setupDialogListView.AddError(wixFile.FileName, ex);
                            WixBindingService.AddErrorToErrorList(wixFile.FileName, ex);
                        }
                    }
                }
                if (clearedErrorList)
                {
                    WixBindingService.ShowErrorList();
                }
            }
        }