public BranchInformationViewModel(string branchName, HeuristicTreeInformation treeInformation)
        {
            BranchName = branchName;
            Model      = treeInformation;

            if (Model.BadEncodingFiles == null || Model.BadLineEndingFiles == null)
            {
                NeedsRepair           = Visibility.Collapsed;
                BadEncodingInfoHeader = "Unknown number of files incorrectly encoded";
                BadEndingsInfoHeader  = "Unknown number of files with incorrect line endings";
                return;
            }

            if (Model.TotalFilesExamined == 0 || Model.LineEndingType == LineEndingType.Unsure)
            {
                NeedsRepair           = Visibility.Collapsed;
                BadEncodingInfoHeader = "No text files found";
                BadEndingsInfoHeader  = "No text files found";
                return;
            }

            // > 5% mixed line endings or any UTF-16 files => needs repair
            bool shouldRepair = Model.BadEncodingFiles.Count > 0 ||
                                (double)Model.BadLineEndingFiles.Count / Model.TotalFilesExamined > 0.05;

            NeedsRepair = shouldRepair ? Visibility.Visible : Visibility.Collapsed;

            BadEncodingInfoHeader = Model.BadEncodingFiles.Count > 0 ?
                                    String.Format("{0:P2} of files are not in UTF-8 encoding", (double)Model.BadEncodingFiles.Count / Model.TotalFilesExamined) :
                                    "All of the files are correctly encoded";

            BadEndingsInfoHeader = Model.BadLineEndingFiles.Count > 0 ?
                                   String.Format("{0:P2} of files have a different line ending type than the repo", (double)Model.BadLineEndingFiles.Count / Model.TotalFilesExamined) :
                                   "All of the files have correct line endings";
        }
        public BranchInformationViewModel(string branchName, HeuristicTreeInformation treeInformation)
        {
            BranchName = branchName;
            Model = treeInformation;

            if (Model.BadEncodingFiles == null || Model.BadLineEndingFiles == null) {
                NeedsRepair = Visibility.Collapsed;
                BadEncodingInfoHeader = "Unknown number of files incorrectly encoded";
                BadEndingsInfoHeader = "Unknown number of files with incorrect line endings";
                return;
            }

            if (Model.TotalFilesExamined == 0 || Model.LineEndingType == LineEndingType.Unsure) {
                NeedsRepair = Visibility.Collapsed;
                BadEncodingInfoHeader = "No text files found";
                BadEndingsInfoHeader = "No text files found";
                return;
            }

            // > 5% mixed line endings or any UTF-16 files => needs repair
            bool shouldRepair = Model.BadEncodingFiles.Count > 0 ||
                (double) Model.BadLineEndingFiles.Count / Model.TotalFilesExamined > 0.05;

            NeedsRepair = shouldRepair ? Visibility.Visible : Visibility.Collapsed;

            BadEncodingInfoHeader = Model.BadEncodingFiles.Count > 0 ?
                String.Format("{0:P2} of files are not in UTF-8 encoding", (double)Model.BadEncodingFiles.Count / Model.TotalFilesExamined) :
                "All of the files are correctly encoded";

            BadEndingsInfoHeader = Model.BadLineEndingFiles.Count > 0 ?
                String.Format("{0:P2} of files have a different line ending type than the repo", (double)Model.BadLineEndingFiles.Count / Model.TotalFilesExamined) :
                "All of the files have correct line endings";
        }