tools/traceabilitytool/traceability_tool/mainform.cs (133 lines of code) (raw):

// Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; // Used for EventArgs class using System.ComponentModel; // Used for various event-related classes using System.Windows.Forms; // Used for Form class using System.IO; // Used for Directory class using System.Diagnostics; // Used for Process class namespace TraceabilityTool { // This class is responsible for displaying and processing input from the GUI elements of the main form. public partial class MainForm : Form { public static bool outputCSV = false; public static bool outputText = true; public static bool buildCheck = false; public MainForm() { InitializeComponent(); chkCSVOutput.Checked = outputCSV; txtRootPath.Text = Program.inputDir; txtOutputPath.Text = Program.outputDir; btnShowOutput.Enabled = Directory.Exists(txtOutputPath.Text); btnGenerateReport.Enabled = Directory.Exists(txtRootPath.Text) && Directory.Exists(txtOutputPath.Text); } private void btnGenerateReport_Click(object sender, EventArgs e) { if (!Directory.Exists(txtRootPath.Text)) { lblRootPath.Text = "Invalid path"; } else if (!Directory.Exists(txtOutputPath.Text)) { lblOutputPath.Text = "Invalid path"; } else { lblRootPath.Text = ""; lblOutputPath.Text = ""; btnGenerateReport.Enabled = false; backgroundWorker.RunWorkerAsync(); } } private void btnRootPath_Click(object sender, EventArgs e) { FolderBrowserDialog folderDlg = new FolderBrowserDialog(); if (folderDlg.ShowDialog() == DialogResult.OK) { txtRootPath.Text = folderDlg.SelectedPath; lblRootPath.Text = ""; btnShowOutput.Enabled = true; } else { return; } } private void btnOutputPath_Click(object sender, EventArgs e) { FolderBrowserDialog folderDlg = new FolderBrowserDialog(); if (folderDlg.ShowDialog() == DialogResult.OK) { txtOutputPath.Text = folderDlg.SelectedPath; lblOutputPath.Text = ""; } else { return; } } private void txtRootPath_TextChanged(object sender, EventArgs e) { if (!Directory.Exists(txtRootPath.Text)) { lblRootPath.Text = "Invalid path"; } else { lblRootPath.Text = ""; } btnGenerateReport.Enabled = (chkTextOutput.Checked || chkCSVOutput.Checked) && Directory.Exists(txtRootPath.Text) && Directory.Exists(txtOutputPath.Text); } private void txtOutputPath_TextChanged(object sender, EventArgs e) { if (!Directory.Exists(txtOutputPath.Text)) { lblOutputPath.Text = "Invalid path"; btnShowOutput.Enabled = false; } else { lblOutputPath.Text = ""; btnShowOutput.Enabled = true; } btnGenerateReport.Enabled = (chkTextOutput.Checked || chkCSVOutput.Checked) && Directory.Exists(txtRootPath.Text) && Directory.Exists(txtOutputPath.Text); } private void btnShowOutput_Click(object sender, EventArgs e) { Process.Start("explorer", txtOutputPath.Text); } private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { ReportProgress.Value = e.ProgressPercentage; } private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { ReportGenerator.GenerateReport(txtRootPath.Text, txtOutputPath.Text, null, this); } private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { btnGenerateReport.Enabled = true; } public void UpdateStatus(int progressPercentage) { backgroundWorker.ReportProgress(progressPercentage); } private void chkTextOutput_CheckedChanged(object sender, EventArgs e) { outputText = chkTextOutput.Checked; btnGenerateReport.Enabled = (chkTextOutput.Checked || chkCSVOutput.Checked) && Directory.Exists(txtRootPath.Text) && Directory.Exists(txtOutputPath.Text); } private void chkCSVOutput_CheckedChanged(object sender, EventArgs e) { outputCSV = chkCSVOutput.Checked; btnGenerateReport.Enabled = (chkTextOutput.Checked || chkCSVOutput.Checked) && Directory.Exists(txtRootPath.Text) && Directory.Exists(txtOutputPath.Text); } } }